diff --git a/.env.example b/.env.example
deleted file mode 100644
index 93fcbc16aa..0000000000
--- a/.env.example
+++ /dev/null
@@ -1,2 +0,0 @@
-APPLICATION_ID=
-API_KEY=
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 23fdc99025..ac32576f4b 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,8 +1,2 @@
# Default owners of the repository
-* @dyte-in/docs
-
-# Owners for JS, JSX, TS, and TSX files
-*.js @dyte-in/web
-*.jsx @dyte-in/web
-*.ts @dyte-in/web
-*.tsx @dyte-in/web
+* @BrickeVD
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 88b7f454f0..1daab6aab1 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -4,7 +4,7 @@ body:
- type: checkboxes
attributes:
label: Are you certain it's a bug?
- description: If you're uncertain, feel free to ping us at support@dyte.io
+ description: If you're uncertain, open a discussion instead of a bug report.
options:
- label: Yes, it looks like a bug
required: true
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 20171557f9..69fea2c529 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Question
- url: mailto:support@dyte.io
- about: Please ask and answer questions on our support email.
+ url: https://github.com/BrickeVD/OSPI-APIdocs/discussions
+ about: Please ask and answer questions here.
diff --git a/.github/workflows/docsearch.yml b/.github/workflows/docsearch.yml
deleted file mode 100644
index d42a708227..0000000000
--- a/.github/workflows/docsearch.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: Run algolia docsearch
-
-on:
- push:
- branches:
- - 'ci/docsearch'
- - main
- schedule:
- - cron: '0 12 * * 1'
-jobs:
- docsearch:
- runs-on: ubuntu-latest
- if: github.repository == 'dyte-io/docs'
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup environment
- run: |
- echo "APPLICATION_ID=$APPLICATION_ID" >> .env
- echo "API_KEY=$API_KEY" >> .env
- chmod +x ./bin/crawl.sh
- env:
- APPLICATION_ID: ${{ secrets.ALGOLIA_DOCSEARCH_APP_ID }}
- API_KEY: ${{ secrets.ALGOLIA_DOCSEARCH_API_KEY }}
-
- - name: Run docsearch
- continue-on-error: true
- run: |
- ./bin/crawl.sh
diff --git a/.prettierignore b/.prettierignore
index f8b0e4cf88..40aa93e81f 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,5 +1,4 @@
# autogenerated files
-docs/*ui-kit/reference/**/*.md
*.min.css
LICENSE
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0abbfb1f53..a1305688a7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,784 +1,10 @@
-# [1.20.0](https://github.com/dyte-in/docs/compare/v1.19.1...v1.20.0) (2022-07-26)
+# Changelog
-### Bug Fixes
+All notable changes to this documentation site are recorded here.
-- typo for react-sdk name ([a19881c](https://github.com/dyte-in/docs/commit/a19881c9140a8bb2353acf86373a739845144628))
-- **ui:** sections-menu design fixed for version dropdown ([e90f738](https://github.com/dyte-in/docs/commit/e90f73876303a8971f1371899915f96b1c57a36d))
+## [0.1.0] - 2026-08-20
-### Features
-
-- re-added posthog analytics ([e906aa1](https://github.com/dyte-in/docs/commit/e906aa11e27817ba2000f09088f769c68d7973aa))
-
-## [1.19.1](https://github.com/dyte-in/docs/compare/v1.19.0...v1.19.1) (2022-07-21)
-
-### Bug Fixes
-
-- broken links and link color in api ref ([adf4de7](https://github.com/dyte-in/docs/commit/adf4de718400cf114bdf7fce4269253b176feb5e))
-
-# [1.19.0](https://github.com/dyte-in/docs/compare/v1.18.0...v1.19.0) (2022-07-20)
-
-### Bug Fixes
-
-- added media permission error file ([c6cbf96](https://github.com/dyte-in/docs/commit/c6cbf961422e0dc6e61a8f17bfe817875aaed2b6))
-- added spacing ([6b91a70](https://github.com/dyte-in/docs/commit/6b91a70a02cb32443954b3bf4c95151ce6b5dd39))
-- cz-cli and commitizen ([1b35e51](https://github.com/dyte-in/docs/commit/1b35e512f84f58c605ebf614e224db9f262dcb57))
-- quote the branch name ([058cca6](https://github.com/dyte-in/docs/commit/058cca6b285f71e75ca8e56fef273dd9dda39e09))
-- remove web-core v0.2 ([#38](https://github.com/dyte-in/docs/issues/38)) ([55bb8c7](https://github.com/dyte-in/docs/commit/55bb8c77c387a8b6fa9dc40deb34faf23ad24fec))
-- removed `joined` from meta ([10d4b6f](https://github.com/dyte-in/docs/commit/10d4b6fe67b1f10e3e574df120fb34a5c22cf28f))
-- run action also on push ([ac5b3b4](https://github.com/dyte-in/docs/commit/ac5b3b448d9fcbbb4ebc4426e231d59cced7fdbc))
-- run cron ([a5d508d](https://github.com/dyte-in/docs/commit/a5d508dce4dc6e74b8f6d0dd48874a03f1ee5dc7))
-- sidebars updated, removed warnings ([#41](https://github.com/dyte-in/docs/issues/41)) ([951f1ab](https://github.com/dyte-in/docs/commit/951f1ab2484143536f0e41d6152cbefd0e10895b))
-
-### Features
-
-- **recording:** changed recording timeout value ([#43](https://github.com/dyte-in/docs/issues/43)) ([978b0b3](https://github.com/dyte-in/docs/commit/978b0b3962ab35159c2a08597207b8f4f456a030))
-- **webhooks:** Include outputFileName in UPLOADED recording status update webhook ([bf9d60d](https://github.com/dyte-in/docs/commit/bf9d60dc6b5f5e1fbd9bd192fae94ae19a0d39dd))
-
-# [1.18.0](https://github.com/dyte-in/docs/compare/v1.17.0...v1.18.0) (2022-07-20)
-
-### Features
-
-- add react, javascript sections to docsearch to crawl ([7ee93a6](https://github.com/dyte-in/docs/commit/7ee93a62b94f082c68af39bc023f8e83a0a53a8a))
-
-# [1.17.0](https://github.com/dyte-in/docs/compare/v1.16.0...v1.17.0) (2022-07-18)
-
-### Bug Fixes
-
-- remove redundant title in homepage ([80b827c](https://github.com/dyte-in/docs/commit/80b827c4bdfaeb1968fc4c703d4f0fcef8d931b7))
-
-### Features
-
-- search ([17424d5](https://github.com/dyte-in/docs/commit/17424d5a93196cbc1f4832b331bda3b36146ed80))
-- search crawl action ([00bc234](https://github.com/dyte-in/docs/commit/00bc2341afa6bca0a9532e6d784df761b494ae3a))
-
-# [1.16.0](https://github.com/dyte-in/docs/compare/v1.15.3...v1.16.0) (2022-07-18)
-
-### Bug Fixes
-
-- revert needed github workflows ([b6af542](https://github.com/dyte-in/docs/commit/b6af5422bf22244fd9f48314296e51e68079296c))
-
-### Features
-
-- new docs update ([f0499d1](https://github.com/dyte-in/docs/commit/f0499d116158d9d4fdac365c17f12abc59c67aa5))
-
-## [1.15.3](https://github.com/dyte-in/docs/compare/v1.15.2...v1.15.3) (2022-07-05)
-
-### Bug Fixes
-
-- trailing slash config and paths changed ([edc7915](https://github.com/dyte-in/docs/commit/edc79151f0450fdac63e372d11e2d25cef75dc00))
-
-## [1.15.2](https://github.com/dyte-in/docs/compare/v1.15.1...v1.15.2) (2022-07-04)
-
-### Bug Fixes
-
-- disable `trailingSlash` ([164825c](https://github.com/dyte-in/docs/commit/164825c65b01d99edc40be3f045c729de3aa21a8))
-
-## [1.15.1](https://github.com/dyte-in/docs/compare/v1.15.0...v1.15.1) (2022-06-27)
-
-### Bug Fixes
-
-- **content:** fix docs content ([22d2b18](https://github.com/dyte-in/docs/commit/22d2b188e58e1779e52d3f7ad59faaaef647a631))
-
-# [1.15.0](https://github.com/dyte-in/docs/compare/v1.14.3...v1.15.0) (2022-06-25)
-
-### Bug Fixes
-
-- all -> the ([ac7cffa](https://github.com/dyte-in/docs/commit/ac7cffadb3428399964038024a46e5035b5b7ca4))
-- participant docs ([f1a7344](https://github.com/dyte-in/docs/commit/f1a7344eed4645ff552065da1086538a63fedffc))
-- participants documentation ([715af4e](https://github.com/dyte-in/docs/commit/715af4e8b590f0a5f13e4ae9be60337766bde809))
-- recording properties ([99a9d21](https://github.com/dyte-in/docs/commit/99a9d21592e044e2ce4056ad2e435be1206e6bd8))
-- update participant docs ([30249d6](https://github.com/dyte-in/docs/commit/30249d606e65ddb6616b3ce542a299ca3145fed6))
-- update reference for react-native-core and react-web-core ([#31](https://github.com/dyte-in/docs/issues/31)) ([a651305](https://github.com/dyte-in/docs/commit/a651305636557e268c3af068ad948aa27107779f))
-- web-core docs ([#35](https://github.com/dyte-in/docs/issues/35)) ([28ca549](https://github.com/dyte-in/docs/commit/28ca5499e0e1f6aee7ba197afe5a6139a61d1646)), closes [#58](https://github.com/dyte-in/docs/issues/58) [#58](https://github.com/dyte-in/docs/issues/58)
-
-### Features
-
-- add workflow to reject pr if api-specs is updated ([39ba452](https://github.com/dyte-in/docs/commit/39ba4529d0ca3a3e28b934f48f706a9f72cb91a7))
-- release web-core 0.27.x ([4a4dcc3](https://github.com/dyte-in/docs/commit/4a4dcc36dabc9206a7231a5f64907bd177082a22))
-
-## [1.14.3](https://github.com/dyte-in/docs/compare/v1.14.2...v1.14.3) (2022-06-24)
-
-### Bug Fixes
-
-- replace Old SDKs from sidebar ([0d2bff0](https://github.com/dyte-in/docs/commit/0d2bff015eaf3fe172ce833e657f0283c1140368))
-
-## [1.14.2](https://github.com/dyte-in/docs/compare/v1.14.1...v1.14.2) (2022-06-24)
-
-### Bug Fixes
-
-- hide old SDKs from the navigation ([2633a15](https://github.com/dyte-in/docs/commit/2633a15a75bca2b3af22e375d3b8f291a78898c9))
-- linting ([bc372a8](https://github.com/dyte-in/docs/commit/bc372a86ada5fc95b290a74b2510bd79281cc287))
-- navbar icon links placement in mobile ([a3b25e9](https://github.com/dyte-in/docs/commit/a3b25e9f9a39ff9c33a1171717eb8fda92346047))
-
-## [1.14.1](https://github.com/dyte-in/docs/compare/v1.14.0...v1.14.1) (2022-06-23)
-
-### Bug Fixes
-
-- **src/theme/navbar/index.js:** fix the wrong validation for mobile sdks in navbar ([f0a98d6](https://github.com/dyte-in/docs/commit/f0a98d614b64632f3a1144af580159246c31dc42)), closes [#58](https://github.com/dyte-in/docs/issues/58)
-
-# [1.14.0](https://github.com/dyte-in/docs/compare/v1.13.1...v1.14.0) (2022-06-16)
-
-### Bug Fixes
-
-- patch-package for basic auth fields ([6f25082](https://github.com/dyte-in/docs/commit/6f2508283684b2141fdd52223dbf9c3539771199))
-
-### Features
-
-- update v2 api spec ([df6dd56](https://github.com/dyte-in/docs/commit/df6dd56832adf6f91f2b1e0001ce2c090a262f8c))
-
-## [1.13.1](https://github.com/dyte-in/docs/compare/v1.13.0...v1.13.1) (2022-06-15)
-
-### Bug Fixes
-
-- patch-package for Basic Auth Description ([a525172](https://github.com/dyte-in/docs/commit/a5251722ccdc6d543dadac72e56f8b4e49f452fa))
-
-# [1.13.0](https://github.com/dyte-in/docs/compare/v1.12.2...v1.13.0) (2022-06-13)
-
-### Bug Fixes
-
-- remove unused function ([b14a696](https://github.com/dyte-in/docs/commit/b14a6960c8d1acb63d4cdfe18420a554b75c1ae3))
-- update web-core docs to v0.26.0 ([6cb5952](https://github.com/dyte-in/docs/commit/6cb59528267358af8281bc3c43bcec75cb31643e))
-- update web-core docs to v0.26.0 ([bf924a4](https://github.com/dyte-in/docs/commit/bf924a47141fe58ab3cc1389054fc3a1f5353349))
-
-### Features
-
-- added docs for version 0.25.x of web-core ([b2479f3](https://github.com/dyte-in/docs/commit/b2479f388499bd898ba63d5f71c74fa870419b80))
-
-## [1.12.2](https://github.com/dyte-in/docs/compare/v1.12.1...v1.12.2) (2022-06-09)
-
-### Bug Fixes
-
-- update reference for react-native-core and react-web-core ([3316430](https://github.com/dyte-in/docs/commit/331643034d7935c838f66ca062e82bcd1e701ce5))
-
-## [1.12.1](https://github.com/dyte-in/docs/compare/v1.12.0...v1.12.1) (2022-06-09)
-
-### Bug Fixes
-
-- created versioned docs for 0.24.x ([f39e447](https://github.com/dyte-in/docs/commit/f39e4474ff76e5086bca2f422f18e51497317ab1))
-- **web-core:** update web-core api reference ([5766ac5](https://github.com/dyte-in/docs/commit/5766ac5413e845c14b8bd0bc0e1c4019ebddc157))
-
-# [1.12.0](https://github.com/dyte-in/docs/compare/v1.11.0...v1.12.0) (2022-06-09)
-
-### Bug Fixes
-
-- add button and small fixes ([69a81c2](https://github.com/dyte-in/docs/commit/69a81c20fd01fb54c9c26d8ec51dc6dec0a4d561))
-- added chat functions ([36961ee](https://github.com/dyte-in/docs/commit/36961eef83076d94ef48cf5534473a1ccfe00857))
-- **build:** add dummy versions to fix build ([286e19f](https://github.com/dyte-in/docs/commit/286e19f15c90b9e5c2163fe0a22a44912b788849))
-- cdn links ([87f2e10](https://github.com/dyte-in/docs/commit/87f2e1068404eefb2b4b8e57dba275cd4181ff52))
-- colors in new web-sdk docs ([ee7bad2](https://github.com/dyte-in/docs/commit/ee7bad246fbb9b18ed0b2ccd339e53a5e5acba01))
-- **constants:** added `,` to remove lint errors ([16d8d70](https://github.com/dyte-in/docs/commit/16d8d70cfac699cf4609dacd76691a691513a67b))
-- docs for local user and participants ([#21](https://github.com/dyte-in/docs/issues/21)) ([1a3c951](https://github.com/dyte-in/docs/commit/1a3c951a5eadbb3170d983e02d75c24c7250ce2c))
-- fetch latest version by default ([d06e09e](https://github.com/dyte-in/docs/commit/d06e09e9d44faa4cfe7bb9f8b954c3da1f97d252))
-- image ([91eaff1](https://github.com/dyte-in/docs/commit/91eaff19a34ca7cbf6965b6098c06eb76eb91fd4))
-- installation ([8ef781f](https://github.com/dyte-in/docs/commit/8ef781fdc729fa0021be9cfb6fbdbca1a5b61529))
-- installation ([d26c59a](https://github.com/dyte-in/docs/commit/d26c59af9b61df13a07314f864f0f951c31caa3a))
-- **installation:** added installation doc ([0dfde20](https://github.com/dyte-in/docs/commit/0dfde207fbf73d67c00d482f495a55d5d71303e7))
-- **localUser:** add documentation for local user ([01684d9](https://github.com/dyte-in/docs/commit/01684d952a4dc9c84834cc7d76213625ec12f518))
-- **localUserDoc:** add documentation for local user ([763b0dd](https://github.com/dyte-in/docs/commit/763b0ddfbf062b05e8952bba67fffcfb2bc98b15))
-- merge upstream ([#30](https://github.com/dyte-in/docs/issues/30)) ([886e36c](https://github.com/dyte-in/docs/commit/886e36c37976fc6ba855e231aa9fdb4afb770098))
-- **newweb:** dual switcher and styling ([de7970a](https://github.com/dyte-in/docs/commit/de7970a2e2161390991b62f34be358da06e75300))
-- quickstart before installation ([7563ddc](https://github.com/dyte-in/docs/commit/7563ddc2129ba821cd7fbfde20817123b5f4601e))
-- redirection ([1e1007a](https://github.com/dyte-in/docs/commit/1e1007a8f6bce4c65a7cc9cccaebefbe82ef5202))
-- remove extra blank line from polls introduction ([1b52f8e](https://github.com/dyte-in/docs/commit/1b52f8e2ad7cd62ae8cef6800ba16ff63454a120))
-- remove random author ([5149bef](https://github.com/dyte-in/docs/commit/5149befeee10ac6b4ea44e3ed6fb0d8d1bc8888b))
-- rename react packages ([f3ec2d1](https://github.com/dyte-in/docs/commit/f3ec2d1795f13b742ba97e6b7245aa09d588f2af))
-- replace atomic design illustration ([3c8f595](https://github.com/dyte-in/docs/commit/3c8f595147417825da7db6aefd54d95d5c06373b))
-- **section-switcher:** update UI and added new pages ([6c08f44](https://github.com/dyte-in/docs/commit/6c08f4411479cc6978ee62ed4881eb8d7e40d7fc))
-- **selector:** removed react-web-core from selector ([b979376](https://github.com/dyte-in/docs/commit/b97937651079af1bc622304977222c3440b0c7b5))
-- **selector:** removed react-web-core from selector ([fe56a96](https://github.com/dyte-in/docs/commit/fe56a9628f00933768b1d00fe639d9844c048bc2))
-- setup sidebar ordering ([0d10fd1](https://github.com/dyte-in/docs/commit/0d10fd15814477e8e377f784d6bad53bb531d4cd))
-- ui-kit installation ([e522e34](https://github.com/dyte-in/docs/commit/e522e34c7dca0430753feee69e8eaa472b937c21))
-- ui-kit quickstart ([b3e5089](https://github.com/dyte-in/docs/commit/b3e5089014495a00535149f52dd686e5bed07aba))
-- ui-kit show usage examples passing peer or meeting objects ([34ec4d0](https://github.com/dyte-in/docs/commit/34ec4d08d356849902068c89b3b97e3ffe3f24e4))
-- update content for poll functions and fix typos ([473b11f](https://github.com/dyte-in/docs/commit/473b11fd1675e25bd12f8103b54368d11515efcb))
-- update docs from web-core ([281609b](https://github.com/dyte-in/docs/commit/281609b6f867b92f81296a6b2a3aa94a45726ad3))
-- update docs to latest release ([327029d](https://github.com/dyte-in/docs/commit/327029db7bee9c78cbbdd84a0ad690db181e2311))
-- update reference in react-web-core ([be83745](https://github.com/dyte-in/docs/commit/be837458ab590d20c2ac629671bae31f842676ee))
-- update ui-kit-react and ui-kit-angular names ([1c6ecfe](https://github.com/dyte-in/docs/commit/1c6ecfefbacd055767eb5167f2782eada72c770a))
-- update web-core reference ([57a2ffd](https://github.com/dyte-in/docs/commit/57a2ffd30991127d55e838094170c4f20ce19b8c))
-- updated web-core reference ([27313ce](https://github.com/dyte-in/docs/commit/27313ce29cebd86f8f4de430ebcf3cab2ddb968b))
-- updated web-core reference ([#13](https://github.com/dyte-in/docs/issues/13)) ([666f4a7](https://github.com/dyte-in/docs/commit/666f4a7dce5297e01b082fb8c49196942e7b334c))
-- use BrowserOnly in Quickstart component ([204811b](https://github.com/dyte-in/docs/commit/204811bbd98b76a176828709a033faf4f7054e01))
-- use local packages for ui-kit and web-core ([5969e5f](https://github.com/dyte-in/docs/commit/5969e5f57885b09283493e1cb28f4eeba8de5af2))
-- warning in SectionSwitchHandler ([4c6770a](https://github.com/dyte-in/docs/commit/4c6770ac1c6ae0ffda9a65b0686e2f273e936ef1))
-- **web-core:** participants ([a8e5142](https://github.com/dyte-in/docs/commit/a8e5142f726daccf1b356ed0a93d4b7326e0c06e))
-- **web-core:** update content for polls ([1b3ade1](https://github.com/dyte-in/docs/commit/1b3ade1132668345e484d2c41a7dfa3a130f282e))
-
-### Features
-
-- [WIP] add web-core docs ([872e0b7](https://github.com/dyte-in/docs/commit/872e0b70aa745892970070a2b159bf0920169794))
-- add about page ([d491f84](https://github.com/dyte-in/docs/commit/d491f84b3e4caacc6cd61d1a4d4090243a08145d))
-- add angular quickstart ([a529453](https://github.com/dyte-in/docs/commit/a52945342660e69342843202e26321a2c916cd52))
-- add react native docs ([9a21e8b](https://github.com/dyte-in/docs/commit/9a21e8b23e405b04417172067c9046106193f3a0))
-- autogenerate api docs for web-core ([83a7697](https://github.com/dyte-in/docs/commit/83a76972b6db76bcef1105988000eaadada572c4))
-- copied reference to react-web-core ([7522200](https://github.com/dyte-in/docs/commit/75222002aae08c5aa677647c6060ef456c9ce850))
-- disable angular ui ([716478a](https://github.com/dyte-in/docs/commit/716478a14e5c351ddd8bdf731811da6f483a7543))
-- improve react ui kit docs ([e609b1c](https://github.com/dyte-in/docs/commit/e609b1cd6c22aa17b36ff44c057c95387a5e2927))
-- mock peers in grid ([afe2c5b](https://github.com/dyte-in/docs/commit/afe2c5bd8dda1cbe22d07456d6457c6d8264c994))
-- **polls:** add docs for polls ([ce4e9fb](https://github.com/dyte-in/docs/commit/ce4e9fb3ca6d7987e05222ce687aea7690750f98))
-- **quickstart:** added quickstart page and floating button ([408e81e](https://github.com/dyte-in/docs/commit/408e81ec1f294102d25a58d93aa7d6c92b307df3))
-- react ui kit docs, general fixes ([66ade31](https://github.com/dyte-in/docs/commit/66ade31967ce6b97dd7a5ec9e8a7127d0994a8bd))
-- refactored code, added section handler and sections ([2255383](https://github.com/dyte-in/docs/commit/2255383adcf3842cbbad7d8ecc0aea44a157aa87))
-- **switcher:** rename switcher header, disable selector in core SDK ([b83c32a](https://github.com/dyte-in/docs/commit/b83c32ae531476d3b0eae69964a863a18e02bdbd))
-- **ui-kit:** add ComponentsGrid ([c96c4c9](https://github.com/dyte-in/docs/commit/c96c4c9e09e7f7f8eaaa5ea93aea8a72ef95d1d5))
-- **ui-kit:** restructure docs, add placeholders ([3ed7e8e](https://github.com/dyte-in/docs/commit/3ed7e8e4d1dcd4184910aeecfbc48e531f8cb7e4))
-- **uikit:** add component preview ([dbdc2ea](https://github.com/dyte-in/docs/commit/dbdc2ea6dffd728d4096ae3a9ca6f95ae44a0970))
-- **uikit:** add components page ([8b4dcfd](https://github.com/dyte-in/docs/commit/8b4dcfd3002b936a3fe283acac44e8501e935a49))
-- **uikit:** add preview in quickstart ([845e572](https://github.com/dyte-in/docs/commit/845e5728fb773e84cb9658824d5eec4ae3cd9b69))
-- update docs script ([45b6a8b](https://github.com/dyte-in/docs/commit/45b6a8bdf5ee183088e630c7129d87dbff76c346))
-- update react-web-core API ([47a94ec](https://github.com/dyte-in/docs/commit/47a94ec5c7c11d81e82a84e5798a5ad481467485))
-- **versionedDoc:** add versioned documentation for local user ([64fd05d](https://github.com/dyte-in/docs/commit/64fd05d5533a38c94e23638cb7c822e41e22e4cd))
-
-# [1.11.0](https://github.com/dyte-in/docs/compare/v1.10.4...v1.11.0) (2022-06-09)
-
-### Features
-
-- new SDK docs ([#50](https://github.com/dyte-in/docs/issues/50)) ([1aeacd8](https://github.com/dyte-in/docs/commit/1aeacd8536a1a16a1602dbbc0572c4a5b42ebf4e))
-
-## [1.10.4](https://github.com/dyte-in/docs/compare/v1.10.3...v1.10.4) (2022-05-27)
-
-### Bug Fixes
-
-- **api/v1:** document validation error backend response code as 422 according to changes in backend ([b5162c3](https://github.com/dyte-in/docs/commit/b5162c3cd59f2c30d88b35fefba553e7088b1bd8))
-
-## [1.10.3](https://github.com/dyte-in/docs/compare/v1.10.2...v1.10.3) (2022-05-13)
-
-### Bug Fixes
-
-- virtual background docs ([2762f69](https://github.com/dyte-in/docs/commit/2762f6946aba282c1de2df9cfbaf9f94f49333e7))
-
-## [1.10.2](https://github.com/dyte-in/docs/compare/v1.10.1...v1.10.2) (2022-05-07)
-
-### Bug Fixes
-
-- **livestreaming:** clarify that livestreaming only works for h.264 codec ([d8df6a3](https://github.com/dyte-in/docs/commit/d8df6a3637310062a14fa45eb7115d0c9f67a1e4))
-
-## [1.10.1](https://github.com/dyte-in/docs/compare/v1.10.0...v1.10.1) (2022-05-04)
-
-### Bug Fixes
-
-- **cli:** fix installation instructions for yarn ([#44](https://github.com/dyte-in/docs/issues/44)) ([de0c22a](https://github.com/dyte-in/docs/commit/de0c22a41d924fcbc2f852a31b0488d39674ba25))
-
-# [1.10.0](https://github.com/dyte-in/docs/compare/v1.9.0...v1.10.0) (2022-05-04)
-
-### Features
-
-- **cli:** add a CLI section to the docs ([#43](https://github.com/dyte-in/docs/issues/43)) ([f261d9e](https://github.com/dyte-in/docs/commit/f261d9e5d6d484fa4bf005cae7d490d12bb40677))
-
-# [1.9.0](https://github.com/dyte-in/docs/compare/v1.8.0...v1.9.0) (2022-05-04)
-
-### Features
-
-- **cli:** add a CLI section to the docs ([#42](https://github.com/dyte-in/docs/issues/42)) ([e1a9b50](https://github.com/dyte-in/docs/commit/e1a9b506a26794c1a21867d3067f8505de03344a))
-
-# [1.8.0](https://github.com/dyte-in/docs/compare/v1.7.1...v1.8.0) (2022-05-01)
-
-### Features
-
-- **meetings:** add recordOnStart to create meeting route ([ae41208](https://github.com/dyte-in/docs/commit/ae412081a35d04d5ff88abc044231bd8238e7317))
-
-## [1.7.1](https://github.com/dyte-in/docs/compare/v1.7.0...v1.7.1) (2022-04-07)
-
-### Bug Fixes
-
-- **api:** button placement with announcement ([6b443d6](https://github.com/dyte-in/docs/commit/6b443d6902b57663dfda263e7e08b215bd1c480b))
-
-# [1.7.0](https://github.com/dyte-in/docs/compare/v1.6.2...v1.7.0) (2022-04-07)
-
-### Features
-
-- add announcement for upcoming sdks ([b9b4ebf](https://github.com/dyte-in/docs/commit/b9b4ebf6fd879e47a887f63d6cfca95fa6891950))
-
-## [1.6.2](https://github.com/dyte-in/docs/compare/v1.6.1...v1.6.2) (2022-04-06)
-
-### Bug Fixes
-
-- **flutter:** fixing variable decls, wordings, type, etc ([0dbef27](https://github.com/dyte-in/docs/commit/0dbef27526341032ac8096ca56e5cb527ee3340e))
-
-## [1.6.1](https://github.com/dyte-in/docs/compare/v1.6.0...v1.6.1) (2022-04-06)
-
-### Bug Fixes
-
-- **plugins:** waitlist Documentation ([#34](https://github.com/dyte-in/docs/issues/34)) ([6f00799](https://github.com/dyte-in/docs/commit/6f0079963584f5e948100c5087cde45cd9fbe28e))
-
-# [1.6.0](https://github.com/dyte-in/docs/compare/v1.5.0...v1.6.0) (2022-04-06)
-
-### Bug Fixes
-
-- typo ([0d27263](https://github.com/dyte-in/docs/commit/0d27263f195406f42ad7d3e5ea03d370c12204f3))
-- **web:** hide outdated webinar information ([b63b03a](https://github.com/dyte-in/docs/commit/b63b03aacf04a1ec5c27307ca2c70cc33fb6980e))
-- **web:** put button addition behind meetinJoined event ([2befc7d](https://github.com/dyte-in/docs/commit/2befc7df0298c736527e107bab05425cc2bc30a7))
-
-### Features
-
-- update web versions ([b01c3a8](https://github.com/dyte-in/docs/commit/b01c3a84406d4ce87026d881d7a19f3996f96a68))
-
-# [1.5.0](https://github.com/dyte-in/docs/compare/v1.4.2...v1.5.0) (2022-04-06)
-
-### Bug Fixes
-
-- **api:** show current version in dropdown ([44f982e](https://github.com/dyte-in/docs/commit/44f982e331a91d2824ec800142614821da9ab8e7))
-
-### Features
-
-- add postman collection button for v1 api ([5d62c5d](https://github.com/dyte-in/docs/commit/5d62c5de37541e6cc26a574fe75d5f72a9a1bb6d))
-
-## [1.4.2](https://github.com/dyte-in/docs/compare/v1.4.1...v1.4.2) (2022-04-06)
-
-### Bug Fixes
-
-- **introduction:** Cleanup introduction. ([c33e322](https://github.com/dyte-in/docs/commit/c33e3225efd3360ec760e872b0acd44750d78e35))
-
-## [1.4.1](https://github.com/dyte-in/docs/compare/v1.4.0...v1.4.1) (2022-04-06)
-
-### Bug Fixes
-
-- margin for headings in markdown ([7ccf408](https://github.com/dyte-in/docs/commit/7ccf408f877c28891a3cf9f0e80a507754bfb3d3))
-
-# [1.4.0](https://github.com/dyte-in/docs/compare/v1.3.3...v1.4.0) (2022-03-28)
-
-### Features
-
-- **static:** update openapi spec for latest release ([#26](https://github.com/dyte-in/docs/issues/26)) ([2596086](https://github.com/dyte-in/docs/commit/259608649461709f4492063dbcea5f9ca3eca078))
-
-## [1.3.3](https://github.com/dyte-in/docs/compare/v1.3.2...v1.3.3) (2022-03-17)
-
-### Bug Fixes
-
-- add default value for totalMinutes to fix stoplight overflow ([ea935ef](https://github.com/dyte-in/docs/commit/ea935ef31fb7510352768e47dce473b708365a05))
-
-## [1.3.2](https://github.com/dyte-in/docs/compare/v1.3.1...v1.3.2) (2022-03-16)
-
-### Bug Fixes
-
-- **api:** add default value to all stats api ([a0fc6da](https://github.com/dyte-in/docs/commit/a0fc6da476ccbc8006605139fad808c798ece4ad))
-
-## [1.3.1](https://github.com/dyte-in/docs/compare/v1.3.0...v1.3.1) (2022-03-16)
-
-### Bug Fixes
-
-- **v1:** document totalMinutes as floating point type instead of integer ([4b06bc2](https://github.com/dyte-in/docs/commit/4b06bc2e6b96ae6b3c6431521e33961cabf92f49))
-- **v1:** revert unrelated changes to upstream ([a76a311](https://github.com/dyte-in/docs/commit/a76a3118cbdfb85245e5a3529f79f9623bc3b2a8))
-
-# [1.3.0](https://github.com/dyte-in/docs/compare/v1.2.1...v1.3.0) (2022-03-12)
-
-### Features
-
-- **recording:** Add maxSeconds param in startRecording ([04b0103](https://github.com/dyte-in/docs/commit/04b010353ff87ec3699feec21aa357d626054c2f))
-
-## [1.2.1](https://github.com/dyte-in/docs/compare/v1.2.0...v1.2.1) (2022-03-10)
-
-### Bug Fixes
-
-- restore API spec for livestreams and active-sessions ([#17](https://github.com/dyte-in/docs/issues/17)) ([ced4b89](https://github.com/dyte-in/docs/commit/ced4b897cb11f680fb73c85f3b9443bf85beee8a))
-
-# [1.2.0](https://github.com/dyte-in/docs/compare/v1.1.4...v1.2.0) (2022-03-07)
-
-### Features
-
-- show `edit this page` and last edited metadata ([c96eb0e](https://github.com/dyte-in/docs/commit/c96eb0ee6f49ed7766529f1a7f06a5caf023ac12))
-
-## [1.1.4](https://github.com/dyte-in/docs/compare/v1.1.3...v1.1.4) (2022-03-06)
-
-### Bug Fixes
-
-- **codeowners:** updated team names in the repository ([314653a](https://github.com/dyte-in/docs/commit/314653a8eb432af5e0b1ddb67bbd19fffd62424d))
-
-## [1.1.3](https://github.com/dyte-in/docs/compare/v1.1.2...v1.1.3) (2022-02-25)
-
-### Bug Fixes
-
-- **docsearch:** continue on error ([dc2bd9f](https://github.com/dyte-in/docs/commit/dc2bd9f3332b9bf760d2f23071d570c1c9702014))
-- **docsearch:** suppress error for status code 3 ([d86cf78](https://github.com/dyte-in/docs/commit/d86cf78a756a1b5ea54da97e2e1dd9930f8649e7))
-
-## [1.1.2](https://github.com/dyte-in/docs/compare/v1.1.1...v1.1.2) (2022-02-25)
-
-### Bug Fixes
-
-- **crawl:** -it option fails in CI ([e5a9cc8](https://github.com/dyte-in/docs/commit/e5a9cc87585202e8e4200c7d9bf5fa891f998f16))
-
-## [1.1.1](https://github.com/dyte-in/docs/compare/v1.1.0...v1.1.1) (2022-02-25)
-
-### Bug Fixes
-
-- **docsearch:** added environment variables for docsearch ([54c6bc1](https://github.com/dyte-in/docs/commit/54c6bc1049720c239fac9a83ac158116d6ce8cf7))
-- **docsearch:** rename environment variables to avoid clashes ([28ae6b7](https://github.com/dyte-in/docs/commit/28ae6b77aa74b969277159a2f32cbac5bbd5772c))
-
-# [1.1.0](https://github.com/dyte-in/docs/compare/v1.0.2...v1.1.0) (2022-02-24)
-
-### Features
-
-- add usage docs in README ([aa4696a](https://github.com/dyte-in/docs/commit/aa4696ae3a749c31d377e700d620e356deac76b2))
-
-## [1.0.2](https://github.com/dyte-in/docs/compare/v1.0.1...v1.0.2) (2022-02-23)
-
-### Bug Fixes
-
-- lint issues in GridLink ([0696524](https://github.com/dyte-in/docs/commit/0696524d4c04afc83110ce277f1281f92ac7a91f))
-
-## [1.0.1](https://github.com/dyte-in/docs/compare/v1.0.0...v1.0.1) (2022-02-23)
-
-### Bug Fixes
-
-- **release:** trigger new release ([ea57abe](https://github.com/dyte-in/docs/commit/ea57abe8a5a63cb31a3cc19f88c6680c2ea692ed))
-
-# 1.0.0 (2022-02-23)
-
-### Bug Fixes
-
-- add dyte-logo in footer, navbar enhancements ([33e4541](https://github.com/dyte-in/docs/commit/33e4541d778cbed3e33b93f0e8550d649de52080))
-- add dyte.io link to footer logo ([94c02d6](https://github.com/dyte-in/docs/commit/94c02d69c7794910685fe18fb70eac470dc67dc0))
-- **api:** glitch when navigating to /api/ from navbar ([dd891c7](https://github.com/dyte-in/docs/commit/dd891c75d734f200752c4101a405c8255fdbe092))
-- **api:** remove url so support link points to email ([e97aeed](https://github.com/dyte-in/docs/commit/e97aeed892f46ff99fbf59a2238fe09996d4704b))
-- **api:** response codes starting with `4` have a red color ([0be9e00](https://github.com/dyte-in/docs/commit/0be9e00ff44b351be2f918eba4d104619f8384be))
-- **api:** update api reference page design ([ebec7e4](https://github.com/dyte-in/docs/commit/ebec7e453ba03981d12b65373f79733b77d94da0))
-- **api:** updated responses design with color indicators ([e832637](https://github.com/dyte-in/docs/commit/e832637e82dc65338e44812158aa3d6c29c1d681))
-- broken links by typo ([598b0ed](https://github.com/dyte-in/docs/commit/598b0ed1d68186ce1aee01c340521d0a00c43c28))
-- build errors due to ssr for /api ([ea033ea](https://github.com/dyte-in/docs/commit/ea033eaa3d2490791045870d7a292a336b7672e1))
-- build fail for /api ([c05c3ee](https://github.com/dyte-in/docs/commit/c05c3ee947df1feaef114ec09552b35bdbba276e))
-- changed sidebars file for /docs ([2618c70](https://github.com/dyte-in/docs/commit/2618c705489cdce98db3dc08a965a17af0d85809))
-- compress pngs ([fcd60e0](https://github.com/dyte-in/docs/commit/fcd60e04c1264e4e5c8b4efa79c3aa7e42dd82fd))
-- context switch lag - now using history.push ([56f23da](https://github.com/dyte-in/docs/commit/56f23da1c71e6b8b6cd19d2160ea6af028deab71))
-- context switcher - invalid docId ([ebbfc30](https://github.com/dyte-in/docs/commit/ebbfc3096d96e7a9e159d76cff8cfc6ea2e3a35d))
-- contextswitcher glitch in /docs fixed ([0e659f2](https://github.com/dyte-in/docs/commit/0e659f2efd98d0048686cb80652909d0c3bdc28e))
-- **crawl:** add `guides` section to crawler ([9eb1ac6](https://github.com/dyte-in/docs/commit/9eb1ac65e233cdf9da40c03eced00701ddc80d26))
-- **deploy:** downgrade elements and changed buffer fallback ([4b02f75](https://github.com/dyte-in/docs/commit/4b02f75c01df072887c0eb2a462f2fa59370a204))
-- **docs:** add `webinar` doc in guides sidebar ([24e6ae0](https://github.com/dyte-in/docs/commit/24e6ae03aa0fff17d0099327a3a6c5284e83acf7))
-- docsearch final config, updated /api/ path ([e8f730d](https://github.com/dyte-in/docs/commit/e8f730df196ac974ebaeeebbdbb078c090b33afe))
-- **docs:** home description meta tag set properly now ([d9c76f9](https://github.com/dyte-in/docs/commit/d9c76f98b592d06f04042928ed706eb81648d9c1))
-- **docs:** sidebar parity for `docs` and `guides` ([2b9623f](https://github.com/dyte-in/docs/commit/2b9623f96a20f5aa68d788553fb2a9527eae64e9))
-- **docs:** update how-dyte-works.png image 🚀 ([c9cfd6c](https://github.com/dyte-in/docs/commit/c9cfd6c6d7ec39cf05aa1404ef8e98fea9394cc9))
-- **docs:** update meeting-ui images for mobile, add preview image ([8c3c6d3](https://github.com/dyte-in/docs/commit/8c3c6d3b3646e1ac3bc2be1885106fe041a587ad))
-- **docs:** update mobile meeting-ui diagram ([cf12279](https://github.com/dyte-in/docs/commit/cf1227957c526a1287cf1e88430eadadf44ae82b))
-- **docs:** updated images and fixed metadata content ([d7bd790](https://github.com/dyte-in/docs/commit/d7bd790d4c438763eb811ba65c283c8a42363600))
-- enhanced ContextSwitcher UI, code refactored ([d5ab7b3](https://github.com/dyte-in/docs/commit/d5ab7b3913d4dc53b33f63a0476245ecb118fd18))
-- **flutter:** meeting mdx table methods intendation ([83be068](https://github.com/dyte-in/docs/commit/83be06823cf6dd0dcfad04bbf22743c83ae1f8bd))
-- **flutter:** meeting.mdx methods intendation ([3853f43](https://github.com/dyte-in/docs/commit/3853f43cb51529d7d140c7f3699dc54e273f99d3))
-- **footer:** updated footer text and replaced form with sign up link ([e0f299f](https://github.com/dyte-in/docs/commit/e0f299fb8c1ac63485669c923d7192c04c42688b))
-- **link:** update demo app link to `app.dyte.in` ([24a85f7](https://github.com/dyte-in/docs/commit/24a85f7c45ca0684db55756ef15330fc095313cf))
-- lint issues ([e9f9284](https://github.com/dyte-in/docs/commit/e9f928473afe3ca1de3ea68ef2c7217341d0c75f))
-- make docsearch detect subsections with selectors ([ac55d1d](https://github.com/dyte-in/docs/commit/ac55d1df6ea2053a4a329f2d5fc6b4221ee64dba))
-- make sidebars not collapsible in react, flutter ([2729ddb](https://github.com/dyte-in/docs/commit/2729ddb6f57ea3640463882c8275f31e225f0101))
-- mobile ContextSwitcher uses tailwindcss, refactor ([f665dcf](https://github.com/dyte-in/docs/commit/f665dcfeeaae99e8ece033309895f2d93cbbcc8e))
-- now working with older node and with yarn ([36e71f2](https://github.com/dyte-in/docs/commit/36e71f22a51897fe3d054260a784596bfabd2f20))
-- proper links to sample apps ([11cc9d6](https://github.com/dyte-in/docs/commit/11cc9d6ca26436b436418fba227daa3a9d0c6d1a))
-- redesigned navbar, icons changed, markdown sample added ([52a1427](https://github.com/dyte-in/docs/commit/52a14273b40e6c048ed54125dc0533ee4ec2cbb0))
-- **release:** trigger new release ([031ea20](https://github.com/dyte-in/docs/commit/031ea203e7f693d310bfe9471ff0baee334375c3))
-- remove basePath as warning is given for invalid basePath ([9eef8a7](https://github.com/dyte-in/docs/commit/9eef8a7590a2a259284f3077969ceedb58d59fcb))
-- remove broken link in react-native ([1255656](https://github.com/dyte-in/docs/commit/1255656aed62347529128b8db1fd2479e48a98bc))
-- remove dummy blog posts and add test post ([68017da](https://github.com/dyte-in/docs/commit/68017dac2854545933214712f54c3aa005bdb2a4))
-- remove navbar lv0 items, update docsearch config ([89e05e2](https://github.com/dyte-in/docs/commit/89e05e2c2fccf8ae61a11ac30a328448874cbcf0))
-- remove yarn.lock ([b97a1dc](https://github.com/dyte-in/docs/commit/b97a1dc4b9ea2d8a6046e56d541ff188dc4df694))
-- removed `next` in prod build, updated docsearch creds ([01c3b43](https://github.com/dyte-in/docs/commit/01c3b430d8ae00db192d0b0c795603fdd71f3b7b))
-- restructure navbar links ([4a945f7](https://github.com/dyte-in/docs/commit/4a945f77b97ac1f2a2d6dabf08f9a2aee7b78ce4))
-- sidebar now sticks again ([ca7423d](https://github.com/dyte-in/docs/commit/ca7423df6633010d14f91992ab813031af1d3585))
-- **stoplight:** remove font size, update package ([2c11e2f](https://github.com/dyte-in/docs/commit/2c11e2f89f4710916b29c1c8311ce42b0ba7c668))
-- tailwindcss resets removed to fix typography ([140d187](https://github.com/dyte-in/docs/commit/140d187ff0cdf13d16372d718bb6cf7f6957c51e))
-- theme switcher position fixed, added dev portal link ([9e7ac72](https://github.com/dyte-in/docs/commit/9e7ac72f03f2adb323292d695100e6446ac29a89))
-- typo ([b3204e1](https://github.com/dyte-in/docs/commit/b3204e19350ecfa924809e153e231ee834ff61db))
-- typo `shownn`, embed code typo ([0ebd057](https://github.com/dyte-in/docs/commit/0ebd057d79bb553b40b8104c2dda1ff40481d0b4))
-- typo in android docs ([cc7883d](https://github.com/dyte-in/docs/commit/cc7883dfa34b088aa764fe45a4c2b1962bbe3512))
-- **ui:** .string color in textrequestbody was not visible ([8f85da2](https://github.com/dyte-in/docs/commit/8f85da28ee634c45ebc3e523e70d44841b52556d))
-- **ui:** add react native icon in getstarted section ([e2854f3](https://github.com/dyte-in/docs/commit/e2854f34909592dc1a594c186da898010e5839f8))
-- **ui:** added hashchange detection in introduction page ([33de9ae](https://github.com/dyte-in/docs/commit/33de9ae85bb8b0f73188916224ad8159affe0bcf))
-- **ui:** added primary-100 for lighter primary shade (navbar) ([19c6737](https://github.com/dyte-in/docs/commit/19c6737eb3c4af9240588df9e9b8b0a58e8ef456))
-- **ui:** alignment of ([f61ef00](https://github.com/dyte-in/docs/commit/f61ef006bd1bcc2e91f8649ad1c9f82ccc985065))
-- **ui:** animate-pulse added for `dot-after` utility class ([093e073](https://github.com/dyte-in/docs/commit/093e07362bda8ceb08368b0b476ff619c205b0b7))
-- **ui:** api ref code color improvements ([3fc917d](https://github.com/dyte-in/docs/commit/3fc917decd13558642874a7877449187a171e63a))
-- **ui:** api reference - added border between right sections, response button ([7a1806c](https://github.com/dyte-in/docs/commit/7a1806cbffc3ea91c747b4cc6e9ea2df78205801))
-- **ui:** api reference border color changed ([1dd181d](https://github.com/dyte-in/docs/commit/1dd181d13a6ae134e4249377d1938e940c6903b6))
-- **ui:** api reference design update, revert css loading ([63cc0dd](https://github.com/dyte-in/docs/commit/63cc0dd02ce401005e9eae45f1abff0a14993823))
-- **ui:** api reference design updates, spacing etc ([fbd8d26](https://github.com/dyte-in/docs/commit/fbd8d262db6ff1e3f8d7c987753e9674237820d6))
-- **ui:** API reference ui customized, search box animated ([23b67df](https://github.com/dyte-in/docs/commit/23b67df842d5d038995de880fd8df8234ae165a0))
-- **ui:** api version switcher design cleanup ([a2f610c](https://github.com/dyte-in/docs/commit/a2f610c44fbf65754a47304d745a5148ec7628cc))
-- **ui:** change highlighted line color ([38794ec](https://github.com/dyte-in/docs/commit/38794ec2b1c48d421beecfb559e3ad232a91bbb6))
-- **ui:** changed API reference code colors ([89be71d](https://github.com/dyte-in/docs/commit/89be71d35cc894daf6169eb36e2e5963e9de60b9))
-- **ui:** changed BlogIcon ([6125911](https://github.com/dyte-in/docs/commit/61259114863968f9a1e998eca13343b046d9e1bc))
-- **ui:** changed ui of external links in navbar ([26795d8](https://github.com/dyte-in/docs/commit/26795d899d047c2e9c7bfceeac2ea0490cd3d8e8))
-- **ui:** dark mode color, code refactor (css) ([0252c55](https://github.com/dyte-in/docs/commit/0252c557488d9f5352829657c043c9f1fc0fa334))
-- **ui:** dark mode primary color ([ed330ed](https://github.com/dyte-in/docs/commit/ed330ed1f5b2e91508a5b1244600772141c33309))
-- **ui:** design updates, stoplight sentence case fix ([f8e8751](https://github.com/dyte-in/docs/commit/f8e87512b1e6205fe30a819d96c680f93259528d))
-- **ui:** dropdown design is consistent, added social links ([89d3290](https://github.com/dyte-in/docs/commit/89d3290bbc415b63a947918ea2f4cadbc7c255af))
-- **ui:** font sizes and spacing in elements updated ([e1c3839](https://github.com/dyte-in/docs/commit/e1c3839c0d0af9526e060b62cdb4ca8c0f4aeb45))
-- **ui:** gridlink shadow, showcase, dark mode primary color update ([df24de4](https://github.com/dyte-in/docs/commit/df24de47cac49dafc112cdd85d7a6ec63ef37f09))
-- **ui:** hashchange error in mobile fixed ([f365d37](https://github.com/dyte-in/docs/commit/f365d37fe2d9b2ff167bca901a68f450f448c49d))
-- **ui:** hidden version dropdown in mobile sidebar ([eb62e54](https://github.com/dyte-in/docs/commit/eb62e549b1d553b1850262e4394ddedfe4775a2b))
-- **ui:** icon background blended with text ([6351fc4](https://github.com/dyte-in/docs/commit/6351fc401b216a26ad84e4e4067d330d151a8ea9))
-- **ui:** increase base font-size for elements ([5d36c01](https://github.com/dyte-in/docs/commit/5d36c01592295a5e45891a8649221385d9bcd4a3))
-- **ui:** increase sidebar width as contextswitcher and dropdown break on smaller screens ([c60d2b7](https://github.com/dyte-in/docs/commit/c60d2b70bfe35d2f7c859607ec0ac9313d16b333))
-- **ui:** increased space between left sidebar and container in large screens ([45ca0fb](https://github.com/dyte-in/docs/commit/45ca0fb4692de6e9133f39833bf858326505c0f7))
-- **ui:** left and right scrollbar removed, added scrollbar styles ([b576be1](https://github.com/dyte-in/docs/commit/b576be13f303a6e28153e4ccd1af11e22465b302))
-- **ui:** made /api responsive on mobile ([8be458b](https://github.com/dyte-in/docs/commit/8be458bb816ec32a47d9e02adc4caf2210ea311c))
-- **ui:** make scrollbar corner transparent ([4a772d8](https://github.com/dyte-in/docs/commit/4a772d87a65da9b4b23bc32539d8c5e37fe8b068))
-- **ui:** minor ui fixes in API reference ([7f73264](https://github.com/dyte-in/docs/commit/7f732647c6fe3dac119aaecd751d2c0b9271e067))
-- **ui:** move response tab buttons to the right ([f46196c](https://github.com/dyte-in/docs/commit/f46196c73ffd32ddf0be1509518bc992828f5f33))
-- **ui:** now using "Source Sans Pro" and "Source Code Pro" ([30b943b](https://github.com/dyte-in/docs/commit/30b943b6c7fe457a4614921090a5a20b01a1680f))
-- **ui:** padding in mobile reset to default ([b52911f](https://github.com/dyte-in/docs/commit/b52911f9c2cf701c1fb32b1961b7543ad1791f28))
-- **ui:** position of sidebar collapse button ([cb7652e](https://github.com/dyte-in/docs/commit/cb7652e0595689c89730b94da9fee1286049561b))
-- **ui:** refactored api reference design ([8fc46ed](https://github.com/dyte-in/docs/commit/8fc46ed5e68b89c1b346c4db08da0d7f6e6d1602))
-- **ui:** remove current page highlight from api version switcher ([612681f](https://github.com/dyte-in/docs/commit/612681f419f2370a82279a0032e0aa1bb765e577))
-- **ui:** remove icons from introduction (how to use) ([ce353c7](https://github.com/dyte-in/docs/commit/ce353c7525fb2d016fd51e53b2351c9ffa379a9e))
-- **ui:** search kbd color change, sidebar spacing increased ([ae6ca2e](https://github.com/dyte-in/docs/commit/ae6ca2e95888ee72ed0855d1a0fa005f44826f88))
-- **ui:** search shortcut, backtotop position changed ([68dbecf](https://github.com/dyte-in/docs/commit/68dbecf7e95c97711272df2aee29c58b75a81930))
-- **ui:** sidebar toggle button position is now fixed ([3760c9e](https://github.com/dyte-in/docs/commit/3760c9ee599883df5031820a78c42b057590b9f0))
-- **ui:** typo which hid the hamburger menu in mobile ([100897e](https://github.com/dyte-in/docs/commit/100897e207cb4df0e897931ad0d1f19e2a92137e))
-- **ui:** update footer form ([3d5248f](https://github.com/dyte-in/docs/commit/3d5248f0e06f9d66d7dc6a79cdd7e5970593b83c))
-- **ui:** update footer sign up link design ([5f03e19](https://github.com/dyte-in/docs/commit/5f03e19e92167ef4ec7e52049b8fe526705f088a))
-- **ui:** update GridLinks UI in introduction page ([3fef0b2](https://github.com/dyte-in/docs/commit/3fef0b20bb597edde724455eab2d22174731e3b6))
-- **ui:** update heading colors for dark mode ([af2ee62](https://github.com/dyte-in/docs/commit/af2ee6218841efcef477a30ce50f67c86ce4ed20))
-- **ui:** update links in footer ([30a06bf](https://github.com/dyte-in/docs/commit/30a06bf51002443d8a0d891dd4e82dd708d75bbb))
-- **ui:** update stoplight elements colors ([e95d0aa](https://github.com/dyte-in/docs/commit/e95d0aabf8125a47b22faf555058f9f9667ef169))
-- **ui:** updated GetStartedCard design ([b9cd653](https://github.com/dyte-in/docs/commit/b9cd6532c6019b682e9702de9c4953ed8aa3a31a))
-- **ui:** updated leading for mobile ([e6313fa](https://github.com/dyte-in/docs/commit/e6313faae88c6c988d9cacb470ba88a773b45ece))
-- **ui:** updated navbar design ([6e61a64](https://github.com/dyte-in/docs/commit/6e61a64d91b046b5ba786c4179485e73eb33b9aa))
-- **ui:** updated styles, changed prism theme ([7bc0dc2](https://github.com/dyte-in/docs/commit/7bc0dc2c4a16ea97b249bc3911bd60b155e9dcb9))
-- **ui:** use drop-shadow instead of shadow for showcase ([aa8d097](https://github.com/dyte-in/docs/commit/aa8d097629421903f2eb207a8db4a8a9c86e7a75))
-- **ui:** use inline svg instead of via ([ca5b861](https://github.com/dyte-in/docs/commit/ca5b861ba4be86100298bc666cd406cf3521ecbd))
-- **ui:** using fira sans and fira code ([1a67e90](https://github.com/dyte-in/docs/commit/1a67e90665027991fd72b65b32e06c74e145010e))
-- **ui:** version dropdown now visible in mobile sidebar (build) ([856dca1](https://github.com/dyte-in/docs/commit/856dca1b88608b4454518e0a36a1aa7ea65036f0))
-- **ui:** version dropdown text overflow ([9a9ddec](https://github.com/dyte-in/docs/commit/9a9ddec867ab6b7c99e003116d28b5f07539a3f8))
-- update elements and refactor ([789cb5d](https://github.com/dyte-in/docs/commit/789cb5d1e36fb3bbb8419b5a34150b124f75a2fc))
-- updated API ref props ([e7e81c4](https://github.com/dyte-in/docs/commit/e7e81c47fae36fdb26c06e282766e31cf4b6b944))
-- updated docmanager to hide for /docs ([a46c837](https://github.com/dyte-in/docs/commit/a46c837928d942adbe705162616919ab25e67b1f))
-- updated handlePreferredDoc code, added comments ([221d2d5](https://github.com/dyte-in/docs/commit/221d2d57ed0d4c5649e42e7a1232f2157c41e672))
-- updated sidebar for guides section, design updates ([330952d](https://github.com/dyte-in/docs/commit/330952df634d30d2c988090b697bbf8d36741a8a))
-- use same sidebar content for `guides` and `docs` ([dd13999](https://github.com/dyte-in/docs/commit/dd13999fa7226a5ab323efe0c584abc9dad497f3))
-- **webhooks:** updated docs for organizedBy field in webhook body ([d37cc6b](https://github.com/dyte-in/docs/commit/d37cc6bcc7f040177bdfc6a2b0a2db8d2ab5f3d3))
-- **webpack:** buffer require() ([a7f1aaf](https://github.com/dyte-in/docs/commit/a7f1aaf892376af9c6660169ea1d74c49287c008))
-- **webpack:** provide buffer in plugin ([8b78819](https://github.com/dyte-in/docs/commit/8b78819e59c5e73aafcdf2029378ae9fa8338e3f))
-- **web:** setupscreen is true by default ([e780dc8](https://github.com/dyte-in/docs/commit/e780dc82996fda2d0c46bce2a43c80d4fa18640b))
-
-### Features
-
-- add a custom className for image showcase ([22dbf9e](https://github.com/dyte-in/docs/commit/22dbf9eb11019d6a073a5cce281d4f6a80c72810))
-- add crawl script ([74f1454](https://github.com/dyte-in/docs/commit/74f1454761bea056e8753247b0c3999eebefc7b1))
-- add Dockerfile for testing ([29b4874](https://github.com/dyte-in/docs/commit/29b4874c4cc8fbdea691519bdea7f52fcf4981f8))
-- add embed docs ([b637879](https://github.com/dyte-in/docs/commit/b63787927b8c1b0341128dca265f3a073ba1e198))
-- add fake ios version ([d198019](https://github.com/dyte-in/docs/commit/d198019f3a871c3032ca3b985cffcd9d69b7fea1))
-- add initial redesigned getstarted section ([3709302](https://github.com/dyte-in/docs/commit/37093027d8f65e1c3e9cea0dc5fd3625b435bc5d))
-- add ios updates ([fbfa540](https://github.com/dyte-in/docs/commit/fbfa5406b716577521bdf9012c8d236c0ae38539))
-- add metadata for /api route ([e3265df](https://github.com/dyte-in/docs/commit/e3265df8e176f64ca76f58087dbafc214fdd19d8))
-- add sample docs for demo ([d175788](https://github.com/dyte-in/docs/commit/d17578871e461eab3ded68b4deb65fbc7f1d8195))
-- add setLabel API docs ([158f091](https://github.com/dyte-in/docs/commit/158f0914a9493672c540bfd23df2f65a65dade60))
-- add tailwindcss 🚀 ([16a6999](https://github.com/dyte-in/docs/commit/16a69997e89d5aa877ee5fa12445c6a8bb225514))
-- add v2 api with version switcher dropdown ([172a025](https://github.com/dyte-in/docs/commit/172a025c177fe2f3c315bababfbc7139451301e7))
-- add videos for mobile and desktop ([f82afde](https://github.com/dyte-in/docs/commit/f82afde49600a775435878fbe527aca4b5cea248))
-- add videos in customize ui pages for react and js, refactored code ([#26](https://github.com/dyte-in/docs/issues/26)) ([57a05a0](https://github.com/dyte-in/docs/commit/57a05a001d71de5625c599fd1deea18d1670344c))
-- add yellow status color for 5xx response codes ([a0ef927](https://github.com/dyte-in/docs/commit/a0ef92730694fb6344a61a4c5f340085893c6872))
-- added `tailwindcss/nesting` for nested css ([2470b7c](https://github.com/dyte-in/docs/commit/2470b7ca43539906543932451b60cacf8a0b12af))
-- added algolia docsearch code ([14c3092](https://github.com/dyte-in/docs/commit/14c309201539f922d77e40c702700dff3830e287))
-- added fallback loading indicator for /api ([8aea366](https://github.com/dyte-in/docs/commit/8aea366525c0dad77394c91edf794b9314046bcb))
-- added initial introduction page ([5e3f92e](https://github.com/dyte-in/docs/commit/5e3f92eca4223113cef0fba435b4d2c1587d7bdf))
-- added known vector icons issue in docs ([92ed868](https://github.com/dyte-in/docs/commit/92ed868a158278626a5a94e07e3395a7ef4a835c))
-- added logic for context switching ([477d115](https://github.com/dyte-in/docs/commit/477d115e5f0a6f5ea4cf436afd4188cbb53f905e))
-- added OpenAPI docs at /api 🚀 ([6e38d93](https://github.com/dyte-in/docs/commit/6e38d93d3bf11b690c2102d560fc3fb125a58dc3))
-- added posthog ([499310e](https://github.com/dyte-in/docs/commit/499310e0fcc31bad84c7df07efdd134169aa2d30))
-- added social links in footer ([074e40d](https://github.com/dyte-in/docs/commit/074e40d210ca2a7548be4e6b5815ec2129aa90e6))
-- added version dropdown ([d15fa6a](https://github.com/dyte-in/docs/commit/d15fa6a29a9384e433e69e123eaf1b9ac6daeced))
-- bumped docusaurus, fixed new version issues ([a2fa15f](https://github.com/dyte-in/docs/commit/a2fa15f0b91bea2ca29204fcff1fcdda87fe83e9))
-- **docs:** add steps to write docs in README ([1757190](https://github.com/dyte-in/docs/commit/175719098dcfa507d3b39cb1ba2f779016bf8451))
-- **dx:** add linting: react, prettier ([5a0edb0](https://github.com/dyte-in/docs/commit/5a0edb00b0be6b1fde3df381eded6d368f1fe70c))
-- enable dropdown in mobile sidebar, add shadow to showcase ([135377f](https://github.com/dyte-in/docs/commit/135377f359c472209ec6957ec02bfb27c2258e56))
-- enable search ([3d1d4b1](https://github.com/dyte-in/docs/commit/3d1d4b1440cd58b1a8bec233b6e4031bee461b24))
-- **flutter:** version 0.5.x docs ([b55b0e7](https://github.com/dyte-in/docs/commit/b55b0e7bf5cdbfaab3467faefc3843c20d6675ff))
-- **iframe:** add doc for handling meetingEnded ([e45392e](https://github.com/dyte-in/docs/commit/e45392e71e344654f17a0e0f467ecebbc47b3afb))
-- mobile sidebar added ([7af1266](https://github.com/dyte-in/docs/commit/7af12668995b427d4e4fac1d4a1dd44de0d3c17b))
-- **mobile-sdks:** added localMediaConnected docs ([d94f7f4](https://github.com/dyte-in/docs/commit/d94f7f4a3b60939e3807ebf2f630cad363a36f12))
-- **mobile-sdk:** Updated sdk to latest versions ([01d0920](https://github.com/dyte-in/docs/commit/01d0920fe256a6b6dc3b48e282c9cc03259dd0ad))
-- new design (header, footer, sidebar, context switcher) ([82ec9b9](https://github.com/dyte-in/docs/commit/82ec9b90d07240258184cc3cdd7f1db2bfcc3cfd))
-- new sidebar minimize ui, other ui updates ([3226b1a](https://github.com/dyte-in/docs/commit/3226b1a3885405bb58172d4add7d859c8d013c7d))
-- now using Inter font ([5de8e0f](https://github.com/dyte-in/docs/commit/5de8e0f485f8bf89c047f4d495f14c35e48a1820))
-- polish ([653d033](https://github.com/dyte-in/docs/commit/653d03311ccf448db136ef50b4023a435e3cf2d5))
-- remove blog and add algolia creds ([a731a6a](https://github.com/dyte-in/docs/commit/a731a6a49442311566e8b4e84b7e8e0bb3f8658d))
-- **rn:** update docs for 0.3.0, 0.4.0 ([a16938a](https://github.com/dyte-in/docs/commit/a16938a43d72d2de3a768c8e44740f861b0c1d28))
-- **rn:** update to 13.x, add label docs ([7e8a283](https://github.com/dyte-in/docs/commit/7e8a283200f1129289c8a965da3bafb6a68210fd))
-- set dark mode as default ([ace13ad](https://github.com/dyte-in/docs/commit/ace13addcd17275547e297edce6a1a679dd2cd15))
-- **ui:** added dot-after utility for adding a dot after an element ([f056bc8](https://github.com/dyte-in/docs/commit/f056bc8b6efaabaf95951c027a5aaf23a350218a))
-- update api v1 with webhook `enabled` field ([94141e6](https://github.com/dyte-in/docs/commit/94141e6bab5249c5765b6730f1b467bdf6e5986b))
-- update docs according to release and version number ([649943d](https://github.com/dyte-in/docs/commit/649943d15c53b7a958c4e1d6809409fb6ea89353))
-- update sidebar design ([39afd2e](https://github.com/dyte-in/docs/commit/39afd2ee2444c32357724b5b0258b3100d3659cb))
-- upgrade `tailwindcss` to `3.0.19` ([2c088ec](https://github.com/dyte-in/docs/commit/2c088ec630f3041f17954b9979b4bcd465323b12))
-- use `groupId` to group `Tabs` selections ([ea3d967](https://github.com/dyte-in/docs/commit/ea3d967a876778d2167b7c4e5f1ccadd9f5d9765))
-- version updates ([78ab521](https://github.com/dyte-in/docs/commit/78ab52102f09f97931f3a93639eac9a9565c8007))
-- **web:** i18n support ([fd042c8](https://github.com/dyte-in/docs/commit/fd042c8893491daf9fe4ff47e926f7798192e37b))
-- **websdk:** update to 0.19.x ([76add80](https://github.com/dyte-in/docs/commit/76add80271c60585e8a78fda3be8a0b909b9dfd3))
-
-# 1.0.0 (2022-02-22)
-
-### Bug Fixes
-
-- add dyte-logo in footer, navbar enhancements ([33e4541](https://github.com/dyte-in/docs/commit/33e4541d778cbed3e33b93f0e8550d649de52080))
-- add dyte.io link to footer logo ([94c02d6](https://github.com/dyte-in/docs/commit/94c02d69c7794910685fe18fb70eac470dc67dc0))
-- **api:** glitch when navigating to /api/ from navbar ([51d97ac](https://github.com/dyte-in/docs/commit/51d97ac1e50dcdd33d7d77ff265e96168e66a027))
-- **api:** remove url so support link points to email ([b79beea](https://github.com/dyte-in/docs/commit/b79beea3114a0b8e768974f894f64dd3397a3b02))
-- **api:** response codes starting with `4` have a red color ([8d2499a](https://github.com/dyte-in/docs/commit/8d2499ad09bc5274059c37f657acb30b10aea8b4))
-- **api:** update api reference page design ([4e2b3d4](https://github.com/dyte-in/docs/commit/4e2b3d407aae4e1ada41d19a624d88b6225c3fbb))
-- **api:** updated responses design with color indicators ([fcd6b0a](https://github.com/dyte-in/docs/commit/fcd6b0a497c1ff6299e1f4dffd5a148a8effa3d0))
-- broken links by typo ([fff68a1](https://github.com/dyte-in/docs/commit/fff68a1e42f4f0b0e87fb33dcad092c13a925e20))
-- build errors due to ssr for /api ([d2881a7](https://github.com/dyte-in/docs/commit/d2881a741dcb20215db397f95ece7ec524b00232))
-- build fail for /api ([c05c3ee](https://github.com/dyte-in/docs/commit/c05c3ee947df1feaef114ec09552b35bdbba276e))
-- changed sidebars file for /docs ([773e065](https://github.com/dyte-in/docs/commit/773e065394c09f73433552f91109352497058dc4))
-- compress pngs ([68d5741](https://github.com/dyte-in/docs/commit/68d57417dc8796c597c06fce257931606c70832a))
-- context switch lag - now using history.push ([56f23da](https://github.com/dyte-in/docs/commit/56f23da1c71e6b8b6cd19d2160ea6af028deab71))
-- context switcher - invalid docId ([ebbfc30](https://github.com/dyte-in/docs/commit/ebbfc3096d96e7a9e159d76cff8cfc6ea2e3a35d))
-- contextswitcher glitch in /docs fixed ([6c18f9d](https://github.com/dyte-in/docs/commit/6c18f9d7b5ec5d0dcc027215aea7fa1b2448e755))
-- **crawl:** add `guides` section to crawler ([62b8ee4](https://github.com/dyte-in/docs/commit/62b8ee47690e0bdcf0376dbd5c6db3e31adf4735))
-- **deploy:** downgrade elements and changed buffer fallback ([4b02f75](https://github.com/dyte-in/docs/commit/4b02f75c01df072887c0eb2a462f2fa59370a204))
-- **docs:** add `webinar` doc in guides sidebar ([a15816f](https://github.com/dyte-in/docs/commit/a15816f18fb0277c7905b2120c1c376c5afa3a8b))
-- docsearch final config, updated /api/ path ([93bc744](https://github.com/dyte-in/docs/commit/93bc74458fec1b0dd3ad377182b3241cf592860d))
-- **docs:** home description meta tag set properly now ([a4f6d69](https://github.com/dyte-in/docs/commit/a4f6d699ddd48d3323225917515c5c9e32f7991c))
-- **docs:** sidebar parity for `docs` and `guides` ([2e82ffd](https://github.com/dyte-in/docs/commit/2e82ffd9f5eac0342b9b45aafb15b7a1c93ec358))
-- **docs:** update how-dyte-works.png image 🚀 ([ced66d0](https://github.com/dyte-in/docs/commit/ced66d044082467236c298324a6ab3a5ed7fc546))
-- **docs:** update meeting-ui images for mobile, add preview image ([0449a72](https://github.com/dyte-in/docs/commit/0449a72066c930b230e534e5a7377f611426b023))
-- **docs:** update mobile meeting-ui diagram ([d92138b](https://github.com/dyte-in/docs/commit/d92138bac6052717895d118614a80cde0dcda061))
-- **docs:** updated images and fixed metadata content ([e54cc7a](https://github.com/dyte-in/docs/commit/e54cc7a35c055867ed73907f73d9290a0ecf4a9b))
-- enhanced ContextSwitcher UI, code refactored ([d5ab7b3](https://github.com/dyte-in/docs/commit/d5ab7b3913d4dc53b33f63a0476245ecb118fd18))
-- **flutter:** meeting mdx table methods intendation ([c3d8fbf](https://github.com/dyte-in/docs/commit/c3d8fbfa01c0b24755047baeec6cf4deda485c2f))
-- **flutter:** meeting.mdx methods intendation ([336c8be](https://github.com/dyte-in/docs/commit/336c8bee42ec214813d2682f0099a74ebce5cd9d))
-- **footer:** updated footer text and replaced form with sign up link ([e7aa701](https://github.com/dyte-in/docs/commit/e7aa701d0a4438c38ba84f303df98d9326b16e79))
-- **link:** update demo app link to `app.dyte.in` ([1164181](https://github.com/dyte-in/docs/commit/1164181a1e0712fbfac529bbbd076a2795364205))
-- make docsearch detect subsections with selectors ([2872783](https://github.com/dyte-in/docs/commit/2872783011f95a40e15222ea2509d39062f1dfef))
-- make sidebars not collapsible in react, flutter ([4fd70e0](https://github.com/dyte-in/docs/commit/4fd70e0d67cd17b6a3f76c2bf5bdd5606fed1f59))
-- mobile ContextSwitcher uses tailwindcss, refactor ([f665dcf](https://github.com/dyte-in/docs/commit/f665dcfeeaae99e8ece033309895f2d93cbbcc8e))
-- now working with older node and with yarn ([279cff9](https://github.com/dyte-in/docs/commit/279cff99f50b39e5e84aaa9194f19fa1993866c0))
-- proper links to sample apps ([067ace0](https://github.com/dyte-in/docs/commit/067ace06c9d6a5802d40c264041cf63d374c8275))
-- redesigned navbar, icons changed, markdown sample added ([52a1427](https://github.com/dyte-in/docs/commit/52a14273b40e6c048ed54125dc0533ee4ec2cbb0))
-- remove basePath as warning is given for invalid basePath ([9eef8a7](https://github.com/dyte-in/docs/commit/9eef8a7590a2a259284f3077969ceedb58d59fcb))
-- remove broken link in react-native ([f4602a7](https://github.com/dyte-in/docs/commit/f4602a763f0fb2be7f32d9d04b25b34f2b747fcd))
-- remove dummy blog posts and add test post ([68017da](https://github.com/dyte-in/docs/commit/68017dac2854545933214712f54c3aa005bdb2a4))
-- remove navbar lv0 items, update docsearch config ([7cb9483](https://github.com/dyte-in/docs/commit/7cb94837fb5f3b1ad31708ee55e3a6aec9be2fe9))
-- remove yarn.lock ([b97a1dc](https://github.com/dyte-in/docs/commit/b97a1dc4b9ea2d8a6046e56d541ff188dc4df694))
-- removed `next` in prod build, updated docsearch creds ([29cbf81](https://github.com/dyte-in/docs/commit/29cbf817fe4cb9a0c7942ae7469cd37191024fea))
-- restructure navbar links ([e3ec2ce](https://github.com/dyte-in/docs/commit/e3ec2cefbe8378fe909e2d4d7c7927e99652ee42))
-- sidebar now sticks again ([c20d7d7](https://github.com/dyte-in/docs/commit/c20d7d76500caa836812697ccc36c48b140e5a73))
-- **stoplight:** remove font size, update package ([1a2e1cf](https://github.com/dyte-in/docs/commit/1a2e1cf2e71116ef1de93897171c64f586fa5f29))
-- tailwindcss resets removed to fix typography ([140d187](https://github.com/dyte-in/docs/commit/140d187ff0cdf13d16372d718bb6cf7f6957c51e))
-- theme switcher position fixed, added dev portal link ([9e7ac72](https://github.com/dyte-in/docs/commit/9e7ac72f03f2adb323292d695100e6446ac29a89))
-- typo ([86542c7](https://github.com/dyte-in/docs/commit/86542c7104984d4b8400f114647895ad50e8e2af))
-- typo `shownn`, embed code typo ([190d1d7](https://github.com/dyte-in/docs/commit/190d1d7fb57233f838a71dbb5f78fb2b1eb07d43))
-- typo in android docs ([96cfd7f](https://github.com/dyte-in/docs/commit/96cfd7f0b77d2210e06cc4a2b8e4244697dffb6a))
-- **ui:** .string color in textrequestbody was not visible ([e2c8507](https://github.com/dyte-in/docs/commit/e2c850784e2c94884a9a216f4feb4536c29a0fb9))
-- **ui:** add react native icon in getstarted section ([b1e646a](https://github.com/dyte-in/docs/commit/b1e646aad014155247286219b71b84af163079b2))
-- **ui:** added hashchange detection in introduction page ([99b1324](https://github.com/dyte-in/docs/commit/99b1324b3cabb5f9efd56c271a1411949bfae2f5))
-- **ui:** added primary-100 for lighter primary shade (navbar) ([107f9f9](https://github.com/dyte-in/docs/commit/107f9f95a0874cef5ee1e9b24f65860f8f5fe067))
-- **ui:** alignment of ([3ffd379](https://github.com/dyte-in/docs/commit/3ffd37946497069714010f95788ce248be27e1a8))
-- **ui:** animate-pulse added for `dot-after` utility class ([4a0d955](https://github.com/dyte-in/docs/commit/4a0d955c8f0f2e1778d4a6394174180b70f2bb76))
-- **ui:** api ref code color improvements ([fc1a571](https://github.com/dyte-in/docs/commit/fc1a57194da88e7c2ca4cf9a2cc7d7aae4b90880))
-- **ui:** api reference - added border between right sections, response button ([f726f84](https://github.com/dyte-in/docs/commit/f726f84773f6397c53c8dc8c0b9c12e63c515733))
-- **ui:** api reference border color changed ([67e9df8](https://github.com/dyte-in/docs/commit/67e9df84a5089fecbf4852a914e8654a842d6eb0))
-- **ui:** api reference design update, revert css loading ([9ca2715](https://github.com/dyte-in/docs/commit/9ca27153d7f058a221413eaf409f5ac178250351))
-- **ui:** api reference design updates, spacing etc ([932d821](https://github.com/dyte-in/docs/commit/932d8216c054071cf7eb7c738651a0daac6a7a70))
-- **ui:** API reference ui customized, search box animated ([be73dbe](https://github.com/dyte-in/docs/commit/be73dbe53bca4897187f8599fb0563b071ec3d84))
-- **ui:** api version switcher design cleanup ([0af13eb](https://github.com/dyte-in/docs/commit/0af13eb60cc6dadee39420fbc6e9c2f9923b6021))
-- **ui:** change highlighted line color ([d1845b5](https://github.com/dyte-in/docs/commit/d1845b561f2424b24e858a75041e6ea2bb5f9214))
-- **ui:** changed API reference code colors ([6a8ca3c](https://github.com/dyte-in/docs/commit/6a8ca3ccde34f172d4328fc489bad8169a8d08bd))
-- **ui:** changed BlogIcon ([86d2beb](https://github.com/dyte-in/docs/commit/86d2bebdddab3d2368589f1e60aa251146be1007))
-- **ui:** changed ui of external links in navbar ([26795d8](https://github.com/dyte-in/docs/commit/26795d899d047c2e9c7bfceeac2ea0490cd3d8e8))
-- **ui:** dark mode color, code refactor (css) ([0252c55](https://github.com/dyte-in/docs/commit/0252c557488d9f5352829657c043c9f1fc0fa334))
-- **ui:** dark mode primary color ([ed330ed](https://github.com/dyte-in/docs/commit/ed330ed1f5b2e91508a5b1244600772141c33309))
-- **ui:** design updates, stoplight sentence case fix ([4617fbc](https://github.com/dyte-in/docs/commit/4617fbc737f43c7b5d0993f6def9ad17e34636fd))
-- **ui:** dropdown design is consistent, added social links ([cea8eb2](https://github.com/dyte-in/docs/commit/cea8eb2a19defc752beba0084bd9a899e54e9c94))
-- **ui:** font sizes and spacing in elements updated ([649ad2a](https://github.com/dyte-in/docs/commit/649ad2a6358b2a97ee5c712d78a261376e45fa90))
-- **ui:** gridlink shadow, showcase, dark mode primary color update ([df24de4](https://github.com/dyte-in/docs/commit/df24de47cac49dafc112cdd85d7a6ec63ef37f09))
-- **ui:** hashchange error in mobile fixed ([42f995a](https://github.com/dyte-in/docs/commit/42f995a541040808bb6dd90694101d1e07c9074b))
-- **ui:** hidden version dropdown in mobile sidebar ([122bbda](https://github.com/dyte-in/docs/commit/122bbda019f9ee8f3d0f1f4f38d4c30a0ac19846))
-- **ui:** icon background blended with text ([c0c501b](https://github.com/dyte-in/docs/commit/c0c501b841d15e3b4254288133bfbcbc6d4f9bcb))
-- **ui:** increase base font-size for elements ([c173a7e](https://github.com/dyte-in/docs/commit/c173a7e855470d321ef09fa08d21fdbdc5ed9ed8))
-- **ui:** increase sidebar width as contextswitcher and dropdown break on smaller screens ([aaa2008](https://github.com/dyte-in/docs/commit/aaa2008f7dc109678a2de6eaed23219cf871db91))
-- **ui:** increased space between left sidebar and container in large screens ([a603bf8](https://github.com/dyte-in/docs/commit/a603bf82a211d2569e8af4b389f24490161171be))
-- **ui:** left and right scrollbar removed, added scrollbar styles ([5b1cbf8](https://github.com/dyte-in/docs/commit/5b1cbf8036d161e43a088faa793edcc011747beb))
-- **ui:** made /api responsive on mobile ([3684efe](https://github.com/dyte-in/docs/commit/3684efe44804285eae87e0931b144dbc09fc5a5e))
-- **ui:** make scrollbar corner transparent ([803ef8a](https://github.com/dyte-in/docs/commit/803ef8a68d551f8eee6c532db47ca618acd48a5c))
-- **ui:** minor ui fixes in API reference ([15e7819](https://github.com/dyte-in/docs/commit/15e78194ccc18e1c3f77258f4c0d31c1cc2ce2de))
-- **ui:** move response tab buttons to the right ([a78610e](https://github.com/dyte-in/docs/commit/a78610e42a8a58aa70563c0b051110bab59b79db))
-- **ui:** now using "Source Sans Pro" and "Source Code Pro" ([6830377](https://github.com/dyte-in/docs/commit/6830377a8fcaa1ac5a73aa47f7cd77f7f2cda206))
-- **ui:** padding in mobile reset to default ([8aea5e2](https://github.com/dyte-in/docs/commit/8aea5e2d5af792c54285c20d8c3f58fc1e076c4a))
-- **ui:** position of sidebar collapse button ([cb7652e](https://github.com/dyte-in/docs/commit/cb7652e0595689c89730b94da9fee1286049561b))
-- **ui:** refactored api reference design ([9d5e8aa](https://github.com/dyte-in/docs/commit/9d5e8aa51d8a7fb677333bfe47eb7c597c82f537))
-- **ui:** remove current page highlight from api version switcher ([e164a96](https://github.com/dyte-in/docs/commit/e164a96cffb663a2de196e13cebdfa24a67a4294))
-- **ui:** remove icons from introduction (how to use) ([a4ea8b9](https://github.com/dyte-in/docs/commit/a4ea8b902698746d0fbab6525fdaf0ff17982cdb))
-- **ui:** search kbd color change, sidebar spacing increased ([ae6ca2e](https://github.com/dyte-in/docs/commit/ae6ca2e95888ee72ed0855d1a0fa005f44826f88))
-- **ui:** search shortcut, backtotop position changed ([68dbecf](https://github.com/dyte-in/docs/commit/68dbecf7e95c97711272df2aee29c58b75a81930))
-- **ui:** sidebar toggle button position is now fixed ([3760c9e](https://github.com/dyte-in/docs/commit/3760c9ee599883df5031820a78c42b057590b9f0))
-- **ui:** typo which hid the hamburger menu in mobile ([e92ac01](https://github.com/dyte-in/docs/commit/e92ac01daf0d75cb16126dcbbac83d65388d4ebc))
-- **ui:** update footer form ([8682240](https://github.com/dyte-in/docs/commit/8682240cfb74d278d6bd943cb1630ff9c2ee0328))
-- **ui:** update footer sign up link design ([079ebc4](https://github.com/dyte-in/docs/commit/079ebc4175ef08aea9143f31e1e8e68e932f6b58))
-- **ui:** update GridLinks UI in introduction page ([3fef0b2](https://github.com/dyte-in/docs/commit/3fef0b20bb597edde724455eab2d22174731e3b6))
-- **ui:** update heading colors for dark mode ([8304f4f](https://github.com/dyte-in/docs/commit/8304f4f37f0878278bdcd6b31183bcaab4f1417b))
-- **ui:** update links in footer ([2a7cdd3](https://github.com/dyte-in/docs/commit/2a7cdd3876e0a4ba56abf93d2967fe238af51391))
-- **ui:** update stoplight elements colors ([3de8474](https://github.com/dyte-in/docs/commit/3de84747751229857445e50a923ac738271d5fd5))
-- **ui:** updated GetStartedCard design ([3a772a5](https://github.com/dyte-in/docs/commit/3a772a55488a11b3a59dc0820b8333b52d99924f))
-- **ui:** updated leading for mobile ([eac4a5e](https://github.com/dyte-in/docs/commit/eac4a5e947c05cd49dd14f5cb5616b9403c45eef))
-- **ui:** updated navbar design ([6e61a64](https://github.com/dyte-in/docs/commit/6e61a64d91b046b5ba786c4179485e73eb33b9aa))
-- **ui:** updated styles, changed prism theme ([7bc0dc2](https://github.com/dyte-in/docs/commit/7bc0dc2c4a16ea97b249bc3911bd60b155e9dcb9))
-- **ui:** use drop-shadow instead of shadow for showcase ([c6028fb](https://github.com/dyte-in/docs/commit/c6028fbdbe12a45fb180a327d8b80a1a30b498c5))
-- **ui:** use inline svg instead of via ([ca5b861](https://github.com/dyte-in/docs/commit/ca5b861ba4be86100298bc666cd406cf3521ecbd))
-- **ui:** using fira sans and fira code ([2f47f57](https://github.com/dyte-in/docs/commit/2f47f57e9d5ff0543e8b1f523ac468af77f46eac))
-- **ui:** version dropdown now visible in mobile sidebar (build) ([856dca1](https://github.com/dyte-in/docs/commit/856dca1b88608b4454518e0a36a1aa7ea65036f0))
-- **ui:** version dropdown text overflow ([9a9ddec](https://github.com/dyte-in/docs/commit/9a9ddec867ab6b7c99e003116d28b5f07539a3f8))
-- update elements and refactor ([789cb5d](https://github.com/dyte-in/docs/commit/789cb5d1e36fb3bbb8419b5a34150b124f75a2fc))
-- updated API ref props ([e7e81c4](https://github.com/dyte-in/docs/commit/e7e81c47fae36fdb26c06e282766e31cf4b6b944))
-- updated docmanager to hide for /docs ([a46c837](https://github.com/dyte-in/docs/commit/a46c837928d942adbe705162616919ab25e67b1f))
-- updated handlePreferredDoc code, added comments ([9cb114b](https://github.com/dyte-in/docs/commit/9cb114b5425bb0c4192eebf9ef0fea7ca9dc7979))
-- updated sidebar for guides section, design updates ([3a9350d](https://github.com/dyte-in/docs/commit/3a9350da03a60fd7835c794b7bb1c537bdcfe466))
-- use same sidebar content for `guides` and `docs` ([628aa91](https://github.com/dyte-in/docs/commit/628aa91f46c3118c7cb996c237ca5a87e3cf1660))
-- **webhooks:** updated docs for organizedBy field in webhook body ([b4ca40b](https://github.com/dyte-in/docs/commit/b4ca40b2090c0b35d116c7b93f6918c1573b4ed3))
-- **webpack:** buffer require() ([a7f1aaf](https://github.com/dyte-in/docs/commit/a7f1aaf892376af9c6660169ea1d74c49287c008))
-- **webpack:** provide buffer in plugin ([8b78819](https://github.com/dyte-in/docs/commit/8b78819e59c5e73aafcdf2029378ae9fa8338e3f))
-- **web:** setupscreen is true by default ([aee3b5e](https://github.com/dyte-in/docs/commit/aee3b5e5ebe4cf47a4c90980c4512dc8b8307bcb))
-
-### Features
-
-- add a custom className for image showcase ([22dbf9e](https://github.com/dyte-in/docs/commit/22dbf9eb11019d6a073a5cce281d4f6a80c72810))
-- add crawl script ([f8a6ac6](https://github.com/dyte-in/docs/commit/f8a6ac6f3716da1b69e420053a72a990151a5696))
-- add Dockerfile for testing ([29b4874](https://github.com/dyte-in/docs/commit/29b4874c4cc8fbdea691519bdea7f52fcf4981f8))
-- add embed docs ([f0cd561](https://github.com/dyte-in/docs/commit/f0cd561e3deca228d7fbbe1863a483fe9543cc68))
-- add fake ios version ([9f485df](https://github.com/dyte-in/docs/commit/9f485df237a5af0dfd98bb621ea19c2d9ab2e3bb))
-- add initial redesigned getstarted section ([89d7322](https://github.com/dyte-in/docs/commit/89d7322886a9f019a63c0d2d743f85ccbf830879))
-- add ios updates ([a480d05](https://github.com/dyte-in/docs/commit/a480d0590eff30b72a6195cbc8ece1e5b57698da))
-- add metadata for /api route ([3919457](https://github.com/dyte-in/docs/commit/3919457c6b69b6648531db72dfce5211b1682af1))
-- add sample docs for demo ([d175788](https://github.com/dyte-in/docs/commit/d17578871e461eab3ded68b4deb65fbc7f1d8195))
-- add setLabel API docs ([6f6f05e](https://github.com/dyte-in/docs/commit/6f6f05ed6d44851e73f2cd8724c6fef0c935da87))
-- add tailwindcss 🚀 ([16a6999](https://github.com/dyte-in/docs/commit/16a69997e89d5aa877ee5fa12445c6a8bb225514))
-- add v2 api with version switcher dropdown ([2291484](https://github.com/dyte-in/docs/commit/229148476628dcbc84ff0c7f1258645760920a1b))
-- add videos for mobile and desktop ([c80c09a](https://github.com/dyte-in/docs/commit/c80c09a9de1afc2d868d3483fcf102ffd539750f))
-- add videos in customize ui pages for react and js, refactored code ([#26](https://github.com/dyte-in/docs/issues/26)) ([c937c00](https://github.com/dyte-in/docs/commit/c937c0067b95c6dca0dda28c01c7038d66bfa5e8))
-- add yellow status color for 5xx response codes ([7a51fa2](https://github.com/dyte-in/docs/commit/7a51fa2b9577f624ddbccf071b2aeaaca197df4b))
-- added `tailwindcss/nesting` for nested css ([cc6f3a7](https://github.com/dyte-in/docs/commit/cc6f3a79aab48a3bc944209016fa74e9172f769e))
-- added algolia docsearch code ([6267011](https://github.com/dyte-in/docs/commit/6267011d26881098d29d242bce1c0fd3d0d766a5))
-- added fallback loading indicator for /api ([8aea366](https://github.com/dyte-in/docs/commit/8aea366525c0dad77394c91edf794b9314046bcb))
-- added initial introduction page ([5e3f92e](https://github.com/dyte-in/docs/commit/5e3f92eca4223113cef0fba435b4d2c1587d7bdf))
-- added known vector icons issue in docs ([1b9c54c](https://github.com/dyte-in/docs/commit/1b9c54cea9703be982b231f870355ee3250fbf96))
-- added logic for context switching ([477d115](https://github.com/dyte-in/docs/commit/477d115e5f0a6f5ea4cf436afd4188cbb53f905e))
-- added OpenAPI docs at /api 🚀 ([6e38d93](https://github.com/dyte-in/docs/commit/6e38d93d3bf11b690c2102d560fc3fb125a58dc3))
-- added posthog ([3c98e19](https://github.com/dyte-in/docs/commit/3c98e1987a806d8078772f9ba142d6e6bc67ea57))
-- added social links in footer ([074e40d](https://github.com/dyte-in/docs/commit/074e40d210ca2a7548be4e6b5815ec2129aa90e6))
-- added version dropdown ([d15fa6a](https://github.com/dyte-in/docs/commit/d15fa6a29a9384e433e69e123eaf1b9ac6daeced))
-- bumped docusaurus, fixed new version issues ([a2fa15f](https://github.com/dyte-in/docs/commit/a2fa15f0b91bea2ca29204fcff1fcdda87fe83e9))
-- **docs:** add steps to write docs in README ([03326a2](https://github.com/dyte-in/docs/commit/03326a2bc4846764fce51eb12e88b799724ad8b5))
-- **dx:** add linting: react, prettier ([70c4e3b](https://github.com/dyte-in/docs/commit/70c4e3b6b5396411ac0ef85402f6958705a5d5d6))
-- enable dropdown in mobile sidebar, add shadow to showcase ([135377f](https://github.com/dyte-in/docs/commit/135377f359c472209ec6957ec02bfb27c2258e56))
-- enable search ([f2a5496](https://github.com/dyte-in/docs/commit/f2a549605e13cb53b1e66bc4f5b1d88cab45014c))
-- **flutter:** version 0.5.x docs ([cdda32d](https://github.com/dyte-in/docs/commit/cdda32d35387656bae08794edd976b6d05b24514))
-- **iframe:** add doc for handling meetingEnded ([65ed129](https://github.com/dyte-in/docs/commit/65ed1297243243940fb236bb72df11c18eeea41a))
-- mobile sidebar added ([7af1266](https://github.com/dyte-in/docs/commit/7af12668995b427d4e4fac1d4a1dd44de0d3c17b))
-- **mobile-sdks:** added localMediaConnected docs ([e09016d](https://github.com/dyte-in/docs/commit/e09016dda87e2f222cc653ebfa5f19501320e695))
-- **mobile-sdk:** Updated sdk to latest versions ([fc205e7](https://github.com/dyte-in/docs/commit/fc205e71aa158d333c3700af8e02158058826aad))
-- new design (header, footer, sidebar, context switcher) ([82ec9b9](https://github.com/dyte-in/docs/commit/82ec9b90d07240258184cc3cdd7f1db2bfcc3cfd))
-- new sidebar minimize ui, other ui updates ([3226b1a](https://github.com/dyte-in/docs/commit/3226b1a3885405bb58172d4add7d859c8d013c7d))
-- now using Inter font ([5de8e0f](https://github.com/dyte-in/docs/commit/5de8e0f485f8bf89c047f4d495f14c35e48a1820))
-- polish ([653d033](https://github.com/dyte-in/docs/commit/653d03311ccf448db136ef50b4023a435e3cf2d5))
-- **release:** setup husky, semantic-release, commitlint, commitizen, jest ([d9895b2](https://github.com/dyte-in/docs/commit/d9895b257af32bdef7205168101c9607156f2902))
-- remove blog and add algolia creds ([f5979e9](https://github.com/dyte-in/docs/commit/f5979e93321ae44c8fcf202f4b913e5714246e35))
-- **rn:** update docs for 0.3.0, 0.4.0 ([6f54d1e](https://github.com/dyte-in/docs/commit/6f54d1e58abe640cfadf16629a5c30312cd1bf42))
-- **rn:** update to 13.x, add label docs ([c4026e6](https://github.com/dyte-in/docs/commit/c4026e6826013001f39dd6c9f2b543094960ef61))
-- set dark mode as default ([d865a55](https://github.com/dyte-in/docs/commit/d865a5580e86396f8918b5d9ec4a9a8d4d6f0a6c))
-- **ui:** added dot-after utility for adding a dot after an element ([b05ffb5](https://github.com/dyte-in/docs/commit/b05ffb5e4fa0a9f5b6fd59e03faff93880bd8b5c))
-- update api v1 with webhook `enabled` field ([d629b40](https://github.com/dyte-in/docs/commit/d629b4086ba554a8f2d1a82ad2771488fd8beadf))
-- update docs according to release and version number ([f920f4f](https://github.com/dyte-in/docs/commit/f920f4f9a21f8f7fa858daed480c90f5c03e6c79))
-- update sidebar design ([39afd2e](https://github.com/dyte-in/docs/commit/39afd2ee2444c32357724b5b0258b3100d3659cb))
-- upgrade `tailwindcss` to `3.0.19` ([c149cf4](https://github.com/dyte-in/docs/commit/c149cf439eafd981f9217abf4b8f8562a36e250e))
-- use `groupId` to group `Tabs` selections ([505b407](https://github.com/dyte-in/docs/commit/505b4073cbf2312c1e7b48b5382daadbaf2671d1))
-- version updates ([ba45601](https://github.com/dyte-in/docs/commit/ba45601efec496b8af94750d280da2011eee807b))
-- **web:** i18n support ([34386bf](https://github.com/dyte-in/docs/commit/34386bf1cb3fdb21d379125d1bf055a75cc6590f))
-- **websdk:** update to 0.19.x ([be85687](https://github.com/dyte-in/docs/commit/be8568779519dfb64cba64657a05458e324f8017))
+- Initial OSPI documentation site, adapted from the Docusaurus scaffold previously used for Dyte's documentation.
+- Removed all Dyte video-SDK content, components, and dependencies.
+- New content structure: [Guides](/guides), [API Reference](/api-reference), and [Architecture](/architecture), sourced from the real [`ospi-platform`](https://github.com/BrickeVD/ospi-platform) repository (README, source code, and 34 Architecture Decision Records).
+- Placeholder pink brand palette and wordmark logo — the real OSPI visual identity was not available at the time of writing.
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index e5b9fa711a..8958077646 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,3 +1,3 @@
# Code of Conduct
-All Dyte repos are governed by our Community Participation Guidelines, available at: https://dyte.notion.site/dyte/Dyte-Community-Participation-Guidelines-CPG-4b3af58fdf3545c2a3065773a9154728
+This repository is governed by a standard Contributor Covenant-style code of conduct: participate in good faith, be respectful, and follow the [Contributing guide](./CONTRIBUTING.md).
diff --git a/README.md b/README.md
index c87936378f..70aa6463ab 100644
--- a/README.md
+++ b/README.md
@@ -1,27 +1,17 @@
-
-
-
-
-
Dyte Docs
+ OSPI Docs
- Dyte's documentation portal, built with Docusaurus.
-
- Explore the docs »
+ Documentation portal for OSPI (Open Standard Product Identification), built with Docusaurus.
- View Demo
- ·
- Report Bug
+ Platform source
·
- Request Feature
+ Report an issue
-
-
## Table of Contents
- [About the Project](#about-the-project)
@@ -29,153 +19,81 @@
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
-- [Usage](#usage)
-- [Version History](#version-history)
-- [Roadmap](#roadmap)
+- [Content structure](#content-structure)
- [Contributing](#contributing)
-- [Support](#support)
- [License](#license)
-- [About](#about)
## About The Project
-[Docusaurus](https://docusaurus.io/) is a static site generator that helps you ship beautiful, accessible docs. For building our [documentation](https://docs.dyte.io) portal, we have made certain modifications over the template generated by [Docusaurus](https://docusaurus.io) to be able to properly showcase all our SDKs with their respective versions.
+This is the documentation site for **OSPI (Open Standard Product Identification)** — an open standard and API platform for product identity, master data, and cross-organization product data exchange. It documents the real, running reference implementation at [`ospi-platform`](https://github.com/BrickeVD/ospi-platform): guides, a full REST API reference, and the architecture decisions behind how the platform is built.
-We are delighted to see our documentation featured on [Docusaurus Site Showcase](https://docusaurus.io/showcase), and hope you like it!
+All content is sourced from the actual `ospi-platform` codebase (controllers, DTOs, ADRs, domain docs) — not invented. Where the platform has an open question or a "not built yet," the docs say so.
### Built With
- [Docusaurus](https://docusaurus.io/)
- [React](https://reactjs.org/)
-- [Tailwind](https://tailwindcss.com/)
+- [Tailwind CSS](https://tailwindcss.com/)
## Getting Started
-This section describes how you can get our documentation portal up and running on your machine.
-
### Prerequisites
-- [node](https://nodejs.org/en/)
-- [npm](https://www.npmjs.com/)
+- [Node.js](https://nodejs.org/en/) ≥ 18
+- npm
### Installation
-1. Clone the repo
-
-```sh
-git clone https://github.com/dyte-io/docs.git
-```
-
-2. Install NPM packages
-
```sh
+git clone https://github.com/BrickeVD/OSPI-APIdocs.git
+cd OSPI-APIdocs
npm install
-```
-
-3. Run the app
-
-```sh
npm start
```
-
+## Content structure
-## Usage
+The site is three separate Docusaurus doc instances, defined in [`docusaurus.config.js`](./docusaurus.config.js):
-
+| Instance | Path | Route | Content |
+| --- | --- | --- | --- |
+| `guides` | `docs/guides` | `/guides` | Introduction, quickstart, authentication, core concepts, errors, idempotency/rate limits, webhooks, roles |
+| `api-reference` | `docs/api-reference` | `/api-reference` | Hand-written domain guides (**Guides**) + a live, generated per-endpoint reference with request/response schemas and a "Try It" console (**Endpoints**) |
+| `architecture` | `docs/architecture` | `/architecture` | Domain model + all 34 Architecture Decision Records, ported from `ospi-platform/docs/adr` |
-### Writing Documentation
+Branding (`src/css/custom.css`, `static/logo/`) uses a placeholder pink wordmark — the real OSPI logo and full brand guidelines were not available at the time this site was built; swap `static/logo/light.svg` and `static/logo/dark.svg` once they are.
-To just edit older documentation, go to the specified versioned folder for a section, for example, you want to edit documentation for React SDK v0.25.x, open up [react_versioned_docs/version-0.25.x](./react_versioned_docs/version-0.25.x) and edit the required files there.
+### Regenerating the API Reference (Endpoints) from the real backend
-To create a new version inside a section, for example, flutter. Make your changes in [docs/flutter](./docs/flutter). The `./docs` folder consists of the `next` version, which is unpublished, and is where you add your newer or _next_ version of documentation.
-
-After your changes are done, to create a version, run the following command:
+The **Endpoints** pages under `/api-reference` are not hand-written — they're generated by
+[`docusaurus-plugin-openapi-docs`](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs) from
+[`openapi/ospi-platform.json`](./openapi/ospi-platform.json), a real OpenAPI 3 document exported from the
+actual [`ospi-platform`](https://github.com/BrickeVD/ospi-platform) NestJS backend's own `SwaggerModule`
+(the same document it serves at `/api/docs-json`), not written by hand. To refresh it after the backend's
+API surface changes:
```sh
-npm run docusaurus docs:version:flutter 1.2.3
-```
-
-This will create a new version `1.2.3` for flutter.
-
-Reference: https://docusaurus.io/docs/versioning
-
-### To add new sections
-
-Create a new section in docusaurus by adding a new plugin entry in [docusaurus.config.js](./docusaurus.config.js).
-
-If you're adding a new section, just add new section to `SECTIONS[]` array with the `defineSection()` utility easily.
-
-Now, run `npm start` and you can access your Go docs at http://localhost:3000/go/introduction
+# In a clone of ospi-platform, with Postgres + Redis reachable per its own README:
+npx ts-node -T scripts/generate-openapi.ts # writes openapi.json (see that script; not committed there)
-Then, you can create versions and edit older versions as mentioned above.
-
-### Adding new docs to the Context Switcher
-
-To add a newly created section to the Sections Menu, edit [./src/sections.js](src/sections.js).
-
-For example, for a section go, you will add:
-
-```jsx
-import { GoIcon } from '../assets/icons';
-
-const SECTIONS = [
- // ...
- {
- id: 'go',
- name: 'Go',
- icon: GoIcon,
- section: false, // if it shouldn't have a sections menu
- },
-];
+# Back in this repo:
+cp path/to/ospi-platform/openapi.json openapi/ospi-platform.json
+npm run gen-api-docs # regenerates docs/api-reference/reference/**
+npm run build # verify
```
-You'll need to create a GoIcon component too.
-
-That is it!
-
-
-
-## Version History
-
-See [CHANGELOG](./CHANGELOG.md).
-
-
-
-## Roadmap
-
-See the [open issues](https://github.com/dyte-io/docs/issues) for a list of proposed features (and known issues).
-
-
+`scripts/generate-openapi.ts` boots the real Nest application (so Postgres/Redis must be reachable) and
+dumps `SwaggerModule.createDocument(...)` to disk instead of calling `app.listen()`. It lives in
+`ospi-platform`, not here — it's a one-off export script for that backend, not a doc-site build step.
## Contributing
-Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. Sincere thanks to all our contributors. Thank you, [contributors](https://github.com/dyte-io/docs/graphs/contributors)!
-
-You are requested to follow the contribution guidelines specified in [CONTRIBUTING.md](./CONTRIBUTING.md) and code of conduct at [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) while contributing to the project :smile:.
-
-## Support
-
-Contributions, issues, and feature requests are welcome!
-Give a ⭐️ if you like this project!
-
-
+See [CONTRIBUTING.md](./CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
## License
Distributed under the Apache License, Version 2.0. See [`LICENSE`](./LICENSE) for more information.
-
-
-
-
-## About
-
-`docs` is created & maintained by Dyte, Inc. You can find us on Twitter - [@dyte_io](https://twitter.com/dyte_io) or write to us at `dev [at] dyte.io`.
-
-The names and logos for Dyte are trademarks of Dyte, Inc.
-
-We love open source software! See [our other projects](https://github.com/dyte-io) and [our products](https://dyte.io).
diff --git a/bin/auto_update_docs.py b/bin/auto_update_docs.py
deleted file mode 100755
index 5f3da545e0..0000000000
--- a/bin/auto_update_docs.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/python
-
-import os
-import requests
-import argparse
-
-class bcolors:
- HEADER = '\033[95m'
- OKBLUE = '\033[94m'
- OKCYAN = '\033[96m'
- OKGREEN = '\033[92m'
- WARNING = '\033[93m'
- FAIL = '\033[91m'
- ENDC = '\033[0m'
- BOLD = '\033[1m'
- UNDERLINE = '\033[4m'
-
-parser = argparse.ArgumentParser()
-parser.add_argument('-o', '--owner', help='Owner of the repo', default='dyte-in')
-parser.add_argument('-r', '--repo', help='Repo to fetch docs from', default='web-core')
-parser.add_argument('-v', '--version', help='Release version to update docs to')
-parser.add_argument('-d', '--destination', help='Destination folder for reference directory', default='docs/web-core')
-
-args = parser.parse_args()
-
-GH_TOKEN = os.environ['GH_TOKEN']
-github_api_url = 'https://api.github.com/repos'
-
-repo = args.repo
-owner = args.owner
-version = args.version
-destination = args.destination
-
-github_headers = {
- 'Authorization': f'token {GH_TOKEN}',
- 'Accept': 'application/vnd.github.v3.raw',
-}
-
-github_latest_release_url = f'{github_api_url}/{owner}/{repo}/releases/latest'
-
-if not version:
- version = requests.get(github_latest_release_url, headers=github_headers).json()['tag_name']
-
-github_release_url = f'{github_api_url}/{owner}/{repo}/releases/tags/{version}'
-docs_zip_url = None
-docs_zip_file = '/tmp/docs.zip'
-unzip_destination = '/tmp'
-
-docs_directory = f'{unzip_destination}/docs'
-reference_directory = f'./{destination}/reference'
-autogenerated_separator = '\n'
-
-github_release_assets = requests.get(github_release_url, headers=github_headers).json()['assets']
-
-for asset in github_release_assets:
- if asset['name'] == 'docs.zip':
- docs_zip_url = f'{github_api_url}/{owner}/{repo}/releases/assets/{asset["id"]}'
-
-github_download_headers = github_headers.copy()
-github_download_headers.update({
- "Accept": "application/octet-stream",
-})
-
-asset_content = requests.get(docs_zip_url, headers=github_download_headers).content
-open(docs_zip_file, 'wb').write(asset_content)
-
-os.system(f'unzip -o {docs_zip_file} -d {unzip_destination}')
-os.unlink(f'{docs_directory}/README.md')
-
-def smart_replace(file_content_arr, docs_content_arr):
- separator_index = file_content_arr.index(autogenerated_separator)
- docs_separator_index = docs_content_arr.index(autogenerated_separator)
-
- file_content_arr = file_content_arr[separator_index:]
-
- print('Replacing content in references:', file)
-
- docs_content_arr = docs_content_arr[:docs_separator_index]
- docs_content_arr += file_content_arr
-
- return docs_content_arr
-
-def header_replace(file_content_arr, docs_content_arr):
- file_header_end_index = file_content_arr.index('---\n', 1)
- docs_header_end_index = docs_content_arr.index('---\n', 1)
-
- file_header = file_content_arr[:file_header_end_index + 1]
- docs_content_arr = file_header + docs_content_arr[docs_header_end_index + 1:]
- return docs_content_arr
-
-status_code = 0
-for file in os.listdir(docs_directory):
- if (not os.path.exists(reference_directory)):
- os.mkdir(reference_directory)
- try:
- print('Parsing file:', file)
- file_content_arr = open(f'{docs_directory}/{file}', 'r').readlines()
- docs_content_arr = file_content_arr
- if os.path.exists(f'{reference_directory}/{file}'):
- docs_content_arr = open(f'{reference_directory}/{file}', 'r').readlines()
-
- if len(docs_content_arr) == 0:
- docs_content_arr = file_content_arr
- else:
- docs_content_arr = smart_replace(file_content_arr, docs_content_arr)
- docs_content_arr = header_replace(file_content_arr, docs_content_arr)
-
- open(f'{reference_directory}/{file}', 'w').write(''.join(docs_content_arr))
-
- except ValueError as e:
- print(f'{bcolors.FAIL}Failed to process file: {file}\n{e}{bcolors.ENDC}')
- status_code = 1
- pass
-
-exit(status_code)
diff --git a/bin/crawl.sh b/bin/crawl.sh
deleted file mode 100755
index 2cb9e2ce3a..0000000000
--- a/bin/crawl.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-docker run --env-file=.env -e "CONFIG=$(cat docsearch.config.json | jq -r tostring)" algolia/docsearch-scraper
diff --git a/bin/ui-kit/clear-components.sh b/bin/ui-kit/clear-components.sh
deleted file mode 100755
index f32274fc5b..0000000000
--- a/bin/ui-kit/clear-components.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-rm docs/react-ui-kit/components/dyte-*
-rm docs/ui-kit/components/dyte-*
-rm docs/angular-ui-kit/components/dyte-*
diff --git a/bin/ui-kit/component-docs.cjs b/bin/ui-kit/component-docs.cjs
deleted file mode 100644
index fbaa8e7322..0000000000
--- a/bin/ui-kit/component-docs.cjs
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env node
-
-const fs = require('fs');
-const { writeMDXFile } = require('./utils.cjs');
-const { pascalCase } = require('pascal-case');
-
-const {
- components,
-} = require('@dytesdk/ui-kit/dist/docs/docs-components.json');
-
-/** @typedef {import('@dytesdk/ui-kit/dist/docs/docs-components').JsonDocsComponent} Component */
-
-const basePaths = {
- core: 'docs/ui-kit/components',
- react: 'docs/react-ui-kit/components',
- angular: 'docs/angular-ui-kit/components',
-};
-
-/**
- *
- * @param {Component} component
- * @param {'core' | 'react' | 'angular' | 'vue'} framework
- * @returns
- */
-function generateFile(component, framework = 'core') {
- const { tag, docs, props, usage } = component;
-
- function getFrontmatter() {
- const path = `/static/ui-kit/1.x.x/components/${tag}.svg`;
- if (fs.existsSync(`static${path}`)) {
- return ['---', `image: ${path}`, '---'];
- }
- return [];
- }
-
- function getTitle() {
- let title = tag;
-
- if (framework === 'react') {
- title = pascalCase(tag);
- }
-
- return title;
- }
-
- function getExample() {
- let docName = 'html-example';
-
- if (framework === 'react') {
- docName = 'react-example';
- } else if (framework === 'angular') {
- docName = 'angular-example';
- } else if (framework === 'vue') {
- docName = 'vue-example';
- }
-
- const exampleCode = usage[docName];
-
- return exampleCode ? [exampleCode, ''] : [];
- }
-
- const text = [
- ...getFrontmatter(),
- '',
- `# ${getTitle()}`,
- '',
- docs,
- '\n',
- ...getExample(),
- ...(props.length > 0 ? [`## Props`, ` `] : []),
- '',
- ]
- .filter((line) => line)
- .join('\n');
-
- return text;
-}
-
-for (const component of components) {
- const { tag } = component;
-
- if (tag.startsWith('dyte-breakout') || tag.startsWith('dyte-ai')) {
- continue;
- }
-
- /** If there is no readme, skip component */
- if (
- (!component || component.docs.trim() === '') &&
- component.tag !== 'dyte-clock'
- ) {
- continue;
- }
-
- /** If there is no usage documentation for any framework, skip component */
- if (component?.usage && Object.keys(component.usage) === 0) {
- continue;
- }
-
- writeMDXFile(`${basePaths.core}/${tag}.mdx`, generateFile(component));
-
- writeMDXFile(
- `${basePaths.react}/${tag}.mdx`,
- generateFile(component, 'react'),
- );
-
- writeMDXFile(
- `${basePaths.angular}/${tag}.mdx`,
- generateFile(component, 'angular'),
- );
-}
diff --git a/bin/ui-kit/utils.cjs b/bin/ui-kit/utils.cjs
deleted file mode 100644
index 7115cf4537..0000000000
--- a/bin/ui-kit/utils.cjs
+++ /dev/null
@@ -1,17 +0,0 @@
-const fs = require('fs');
-const prettier = require('prettier');
-const { prettier: prettierConfig } = require('../../package.json');
-
-/**
- * Writes to a file after text is formatted as MDX
- * @param {string} path
- * @returns
- */
-function writeMDXFile(path, text) {
- return fs.writeFileSync(
- path,
- prettier.format(text, { ...prettierConfig, parser: 'mdx' }),
- );
-}
-
-module.exports = { writeMDXFile };
diff --git a/bin/update-docs b/bin/update-docs
deleted file mode 100755
index 3797886cfd..0000000000
--- a/bin/update-docs
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-GH_TOKEN=$NPM_TOKEN ./bin/auto_update_docs.py -r web-core -d docs/web-core
-# GH_TOKEN=$NPM_TOKEN ./bin/auto_update_docs.py -r web-core -d docs/react-web-core
-# GH_TOKEN=$NPM_TOKEN ./bin/auto_update_docs.py -r web-core -d docs/react-native-core
diff --git a/bin/update-metadata.cjs b/bin/update-metadata.cjs
deleted file mode 100644
index 4866f17bdd..0000000000
--- a/bin/update-metadata.cjs
+++ /dev/null
@@ -1,93 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const grayMatter = require('gray-matter');
-
-const mdxDirectory = path.join(__dirname, 'docs');
-
-const prefixes = {
- 'community-packages': 'Community Packages',
- guides: 'Guide',
- android: 'Android',
- flutter: 'Flutter',
- 'android-core': 'Android Core',
- 'flutter-core': 'Flutter Core',
- 'angular-ui-kit': 'Angular UI Kit',
- 'ui-kit': 'UI Kit',
- 'react-ui-kit': 'React UI Kit',
- cli: 'CLI',
- 'ios-core': 'iOS Core',
- ios: 'iOS',
- 'plugin-sdk': 'Plugin SDK',
- 'rn-core': 'React Native Core',
- 'rn-ui-kit': 'React Native UI Kit',
- 'web-core': 'Web Core',
- 'react-web-core': 'React Web Core',
-};
-
-let count = 0;
-
-for (const section of Object.keys(prefixes)) {
- const sectionDirectory = path.join(mdxDirectory, section);
-
- for (const file of getFiles(sectionDirectory)) {
- if (file.endsWith('.mdx') || file.endsWith('.md')) {
- const filePath = path.join(mdxDirectory, file);
-
- const fileContent = fs.readFileSync(filePath, 'utf8');
-
- const { data, content } = grayMatter(fileContent);
-
- const existingTitle = data.title;
-
- const headingMatch = content.match(/^# (.*)/m);
- if (!headingMatch && !existingTitle) {
- console.log(
- `File ${filePath} does not have an H1 heading. Skipping...`,
- );
- continue;
- }
-
- const title = existingTitle || headingMatch[1];
-
- const prefix = prefixes[section];
-
- let updatedTitle =
- section === 'guides' ? `${title} ${prefix}` : `${prefix} ${title}`;
-
- if (filePath.includes('/components/')) {
- data.description = `Learn how to use and customize the ${title} component in Dyte's ${prefix} with our detailed documentation.`;
- }
-
- const updatedContent = [
- '\n\n',
- `\t${updatedTitle} `,
- '',
- ];
-
- const updatedFileContent = grayMatter.stringify(
- content + updatedContent.join('\n'),
- data,
- );
- fs.writeFileSync(filePath, updatedFileContent);
-
- console.log(`Updated front matter for file ${filePath}`);
- count++;
- }
- }
-}
-
-function getFiles(dir) {
- let results = [];
- for (const file of fs.readdirSync(dir)) {
- const filePath = path.join(dir, file);
- const stat = fs.statSync(filePath);
- if (stat.isDirectory()) {
- results = results.concat(getFiles(filePath));
- } else {
- results.push(path.relative(mdxDirectory, filePath));
- }
- }
- return results;
-}
-
-console.log(`Updated ${count} files.`);
diff --git a/cspell.json b/cspell.json
index 98db702ce8..b2cd8c3a2a 100644
--- a/cspell.json
+++ b/cspell.json
@@ -1,24 +1,5 @@
{
"version": "0.2",
"language": "en-US",
- "words": [
- "dyte",
- "webrtc",
- "proguard",
- "dytesdk",
- "Mbps",
- "livestream",
- "livestreaming",
- "controlbar",
- "prefs",
- "Screenshare",
- "quickstart",
- "ktor",
- "kotlinx",
- "waitlist",
- "webm",
- "releasenotes",
- "waitlisted",
- "htmlui"
- ]
+ "words": ["ospi", "webrtc", "quickstart", "idempotency", "webhooks", "Crockford"]
}
diff --git a/docs/android-core/Introduction.mdx b/docs/android-core/Introduction.mdx
deleted file mode 100644
index 2eddd55d95..0000000000
--- a/docs/android-core/Introduction.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Introduction
-sidebar_position: 4
-sidebar_class_name: module-seperation
----
-
-import ProductSection from '/docs/partials/_product-section.mdx';
-
-# Introduction
-
-The Dyte Core SDK is designed to provide you with an easy way to incorporate live video, voice, livestream and chat capabilities
-into your Android apps. The Core SDK acts as a data-only layer. It provides simple APIs offering high-level primitives and
-abstracting away complex media and networking optimizations.
-
-## Why Core SDK?
-
-The Core SDK was developed with a user-friendly approach to eliminate the complexity of managing streams. Unlike traditional
-SDKs that require knowledge of WebRTC functioning, Dyte's Core SDK provides a simple API that abstracts out the complexity,
-making it easier for developers to use. For instance, enabling video with Dyte's Core SDK is as easy as calling
-`meeting.localUser.enableVideo()`.
-
-## Utility Modules
-
-The Core SDK includes various modules for in-call utilities like chat, polls, and recording that enable building a UI on top of
-it. The following are the core SDK modules:
-
-- **meeting.localUser**: This consists of properties and methods corresponding to the current (local) user, such as enabling or
- disabling their audio and video, getting a list of media devices or changing the device, or sharing your mobile screen.
-- **meeting.participants**: Use this module to get useful information about the other participants that are present in the
- meeting. A host can use this module for access control. For example, the host can mute or kick a participant.
-- **meeting.chat**: It provides the methods to integrate chat features such as sending/receiving text, images, and files.
-- **meeting.polls**: Meetings can have polls. This module lets you perform actions related to polls, that is create and manage
- a poll within a meeting.
-- **meeting.recording**: When a meeting needs to be recorded, this module can be used. It lets you start or stop a recording,
- and get the current status of an ongoing recording.
-- **meeting.meta**: This object consists of all the metadata related to the current meeting, such as the title, the timestamp
- of when it started, and more.
-- **meeting.plugins**: Provides the list of available plugins and active plugins. Use this module to enable or disable plugins as needed.
-
-
- Android Core Introduction
-
diff --git a/docs/android-core/chat/_category_.json b/docs/android-core/chat/_category_.json
deleted file mode 100644
index 50bf23d1b2..0000000000
--- a/docs/android-core/chat/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 8,
- "label": "Chat",
- "collapsible": true
-}
diff --git a/docs/android-core/chat/introduction.mdx b/docs/android-core/chat/introduction.mdx
deleted file mode 100644
index a9afa3a9fc..0000000000
--- a/docs/android-core/chat/introduction.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: Introduction
-description: >-
- Learn the basics of integrating Dyte's chat functionality into your Android
- application – a step towards immersive real-time communication.
-sidebar_position: 1
-tags:
- - android-core
- - chat
----
-
-# Introducing chat
-
-The meeting chat object is stored in `meeting.chat`, which has methods for sending and receiving messages. There are 3 types of messages that can be sent in chat - text messages, images, and files.
-
-The `meeting.chat.messages` array contains all the messages that have been sent
-in the chat. This is an array of objects, where each object is of type
-`DyteChatMessage`.
-
-We support three types of chat messages, they are as follows
-
-- Text Message
-
-```kotlin
-class DyteTextMessage(
- userId: String,
- displayName: String,
- read: Boolean,
- pluginId: String?,
- val message: String,
- time: String,
- createdAtMillis: Long,
- targetUserIds: List?,
-)
-```
-
-- Image Message
-
-```kotlin
-class DyteImageMessage(
- userId: String,
- displayName: String,
- read: Boolean,
- pluginId: String?,
- val link: String,
- time: String,
- createdAtMillis: Long,
- targetUserIds: List?,
-)
-```
-
-- File Message
-
-```kotlin
-class DyteFileMessage(
- userId: String,
- displayName: String,
- read: Boolean,
- pluginId: String?,
- val name: String,
- time: String,
- createdAtMillis: Long,
- val link: String,
- val size: Long,
- targetUserIds: List?,
-)
-```
-
-All above objects are of type `DyteChatMessage` along with their own class
-variables.
-
-
- Android Core Introducing chat
-
diff --git a/docs/android-core/chat/receiving-chat-messages.mdx b/docs/android-core/chat/receiving-chat-messages.mdx
deleted file mode 100644
index 6d2c2e526f..0000000000
--- a/docs/android-core/chat/receiving-chat-messages.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Receiving chat messages
-description: >-
- "Discover how to implement the functionality to receive chat messages in your
- Android app using Dyte
-sidebar_position: 3
-tags:
- - android-core
- - chat
----
-
-# Receiving chat messages
-
-To be able to receive chat messages you need to implement a method
-`onChatUpdates()` method from callback `DyteChatEventsListener`. You can
-subscribe to this events by calling
-`meeting.addChatEventsListener(dyteChatEventsListener)`
-
-```kotlin
-meeting.addChatEventsListener(object :
- DyteChatEventsListener {
- override fun onChatUpdates(messages: List) {
- // to load chat messages
- }
-
- override fun onNewChatMessage(message: DyteChatMessage) {
- // when a new chat message is shared in the meeting
- }
-
- override fun onMessageRateLimitReset() {
- // when the rate limit for sending messages of self is reset
- }
- })
-```
-
-The `onChatUpdates()` method will be called whenever there is a change in the chat messages. The `messages` parameter is a list of `DyteChatMessage` objects that have been sent in the chat.
-
-The `onNewChatMessage()` method will be called whenever a new chat message is shared in the meeting. The `message` parameter is a `DyteChatMessage` object that has been sent in the chat.
-
-The `onMessageRateLimitReset()` method will be called when the rate limit for sending messages of self is reset and you can send messages again. The default rate limit is 180 messages within 60 seconds.
-
-
- Android Core Receiving chat
-
diff --git a/docs/android-core/chat/sending-a-chat-message.mdx b/docs/android-core/chat/sending-a-chat-message.mdx
deleted file mode 100644
index aedbf28a86..0000000000
--- a/docs/android-core/chat/sending-a-chat-message.mdx
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Sending a chat message
-description: >-
- "Master the process of sending chat messages within your Android application
- with Dyte
-sidebar_position: 2
-tags:
- - android-core
- - chat
----
-
-# Sending a chat message
-
-As mentioned in [introduction](./introduction), there are 3 types of chat messages - text messages, images, and files. There is a method in `meeting.chat` to send a message of each type.
-
-## Send a text message
-
-To send a text message, the `meeting.chat.sendTextMessage()` method can be used. This accepts a string `message` and sends it to the room.
-
-```kotlin
-val message = "Is this the real life?"
-meeting.chat.sendTextMessage(message)
-```
-
-## Send an image
-
-You can send an image with the help of `meeting.chat.sendImageMessage()` and
-sends it to the participants in the meeting.
-
-```kotlin
-meeting.chat.sendImageMessage(imageUri) { err ->
- // Handle error if any
-}
-```
-
-## Send a file
-
-Sending a file is quite similar to sending an image. The only difference is that when you send an image, a preview will be shown in the meeting chat, which is not the case for sending files. That being said, an image can be sent as a file too using `meeting.chat.sendFileMessage()`.
-
-```kotlin
-meeting.chat.sendFileMessage(fileUri) { err ->
- // Handle error if any
-}
-```
-
-## Chat Errors
-
-The `sendTextMessage` method returns a `ChatTextError` if the operation fails, `null` if successful. The error can be the following:
-
-- `PermissionDenied`: The user does not have permission to send a message.
-- `MessageIsBlank`: The message is empty.
-- `CharacterLimitExceeded`: The message exceeds the character limit. Default limit is 2000 characters.
-- `RateLimitBreached`: The user has sent too many messages in a short period of time.
-
-Both `sendImageMessage` and `sendFileMessage` methods accept a callback function that will be called with a `ChatFileError` if the operation is not successful, otherwise with `null` if successful.
-
-Possible `ChatFileError`s are:
-
-- `FileFormatNotAllowed`: The file format is not allowed.
-- `PermissionDenied`: The user does not have permission to send a file.
-- `RateLimitBreached`: The user has breached the rate limit for sending messages.
-- `ReadFailed`: The file could not be read.
-- `UploadFailed`: The file could not be uploaded.
-
-A `when` block can be used to handle these errors inside the callback, as shown below:
-
-```kotlin
-when (err) {
- is ChatFileError.FileFormatNotAllowed -> {}
- is ChatFileError.PermissionDenied -> {}
- is ChatFileError.RateLimitBreached -> {}
- is ChatFileError.ReadFailed -> {}
- is ChatFileError.UploadFailed -> {}
- else -> {}
-}
-```
-
-
- Android Core Sending chat
-
diff --git a/docs/android-core/error-codes.mdx b/docs/android-core/error-codes.mdx
deleted file mode 100644
index 84a31d59dd..0000000000
--- a/docs/android-core/error-codes.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: System Error Codes
-sidebar_position: 99
----
-
-:::info Note
-
-This information is intended for developers debugging or troubleshooting Dyte's mobile core system errors.
-
-:::
-
-Error codes are a standardized method for developers to convey application errors and issues to users or other developers in a structured manner. Error codes typically consist of a numerical or alphanumeric code and a description that provides more information about the error.
-
-This document lists Dyte's Android core error codes that you may encounter in various scenarios. System error codes can arise in different parts of the system, and their descriptions may not always provide exact details. To address these codes effectively, you must first understand the programmatic and runtime contexts in which these errors occurred.
-
-## Error codes and format
-
-Error codes consist of a number that are categorized by the type of error and a message that provides more information about the error. The error code format is as follows:
-
-```kotlin
-class DyteError(val code: Int, val message: String)
-```
-
-### Meeting error codes
-
-Meeting error codes are used to indicate errors that occur during meeting operations. These errors are typically returned by the methods of the `meeting` object such as `init()`, `join()`.
-
-- 1000: Invalid auth token.
-- 1002: Failed to initialize meeting.
-- 1003: Invalid base URL.
-- 1005: Failed to join room.
-- 4000: Something went wrong.
-
-
- Android Core System Error Codes
-
diff --git a/docs/android-core/livestream/_category_.json b/docs/android-core/livestream/_category_.json
deleted file mode 100644
index 85f0f0dd39..0000000000
--- a/docs/android-core/livestream/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 10,
- "label": "Livestream",
- "collapsible": true
-}
diff --git a/docs/android-core/livestream/dyte-livestream-listener.mdx b/docs/android-core/livestream/dyte-livestream-listener.mdx
deleted file mode 100644
index d6c09f3b0c..0000000000
--- a/docs/android-core/livestream/dyte-livestream-listener.mdx
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: Livestream Event Listeners
-description: >-
- Explore the functionalities and implementation of the Android Livestream
- Listener in Dyte documentation.
-sidebar_position: 3
-tags:
- - android-core
- - livestream
----
-
-You can listen to livestream events by attaching a listener by calling `addLivestreamEventsListener` on `dyteMobileClient` object where `dyteMobileClient` is an instance of `DyteMobileClient()`.
-
-```kotlin
-val dyteLiveStreamEventsListener = object : DyteLiveStreamEventsListener {
- override fun onLiveStreamStarting() {
- // when livestream is starting
- }
-
- override fun onLiveStreamStarted() {
- // when livestream is started
- }
-
- override fun onLiveStreamEnding() {
- // when livestream is ending
- }
-
- override fun onLiveStreamEnded() {
- // when livestream is ended
- }
-
- override fun onLiveStreamErrored() {
- // errored livestream
- }
-
- override fun onViewerCountUpdated(count: Int) {
- // when viewer count updates in livestream
- }
-
- override fun onStageCountUpdated(count: Int) {
- // when stage count updates in livestream
- }
-
- override fun onStageRequestsUpdated(requests: List) {
- // when there are updates in stage requests
- }
-
- override fun onJoinRequestAccepted(peer: LiveStreamStagePeer) {
- // when localUser's join request is accepted by host
- }
-
- override fun onJoinRequestRejected(peer: LiveStreamStagePeer) {
- // when localUser's join request is rejected by host
- }
-
- override fun onLiveStreamStateUpdate(data: DyteLivestreamData) {
- // when there is an update in state of the livestream
- }
-}
-meeting.addLiveStreamEventsListener(dyteLiveStreamEventsListener)
-```
-
-## Livestream events
-
-### onLiveStreamStarting
-
-This event is triggered when the livestream is about to start.
-
-### onLiveStreamStarted
-
-This event is triggered when the livestream has started.
-
-### onLiveStreamStateUpdate
-
-This event is triggered when the livestream state is updated.
-
-### onViewerCountUpdated
-
-This event is triggered when the viewer count is updated.
-
-### onLiveStreamEnding
-
-This event is triggered when the livestream is about to end.
-
-### onLiveStreamEnded
-
-This event is triggered when the livestream has ended.
-
-### onLiveStreamErrored
-
-This event is triggered when their is an error while starting/stopping the livestream.
-
-### onStageCountUpdated
-
-This event is triggered when the number of users on stage is updated. The `count` object contains the updated stage count.
-
-### onStageRequestsUpdated
-
-This event is triggered when the stage requests are updated. The `requests` object contains the updated list of stage requests.
-
-### onJoinRequestAccepted
-
-This event is triggered when a stage request is accepted. The `peer` object contains the peer whose request is accepted.
-
-```kotlin
- void onJoinRequestAccepted(DyteLiveStreamStagePeer peer) {}
-```
-
-### onJoinRequestRejected
-
-This event is triggered when a stage request is rejected. The `peer` object contains the peer whose request is rejected.
-
-```kotlin
- void onJoinRequestRejected(DyteLiveStreamStagePeer peer) {}
-```
-
-
- Android Core Livestream Event Listeners
-
-
diff --git a/docs/android-core/livestream/dyte-livestream-object.mdx b/docs/android-core/livestream/dyte-livestream-object.mdx
deleted file mode 100644
index 5ec4f9ec19..0000000000
--- a/docs/android-core/livestream/dyte-livestream-object.mdx
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: Livestream Objects and Methods
-description: >-
- Learn about the Android Livestream Object and its usage for effective
- livestream integration in your Android applications.
-sidebar_position: 2
-tags:
- - android-core
- - livestream
----
-
-`DyteLivestream` object obtained by `dyteMobileClient.livestream` method. The objects and methods it contains are defined below.
-
-## Objects
-
-### roomName [*String*]
-
-The name of the room.
-
-### state [*LiveStreamState*]
-
-The current status of the livestream, possible values can be:
-
-- `LiveStreamState.NONE`
-- `LiveStreamState.STARTING`
-- `LiveStreamState.STARTED`
-- `LiveStreamState.STOPPING`
-- `LiveStreamState.STOPPED`
-- `LiveStreamState.ERRORED`
-
-### Stage Requests [List<DyteLiveStreamStageRequestPeer>]
-
-Object accessed via `dyteMobileClient.livestream.stageRequestPeers` contains the list of requests to join the stage. Each request contains 3 properties:
-
-1. `peerId`: The peer ID of the user who requested to join the stage.
-2. `userId`: The user ID of the user who requested to join the stage.
-3. `displayName`: The display name of the user who requested to join the stage.
-
-### liveStreamUrl [String]
-
-List of URL which can be used to consume livestream.
-
-## Host control methods
-
-Dyte's stage management APIs allow hosts to receive and manage stage requests as well as leave and join the stage.
-
-### Accept request
-
-This method lets the host accept a request to join the stage. It takes the _DyteLiveStreamStageRequestPeer.id_ as an argument whose request has to be accepted.
-
-```kotlin
-dyteMobileClient.livestream.acceptRequest(peer.id);
-```
-
-### Reject request
-
-This method lets the host reject a request to join the stage. It takes the _DyteLiveStreamStageRequestPeer.id_ as an argument whose request has to be rejected.
-
-```kotlin
-dyteMobileClient.livestream.rejectRequest(peer.id);
-```
-
-### Accept all requests
-
-This method lets the host accept all the requests to join the stage.
-
-```kotlin
-dyteMobileClient.livestream.acceptAll();
-```
-
-### Reject all requests
-
-This method lets the host reject all the requests to join the stage.
-
-```kotlin
-dyteMobileClient.livestream.rejectAll();
-```
-
-
- Android Core Livestream Objects and Methods
-
-
diff --git a/docs/android-core/livestream/introduction.mdx b/docs/android-core/livestream/introduction.mdx
deleted file mode 100644
index 4b3e1cb83a..0000000000
--- a/docs/android-core/livestream/introduction.mdx
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Introduction
-description: >-
- Get started with Android Livestreaming through this comprehensive introduction
- guide in Dyte Docs.
-sidebar_position: 1
-tags:
- - android-core
- - livestream
----
-
-# Introduction - Livestream
-
-This section will guide you through the process of integrating the livestreaming feature into your product. Using Dyte's live-streaming state management APIs you can easily manage stage requests, such as leave and join stage, manage permissions, kick participants and so on.
-
-The foundation of Dyte's livestreaming is based on a stage, which can be accessed by hosts and viewers. While hosts can directly enter the stage, viewers can request to join it. The stage is broadcasted live to all viewers.
-
-
- Android Core Introduction
-
-
diff --git a/docs/android-core/local-user/_category_.json b/docs/android-core/local-user/_category_.json
deleted file mode 100644
index 2c78a8e824..0000000000
--- a/docs/android-core/local-user/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 6,
- "label": "Local User",
- "collapsible": true
-}
diff --git a/docs/android-core/local-user/events.mdx b/docs/android-core/local-user/events.mdx
deleted file mode 100644
index 2de9d4050e..0000000000
--- a/docs/android-core/local-user/events.mdx
+++ /dev/null
@@ -1,242 +0,0 @@
----
-title: Events
-description: >-
- Understand and manage local user events in your Android application with
- Dyte's documentation on Local User Events.
-sidebar_position: 2
-tags:
- - android-core
- - local-user
- - self
----
-
-## Local User - Events
-
-You can subscribe to various events on the local user by implementing `DyteSelfEventsListener` and passing the object to `meeting.addSelfEventsListener(dyteSelfEventsListener)`.
-
-### Video update
-
-Triggered when the user starts/stops the video using `enableVideo()` or
-`disableVideo()`.
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onVideoUpdate(isEnabled: Boolean) {
- if (isEnabled) {
- // video is enabled, and other participants in room can see local user
- } else {
- // video is disabled, and other participants in room can not see local user.
- }
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onVideoUpdate(boolean isEnabled) {
- if (isEnabled) {
- // video is enabled, and other participants in room can see local user
- } else {
- // video is disabled, and other participants in room can not see local user.
- }
- }
-});
-```
-
-
-
-
-### Audio update
-
-Triggered when the user starts/stops the audio using `enableAudio()` or
-`disableAudio()`.
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onAudioUpdate(isEnabled: Boolean) {
- if (isEnabled) {
- // audio is enabled, and other participants in room can hear local user
- } else {
- // audio is disabled, and other participants in room can not hear local user.
- }
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- override fun onAudioUpdate(boolean isEnabled) {
- if (isEnabled) {
- // audio is enabled, and other participants in room can hear local user
- } else {
- // audio is disabled, and other participants in room can not hear local user.
- }
- }
-});
-```
-
-
-
-
-### Waitlist status
-
-For meetings whose waiting room is enabled:
-
-To get status of localUser in waiting room we can use
-
-
-
-
-```kotlin
-val waitListStatus = meeting.localUser.waitListStatus
-```
-
-
-
-
-
-```java
-WaitListStatus waitListStatus = meeting.localUser.getWaitListStatus();
-```
-
-
-
-
-You can listen to those changes in `onWaitListStatusUpdate()` callbacks
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onWaitListStatusUpdate(waitListStatus: WaitListStatus) {
- // handle waitlist status here
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onWaitListStatusUpdate(WaitListStatus waitListStatus) {
- // handle waitlist status here
- }
-});
-```
-
-
-
-
-### Screenshare callbacks for local user
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onScreenShareStartFailed(reason: String) {
- }
-
- override fun onScreenShareUpdate(isEnabled: Boolean) {
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onScreenShareStartFailed(@NonNull String reason) {
- }
-
- @Override
- public void onScreenShareUpdate(boolean isEnabled) {
- }
-});
-```
-
-
-
-
-### Device permission callbacks once local user is joined in the meeting
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onMeetingRoomJoinedWithoutCameraPermission() {
- }
-
- override fun onMeetingRoomJoinedWithoutMicPermission() {
- }
-})
-```
-
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onMeetingRoomJoinedWithoutCameraPermission() {
- }
-
- @Override
- public void onMeetingRoomJoinedWithoutMicPermission() {
- }
-});
-```
-
-
-
-
-### When local user is kicked out from the meeting by a remote user
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onRemovedFromMeeting() {
- }
-});
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onRemovedFromMeeting() {
- }
-})
-```
-
-
-
diff --git a/docs/android-core/local-user/introduction.mdx b/docs/android-core/local-user/introduction.mdx
deleted file mode 100644
index b8d4bf4d59..0000000000
--- a/docs/android-core/local-user/introduction.mdx
+++ /dev/null
@@ -1,277 +0,0 @@
----
-title: Introduction
-description: >-
- Begin your journey with Dyte by exploring the basics of local user integration
- in Android applications.
-sidebar_position: 1
-tags:
- - android-core
- - local-user
- - self
----
-
-# Introduction - Local User
-
-The local user in the `meeting` object has a set of methods and properties related to media controls. These can be accessed using the identifier `localUser`.
-
-## Properties
-
-Here is a list of properties that local user provides:
-
-- `id`: ID of the local user participant.
-- `name`: Name of the local user.
-- `picture`: Picture URL of the local user.
-- `customParticipantId`: Unique participant ID.
-- `permissions`: Permissions related to various capabilities within a meeting context for the local user.
-- `audioEnabled`: A boolean value that shows whether the audio is currently enabled for the local user.
-- `videoEnabled`: A boolean value that shows whether the video is currently enabled for the local user.
-- `screenshareEnabled`: A boolean value that shows whether the screenshare is currently enabled for the local user.
-- `presetName`: A string value representing name of preset for local user. You can find this preset on Dyte Developer Portal
-- `presetInfo` : A typed object representing the preset information for local user.
-- `roomJoined`: A boolean value representing if local user has joined the room or not.
-- `isCameraPermissionGranted`: A boolean value representing if local user has access to device Camera permission.
-- `isMicrophonePermissionGranted`: A boolean value representing if local user has access to device Microphone permission.
-- `waitListStatus`: Waitlist Status of the local user. It can have four values. None, Waiting, Accepted & Rejected.
-
-## Change default audio/video settings
-
-When local user joins the meeting, the SDK will automatically enable local user's video and audio streams. If you want to change this behavior, use the `audioEnabled` and `videoEnabled` parameters while configuring the meeting.
-
-
-
-
-```kotlin {3,4}
-val meetingInfo = DyteMeetingInfoV2(
- authToken = AUTH_TOKEN,
- audioEnabled = false,
- videoEnabled = true
- )
-```
-
-
-
-
-```java {3,4}
-DyteMeetingInfoV2 meetingInfo = new DyteMeetingInfoV2(
- AUTH_TOKEN,
- false,
- true,
- "dyte.io"
- );
-```
-
-
-
-
-## Get local user video view
-
-To display the `localUser` preview in a view, utilize the `getSelfPreview()` method on `localUser`. This method provides a View that can be added to any `ViewGroup` in Android.
-
-
-
-
-```kotlin
-meeting.localUser.getSelfPreview()
-```
-
-
-
-
-```kotlin
-meeting.localUser.getSelfPreview();
-```
-
-
-
-
-## Update the local user's name
-
-You can change the user's name by using the `setDisplayName` method. However, the name change will be visible to all participants only if it occurs before `joinRoom()` the meeting and after the `init()` process.
-
-
-
-
-```kotlin
-meeting.localUser.setDisplayName("New Name")
-```
-
-
-
-
-```java
-meeting.localUser.setDisplayName("New Name");
-```
-
-
-
-
-## Mute/unmute microphone
-
-Mute/unmute your microphone in the meeting using `disableAudio()` and `enableAudio()` methods, and check the current status with `audioEnabled`.
-
-
-
-
-```kotlin
-// Get current status
-meeting.localUser.audioEnabled
-
-// Mute Audio
-meeting.localUser.disableAudio {}
-
-// Unmute Audio
-meeting.localUser.enableAudio {}
-```
-
-
-
-
-```java
-// Get current status
-meeting.localUser.getAudioEnabled();
-
-// Mute Audio
-meeting.localUser.disableAudio(error -> null);
-
-// Unmute Audio
-meeting.localUser.enableAudio(error -> null);
-```
-
-
-
-
-## Enable/disable camera
-
-Enable/disable your camera in the meeting using `disableVideo()` and `enableVideo()` methods, and check the current status with `videoEnabled`.
-
-
-
-
-```kotlin
-// Get current status
-meeting.localUser.videoEnabled
-
-// Disable Video
-meeting.localUser.disableVideo {}
-
-// Enable Video
-meeting.localUser.enableVideo {}
-```
-
-
-
-
-```java
-// Get current status
-meeting.localUser.getVideoEnabled();
-
-// Disable Video
-meeting.localUser.disableVideo(error -> null);
-
-// Enable Video
-meeting.localUser.enableVideo(error -> null);
-```
-
-
-
-
-## Enable / Disable Screen share
-
-:::tip Note
-To use screenshare on Android devices running Android API 14 and above, you will need to declare the following permission in your app's AndroidManifest.xml.
-
-` `
-
-Adding above permission will require you to do extra steps on Google Play Console while submitting the app. For more information please refer [this](https://support.google.com/googleplay/android-developer/answer/13392821?hl=en#declare).
-:::
-
-
-
-
-```kotlin
-// Get current status
-meeting.localUser.screenShareEnabled
-
-// Enable Screenshare
-meeting.localUser.enableScreenShare()
-
-// Disable Screenshare
-meeting.localUser.disableScreenShare()
-```
-
-
-
-
-```java
-// Get current status
-meeting.localUser.getScreenShareEnabled();
-
-// Enable Screenshare
-meeting.localUser.enableScreenShare();
-
-// Disable Screenshare
-meeting.localUser.disableScreenShare();
-```
-
-
-
-
-## Switch camera between available camera devices
-
-
-
-
-```kotlin
-// get all available video devices
-val devices = meeting.localUser.getVideoDevices()
-
-// switch video device
-meeting.localUser.setVideoDevice(devices[0])
-
-// on devices with only 2 cameras you can use
-meeting.localUser.switchCamera()
-```
-
-
-
-
-```java
-// get all available video devices
-List devices = meeting.localUser.getVideoDevices();
-
-// switch video device
-meeting.localUser.setVideoDevice(devices.get(0));
-
-// on devices with only 2 cameras you can use
-meeting.localUser.switchCamera();
-```
-
-
-
-
-## Switch between available audio devices for audio input/output
-
-
-
-
-```kotlin
-// get all available audio devices
-val devices = meeting.localUser.getAudioDevices()
-
-// switch video device
-meeting.localUser.setAudioDevice(devices[0])
-```
-
-
-
-
-```java
-// get all available video devices
-List devices = meeting.localUser.getAudioDevices();
-
-// switch video device
-meeting.localUser.setAudioDevice(devices.get(0));
-```
-
-
-
diff --git a/docs/android-core/local-user/manage-media-devices.mdx b/docs/android-core/local-user/manage-media-devices.mdx
deleted file mode 100644
index 1e7dd24527..0000000000
--- a/docs/android-core/local-user/manage-media-devices.mdx
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: Manage Media Devices
-description: '"Effectively manage media devices on Android using Dyte''s documentation'
-sidebar_position: 3
-tags:
- - android-core
- - local-user
- - self
- - self events
----
-
-# Manage Media Devices
-
-To get the list of media devices that are currently being used, you can
-use the following methods:
-
-
-
-
-```kotlin
-// Get all audio devices
-val audioDevices: List = meeting.localUser.getAudioDevices()
-
-// Get all video devices
-val videoDevices: List = meeting.localUser.getVideoDevices()
-```
-
-
-
-
-
-```java
-// Get all audio devices
-List audioDevices = meeting.getLocalUser().getAudioDevices();
-
-// Get all video devices
-List videoDevices = meeting.getLocalUser().getVideoDevices();
-```
-
-
-
-
-## Set audio device
-
-To set a device as an active device, you can call `setAudioDevice` method. This
-takes a `DyteAudioDevice` object.
-
-
-
-
-```kotlin
-meeting.localUser.setAudioDevice(device)
-```
-
-
-
-
-
-```kotlin
-meeting.getLocalUser().setAudioDevice(device);
-```
-
-
-
-
-## Set video device
-
-To set a video device as an active device, you can call `setVideoDevice` method.
-This takes a `DyteVideoDevice` object.
-
-
-
-
-```kotlin
-meeting.localUser.setVideoDevice(device)
-```
-
-
-
-
-
-```kotlin
-meeting.getLocalUser().setVideoDevice(device);
-```
-
-
-
-
-
- Android Core Manage Media Devices
-
-
diff --git a/docs/android-core/local-user/manage-permissions.mdx b/docs/android-core/local-user/manage-permissions.mdx
deleted file mode 100644
index b3f70b4435..0000000000
--- a/docs/android-core/local-user/manage-permissions.mdx
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: Media Permissions
-description: >-
- Learn how to manage permissions in your Android application for a secure and
- controlled user experience with Dyte Docs.
-sidebar_position: 4
-tags:
- - android-core
- - local-user
- - self
- - self events
----
-
-# Media Permissions
-
-To get media permissions (audio/video) for localUser we can do as follows
-
-
-
-
-```kotlin
-val isCameraPermissionGranted
- = meeting.localUser.isCameraPermissionGranted
-val isMicrophonePermissionGranted
- = meeting.localUser.isMicrophonePermissionGranted
-```
-
-
-
-
-
-```java
-boolean isCameraPermissionGranted
- = meeting.localUser.isCameraPermissionGranted();
-boolean isMicrophonePermissionGranted
- = meeting.localUser.isMicrophonePermissionGranted();
-```
-
-
-
-
-Similarly to listen to callbacks regarding media permissions once user joins
-the meeting
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onMeetingRoomJoinedWithoutCameraPermission() {
- }
-
- override fun onMeetingRoomJoinedWithoutMicPermission() {
- }
-})
-```
-
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(new : DyteSelfEventsListener() {
- @Override
- public void onMeetingRoomJoinedWithoutCameraPermission() {
- }
-
- @Override
- public void onMeetingRoomJoinedWithoutMicPermission() {
- }
-});
-```
-
-
-
-
-
- Android Core Media Permissions
-
-
diff --git a/docs/android-core/participants/_category_.json b/docs/android-core/participants/_category_.json
deleted file mode 100644
index 1506bb147c..0000000000
--- a/docs/android-core/participants/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Remote Participants",
- "collapsible": true
-}
diff --git a/docs/android-core/participants/events.mdx b/docs/android-core/participants/events.mdx
deleted file mode 100644
index 94fd5a26ed..0000000000
--- a/docs/android-core/participants/events.mdx
+++ /dev/null
@@ -1,476 +0,0 @@
----
-title: Participant Events
-description: >-
- Dive into the details of handling participant events in your Android
- application using Dyte's comprehensive documentation.
-sidebar_position: 3
-tags:
- - android-core
- - participants
- - self
----
-
-## All Participants Events
-
-You can subscribe to events for all participants by implementing
-`DyteParticipantsEventListener` callback and then passing that object to
-`meeting.addParticipantsEventListener(dyteParticipantEventsListener)` method.
-
-Here are the supported methods:
-
-### Participant joined
-
-Triggers an event when any participant joins the meeting.
-
-
-
-
-```kotlin
- private val participantsEventListener = object : DyteParticipantsEventListener {
- override fun onParticipantJoin(participant: DyteRemoteParticipant) {
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onParticipantJoin(DyteRemoteParticipant participant) {
- }
- };
-```
-
-
-
-
-### Participant left
-
-Triggers an event when any participant leaves the meeting.
-
-
-
-
-```kotlin
- private val participantsEventListener = object : DyteParticipantsEventListener {
- override fun onParticipantLeave(participant: DyteRemoteParticipant) {
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onParticipantLeave(DyteRemoteParticipant participant) {
- }
- };
-```
-
-
-
-
-### Participants update
-
-Triggers an event whenever there is any change in the `meeting.participants` object. This includes any updates to participant lists or changes in individual participant within those lists.
-
-
-
-
-```kotlin
- private val participantEventsListener = object : DyteParticipantsEventListener {
- override fun onUpdate(participants: DyteParticipants) {
- // your code here to handle participant update
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onUpdate(DyteParticipants participants) {
- // your code here to handle participant update
- }
- };
-```
-
-
-
-
-### Video update
-
-Triggers an event when any participant starts / stops video.
-
-
-
-
-```kotlin
- private val participantEventsListener = object : DyteParticipantsEventListener {
- override fun onVideoUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean) {
- // your code here to handle participant video toggle update
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onVideoUpdate(DyteRemoteParticipant participant, boolean isEnabled) {
- // your code here to handle participant video toggle update
- }
- };
-```
-
-
-
-
-### Audio update
-
-Triggers an event when any participant starts / stops audio.
-
-
-
-
-```kotlin
- private val participantEventsListener = object : DyteParticipantsEventListener {
- override fun onAudioUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean) {
- // your code here to handle participant audio toggle update
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onAudioUpdate(@NonNull DyteRemoteParticipant participant, boolean isEnabled) {
- // your code here to handle participant audio toggle update
- }
- };
-```
-
-
-
-
-### Screenshare updates
-
-Triggers an event when there is any change in screenshares in a meeting.
-
-
-
-
-```kotlin
- private val participantEventsListener = object : DyteParticipantsEventListener {
- override fun onScreenShareUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean) {
- // your code here to handle screenshares from meeting
- // you can use `meeting.participants.screenshares` to get latest screenshare participants
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onScreenShareUpdate(@NonNull DyteRemoteParticipant participant, boolean isEnabled) {
- // your code here to handle screenshares from meeting
- // you can use `meeting.participants.screenshares` to get latest screenshare participants
- }
- };
-```
-
-
-
-
-### Active speaker
-
-Triggers an event when there is any change in active speaker in the meeting.
-
-
-
-
-```kotlin
- private val participantEventsListener = object : DyteParticipantsEventListener {
- override fun onActiveSpeakerChanged(participant: DyteRemoteParticipant?) {
- // If participant is null, there is no active speaker
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onActiveSpeakerChanged(@Nullable DyteRemoteParticipant participant) {
- // If participant is null, there is no active speaker
- }
- };
-```
-
-
-
-
-### Pinned participant
-
-Triggers an event when there is any change in pinned participant in the meeting.
-
-
-
-
-```kotlin
- private val participantEventsListener = object : DyteParticipantsEventListener {
- override fun onParticipantPinned(participant: DyteRemoteParticipant) {
- }
-
- override fun onParticipantUnpinned(participant: DyteRemoteParticipant) {
- }
- }
-```
-
-
-
-
-
-```kotlin
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onParticipantPinned(DyteRemoteParticipant participant) {
- }
-
- @Override
- public void onParticipantUnpinned(DyteRemoteParticipant participant) {
- }
- };
-```
-
-
-
-
-### Active participants list change
-
-Triggers an event when there is any change in active participants list in the meeting.
-
-
-
-
-```kotlin
- private val participantEventsListener = object : DyteParticipantsEventListener {
- override fun onActiveParticipantsChanged(active: List) {
- }
- }
-```
-
-
-
-
-
-```kotlin
- DyteParticipantsEventListener listener = new DyteParticipantsEventListener() {
- @Override
- public void onActiveParticipantsChanged(List participants) {
- }
- };
-```
-
-
-
-
-## Single Participant Events
-
-You can also subscribe to events for a single participant by implementing `DyteParticipantUpdateListener` callback and then passing that object to `participant.addParticipantUpdateListener(dyteParticipantUpdateListener)` method.
-
-Here are the supported methods:
-
-### Participant update
-
-Triggers an event whenever there is any change in participant.
-
-
-
-
-```kotlin
- private val participantUpdateListener = object : DyteParticipantUpdateListener {
- override fun onUpdate(participant: DyteRemoteParticipant) {
- // your code here to handle participant update
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantUpdateListener participantUpdateListener = new DyteParticipantUpdateListener() {
- @Override
- public void onUpdate(DyteRemoteParticipant participant) {
- // your code here to handle participant update
- }
- }
-```
-
-
-
-
-### Video update
-
-Triggers an event when the participant starts / stops video.
-
-
-
-
-```kotlin
- private val participantUpdateListener = object : DyteParticipantUpdateListener {
- override fun onVideoUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean) {
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantUpdateListener participantUpdateListener = new DyteParticipantUpdateListener() {
- @Override
- public void onVideoUpdate(DyteRemoteParticipant participant, boolean isEnabled) {
- }
- }
-```
-
-
-
-
-### Audio update
-
-Triggers an event when the participant starts / stops audio.
-
-
-
-
-```kotlin
- private val participantUpdateListener = object : DyteParticipantUpdateListener {
- override fun onAudioUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean) {
- // your code here to handle participant audio toggle update
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantUpdateListener participantUpdateListener = new DyteParticipantUpdateListener() {
- @Override
- public void onAudioUpdate(DyteRemoteParticipant participant, boolean isEnabled) {
- // your code here to handle participant audio toggle update
- }
- }
-```
-
-
-
-
-### Pinned & Unpinned participant
-
-Triggers an event when the participant is pinned / unpinned.
-
-
-
-
-```kotlin
- private val participantUpdateListener = object : DyteParticipantUpdateListener {
- override fun onPinned(participant: DyteRemoteParticipant) {
- // your code here to show pinned participant
- }
-
- override fun onUnpinned(participant: DyteRemoteParticipant) {
- // your code here to remove pinned participant
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantUpdateListener participantUpdateListener = new DyteParticipantUpdateListener() {
- @Override
- public void onPinned(DyteRemoteParticipant participant) {
- // your code here to show pinned participant
- }
-
- @Override
- public void onUnpinned(DyteRemoteParticipant participant) {
- // your code here to remove pinned participant
- }
- }
-```
-
-
-
-
-### Screen share started & ended
-
-Triggers an event when the participant starts / stops screen sharing.
-
-
-
-
-```kotlin
- private val participantUpdateListener = object : DyteParticipantUpdateListener {
- override fun onScreenShareStarted(participant: DyteRemoteParticipant) {
- // your code here to handle screen share started
- }
-
- override fun onScreenShareEnded(participant: DyteRemoteParticipant) {
- // your code here to handle screen share ended
- }
- }
-```
-
-
-
-
-
-```java
- DyteParticipantUpdateListener participantUpdateListener = new DyteParticipantUpdateListener() {
- @Override
- public void onScreenShareStarted(DyteRemoteParticipant participant) {
- // your code here to handle screen share started
- }
-
- @Override
- public void onScreenShareEnded(DyteRemoteParticipant participant) {
- // your code here to handle screen share ended
- }
- }
-```
-
-
-
diff --git a/docs/android-core/participants/participant-object.mdx b/docs/android-core/participants/participant-object.mdx
deleted file mode 100644
index 7e73769ece..0000000000
--- a/docs/android-core/participants/participant-object.mdx
+++ /dev/null
@@ -1,214 +0,0 @@
----
-title: Participant Object
-description: The object corresponding to a particular participant.
-sidebar_position: 2
-slug: /participants/participant-object
-tags:
- - android-core
- - participants
----
-
-# The participant object
-
-The data regarding all meeting participants is stored under `meeting.participants`. Use the methods and events to consume the participants data.
-
-The `participant` object consists of all the information related to a particular participant. For instance, it contains a participants video/audio/screenshare stream, and the participant's name. It also contains state variables that indicate whether a participant's camera is on or off, and whether they are muted or unmuted.
-
-The participant object has the following properties.
-
-- `id`: The `participantId` of the participant (aka `peerId`).
-- `userId`: The `userId` of the participant.
-- `name`: The participant's name.
-- `picture`: The participant's picture (if any).
-- `customParticipantId`: An arbitrary ID that can be set to identify the
- participant.
-- `videoEnabled`: Set to true if the participant's camera is on.
-- `audioEnabled`: Set to true if the participant is unmuted.
-- `isPinned`: True if current user is pinned in the meeting room.
-- `presetName`: Name of the preset associated with the participant.
-- `stageStatus`: Status of stage for the participant
-
-## To get video view of a given participant
-
-You can call `participant.getVideoView()` which will return a View which further
-can used to add in any ViewGroup in android.
-
-Similarly one can use `participant.getScreenShareVideoView()` which will return a
-View which further can used to add in any ViewGroup in android.
-
-Similarly, you can also access the pagination related information like follows:
-
-
-
-
-```kotlin
-val maxNumberOnScreen = meeting.participants.maxNumberOnScreen
-val currentPageNumber = meeting.participants.currentPageNumber
-val pageCount = meeting.participants.pageCount
-val canGoNextPage = meeting.participants.canGoNextPage
-val canGoPreviousPage = meeting.participants.canGoPreviousPage
-```
-
-
-
-
-
-```java
-int maxNumberOnScreen = meeting.participants.getMaxNumberOnScreen();
-int currentPageNumber = meeting.participants.getCurrentPageNumber();
-int pageCount = meeting.participants.getPageCount();
-boolean canGoNextPage = meeting.participants.getCanGoNextPage();
-boolean canGoPreviousPage = meeting.participants.getCanGoPreviousPage();
-```
-
-
-
-
-## Move between pages in paginated mode
-
-The `setPage` method allows you to switch between pages of participants present in the meeting.
-
-
-
-
-```kotlin
-// switch to 1st page
-meeting.participants.setPage(1)
-```
-
-
-
-
-
-```java
-// switch to 1st page
-meeting.participants.setPage(1)
-```
-
-
-
-
-## Host Controls
-
-If you (the local user) have the relevant permissions, you can disable a participant's video or audio, or kick them from the meeting.
-
-
-
-
-```kotlin
-val participant = meeting.participants.joined.firstOrNull { it.id == participantId }
-
-participant?.let { pcpt ->
- // To disable a participant's video stream
- pcpt.disableVideo()
-
- // To disable a participant's audio stream
- pcpt.disableAudio()
-
- // To kick a participant from the meeting
- pcpt.kick()
-}
-```
-
-
-
-
-
-```java
-Optional participant = meeting.getParticipants().getJoined()
- .stream()
- .filter(pcpt -> pcpt.getId().equals(participantId))
- .findFirst();
-
-participant.ifPresent(pcpt -> {
- // To disable a participant's video stream
- pcpt.disableVideo();
-
- // To disable a participant's audio stream
- pcpt.disableAudio();
-
- // To kick a participant from the meeting
- pcpt.kick();
-});
-```
-
-
-
-
-You can also `pin` or `unpin` a participant in the meeting. All "pinned"
-participants are added to the `meeting.participants.pinned` list.
-
-
-
-
-```kotlin
-val participant = meeting.participants.joined.firstOrNull { it.id == participantId }
-
-participant?.let { pcpt ->
- // To pin a participant
- pcpt.pin();
-
- // To unpin a participant
- pcpt.unpin();
-}
-```
-
-
-
-
-
-```java
-Optional participant = meeting.getParticipants().getJoined()
- .stream()
- .filter(pcpt -> pcpt.getId().equals(participantId))
- .findFirst();
-
-participant.ifPresent(pcpt -> {
- // To pin a participant
- pcpt.pin();
-
- // To unpin a participant
- pcpt.unpin();
-});
-```
-
-
-
-
-## Broadcast message to all participants
-
-Send a message to all `joined` participants.
-
-_Parameters_:
-
-`type`: A client-specific type to differentiate between custom messages like "emoji" or "greetings"
-
-`payload`: A Map containing the message payload, of type `Map`.
-
-
-
-
-```kotlin
-// broadcast message
-meeting.participants.broadcastMessage(type, payload)
-```
-
-
-
-
-
-```java
-// broadcast message
-meeting.participants.broadcastMessage(type, payload);
-```
-
-
-
-
-
- Android Core The participant object
-
-
diff --git a/docs/android-core/participants/remote-participants.mdx b/docs/android-core/participants/remote-participants.mdx
deleted file mode 100644
index d939e11657..0000000000
--- a/docs/android-core/participants/remote-participants.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: Participant Types
-description: 'Events, methods and data pertaining to meeting participants.'
-sidebar_position: 1
-slug: /participants/
-tags:
- - android-core
- - participants
----
-
-# Participant Types
-
-The data regarding all meeting participants is stored under `meeting.participants`. These **does not** include the local user. Use the methods and events to consume the participants data. For example, to get all the participants who joined the meeting:
-
-
-
-
-```kotlin
-// get all joined participants
-val joined: List = meeting.participants.joined
-
-// get active participants
-val active: List = meeting.participants.active
-```
-
-
-
-
-
-```java
-// get all joined participants
-List joined = meeting.getParticipants().getJoined();
-
-// get active participants
-List active = meeting.getParticipants().getActive();
-```
-
-
-
-
-The `meeting.participants` object has the following **lists** of participants
-
-- **joined**: A list that contains all the participants who are currently in the meeting
- except the local user
-- **waitlisted**: A list that contains all the participants waiting to join the
- meeting.
-- **active**: A list that contains all the participants, **excluding** the local user whose media is subscribed to i.e participants who are supposed to be on the screen at the moment, except the local user.
-- **pinned**: A list that contains all the pinned participants of the meeting.
-- **screenShares**: A list that contains all the participants who are sharing their screen.
-
-Therefore if you were to make a video / audio grid of participants, you'd use the `active` list, but to display the list of all participants in the meeting you'd use the `joined` list.
-
-
- Android Core Participants
-
diff --git a/docs/android-core/participants/waitlisted-participants.mdx b/docs/android-core/participants/waitlisted-participants.mdx
deleted file mode 100644
index c8188f8747..0000000000
--- a/docs/android-core/participants/waitlisted-participants.mdx
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: Waitlisted Participants
-description: 'Events, methods and data to manage waiting room participants.'
-sidebar_position: 4
-tags:
- - android-core
- - participants
- - waitlisted
- - waiting room
----
-
-Participants in the waiting room are represented by `DyteRemoteParticipant` objects. If the local user has the permission to
-accept waiting room requests (`selfPermissions.host.canAcceptRequests` is true), you can manage pending waiting room requests,
-accepting or rejecting them as needed.
-You can access the list of waitlisted participants via the `meeting.participants.waitlisted` property.
-
-**Note**: If the local user is not a host, `meeting.participants.waitlisted` property returns an empty list.
-
-### Accepting Requests
-
-To accept a waiting room request, use the `acceptWaitingRoomRequest(String)` method on a `DyteParticipants` object:
-
-
-
-
-```kotlin
-val waitlistedParticipant = meeting.participants.waitlisted[0]
-meeting.participants.acceptWaitingRoomRequest(waitlistedParticipant.id)
-```
-
-
-
-
-
-```kotlin
-DyteRemoteParticipant waitlistedParticipant = meeting.getParticipants().getWaitlisted().get(0);
-meeting.getParticipants().acceptWaitingRoomRequest(waitlistedParticipant.id);
-```
-
-
-
-
-### Rejecting Requests
-
-To deny a waiting room request, use the `rejectWaitingRoomRequest(String)` method on a `DyteParticipants` object:
-
-
-
-
-```kotlin
-val waitlistedParticipant = meeting.participants.waitlisted[0]
-meeting.participants.rejectWaitingRoomRequest(waitlistedParticipant.id)
-```
-
-
-
-
-
-```java
-DyteRemoteParticipant waitlistedParticipant = meeting.getParticipants().getWaitlisted().get(0);
-meeting.getParticipants().rejectWaitingRoomRequest(waitlistedParticipant.id);
-```
-
-
-
-
-### Waiting Room Events
-
-Implement the `DyteWaitlistEventsListener` interface to listen for events related to the waiting room:
-
-
-
-
-```kotlin
-meeting.addWaitlistEventsListener(object: DyteWaitlistEventsListener {
- override fun onWaitListParticipantJoined(participant: DyteRemoteParticipant) {
- // Triggered when a new participant joins the waiting room
- }
-
- override fun onWaitListParticipantAccepted(participant: DyteRemoteParticipant) {
- // Triggered when a waitlisted participant is accepted into the meeting
- }
-
- override fun onWaitListParticipantRejected(participant: DyteRemoteParticipant) {
- // Triggered when a waitlisted participant is denied entry into the meeting
- }
-
- override fun onWaitListParticipantClosed(participant: DyteRemoteParticipant) {
- // Triggered when a waitlisted participant leaves the waiting room
- }
-})
-```
-
-
-
-
-
-```kotlin
-meeting.addWaitlistEventsListener(new DyteWaitlistEventsListener() {
- @Override
- public void onWaitListParticipantJoined(DyteRemoteParticipant participant) {
- // Triggered when a new participant joins the waiting room
- }
-
- @Override
- public void onWaitListParticipantAccepted(DyteRemoteParticipant participant) {
- // Triggered when a waitlisted participant is accepted into the meeting
- }
-
- @Override
- public void onWaitListParticipantRejected(DyteRemoteParticipant participant) {
- // Triggered when a waitlisted participant is denied entry into the meeting
- }
-
- @Override
- public void onWaitListParticipantClosed(DyteRemoteParticipant participant) {
- // Triggered when a waitlisted participant leaves the waiting room
- }
-})
-```
-
-
-
-
-
- Android Core Waitlisted Participants
-
diff --git a/docs/android-core/plugins/_category_.json b/docs/android-core/plugins/_category_.json
deleted file mode 100644
index 5772922e2f..0000000000
--- a/docs/android-core/plugins/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 8,
- "label": "Plugins",
- "collapsible": true
-}
diff --git a/docs/android-core/plugins/enable-disable-plugin.mdx b/docs/android-core/plugins/enable-disable-plugin.mdx
deleted file mode 100644
index 19fd9ed5ae..0000000000
--- a/docs/android-core/plugins/enable-disable-plugin.mdx
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Functions to enable plugins
-description: Methods on a plugin in a meeting.
-sidebar_position: 2
-tags:
- - android-core
- - plugins
----
-
-## Enable Plugins
-
-Each plugin in `meeting.plugins` object is of type
-[`DytePlugin`](./introduction) and exposes the following functions to enable
-plugins.
-
-### Activate Plugins
-
-The `activate()` method activates a plugin for all users in the meeting. When
-you activate a plugin, it moves into the active plugins list and can be accessed
-from `meeting.plugins.active`.
-
-The snippet below retrieves the first plugin from the list and activates it.
-
-```kotlin
-val plugin: DytePlugin = meeting.plugins.all[0]
-
-plugin.activate()
-```
-
-This directly activates the plugin without any user interaction.
-
-For e.g. you can also show a list of all plugins and activate a plugin on click programmatically.
-
-```kotlin
-val plugins: List = meeting.plugins.all
-
-plugins.forEach { plugin ->
- val button = Button(context)
-
- button.text = "Activate ${plugin.name}"
- button.setOnClickListener {
- plugin.activate()
- }
-
- // Add the button to your view
- view.addView(button)
-}
-```
-
-### Get Plugin View
-
-When a plugin is enabled, the core SDK adds a communication layer between the plugin inside the WebView and
-itself (meeting object). The `getPluginView()` method returns a configured WebView of an active plugin, that can be added to a
-ViewGroup.
-
-```kotlin
-val plugin = meeting.plugins.active[0]
-
-plugin.getPluginView() // This will return a WebView
-```
-
-## Disable Plugins
-
-Each plugin in `meeting.plugins` object is of type
-[`DytePlugin`](./introduction) and exposes the following functions to disable
-plugins.
-
-### Deactivate Plugin
-
-The `deactivate()` method deactivates the plugin for all users in the meeting. When you deactivate a plugin, it moves out of the active plugins list and can only be accessed from `meeting.plugins.all`.
-
-```kotlin
-val plugin = meeting.plugins.active[0]
-
-plugin.deactivate()
-```
-
-
- Android Core Enable-Disable Plugins
-
diff --git a/docs/android-core/plugins/extra.mdx b/docs/android-core/plugins/extra.mdx
deleted file mode 100644
index 840ecc1b9d..0000000000
--- a/docs/android-core/plugins/extra.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Other methods
-description: Methods on a plugin in a meeting.
-sidebar_position: 3
-tags:
- - android-core
- - plugins
----
-
-## Send data to the plugin
-
-You can send data (type `any`) to a plugin using the `sendData()` method. This method comes in handy when building your own plugin.
-
-```kotlin
-val pluginId = '...';
-val plugin = meeting.plugins.active.firstOrNull { it.id == pluginId }
-
-plugin?.let { p ->
- p.sendData(
- eventName = "my-custom-event",
- data = "Hello world"
- )
-}
-```
-
-## Listening to plugin events
-
-You can receive data from a plugin by implementing the `onPluginMessage()` method defined in `DytePluginEventsListener` interface. This method comes in handy when building your own plugin.
-
-```kotlin
-val pluginEventListener = object : DytePluginEventsListener {
- override fun onPluginActivated(plugim: DytePlugin) {
- ...
- }
-
- override fun onPluginDeactivated(plugin: DytePlugin) {
- ...
- }
-
- override onPluginMessage(plugin: DytePlugin, eventName: String, data: Any?) {
- ...
- }
-
- override onPluginFileRequest(plugin: DytePlugin) {
- ...
- }
-}
-
-meeting.addPluginEventsListener(pluginEventListener)
-```
-
-## Upload file to a plugin
-
-You can upload a file to a plugin that supports file uploads using the `uploadFile()` method. This method comes in handy when
-building your own plugin.
-
-```kotlin
-val pluginId = '...';
-val plugin = meeting.plugins.active.firstOrNull { it.id == pluginId }
-
-plugin?.let { p ->
- p.uploadFile(
- DytePluginFile(
- resultCode = 1,
- data = Intent() // Intent with the file data
- )
- )
-}
-```
diff --git a/docs/android-core/plugins/introduction.mdx b/docs/android-core/plugins/introduction.mdx
deleted file mode 100644
index b7fb03aaa8..0000000000
--- a/docs/android-core/plugins/introduction.mdx
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: Introduction
-description: Manage plugins in a meeting.
-sidebar_position: 1
-tags:
- - android-core
- - plugins
----
-
-# Introduction
-
-Plugins are one-click add-ons that can make your meetings more immersive and collaborative. Dyte provides a bunch of inbuilt plugins to choose from, you can also build your own plugins using the [Plugin SDK](../../plugin-sdk/).
-
-The meeting plugins can be accessed from the `meeting.plugins` object, it exposes the following.
-
-| Property | Type | Description |
-| -------- | ---- | -------------------------------------- |
-| active | List | All plugins that are currently in use. |
-| all | List | All plugins the meeting has access to. |
-
-Each plugin in the list is of type `DytePlugin` which has the following public fields and methods:
-
-```kotlin
-class DytePlugin {
- val id: String
- val name: String
- val description: String
- val picture: String
- val isPrivate: Boolean
- val staggered: Boolean
- val baseURL: String
- val config: PluginConfig
- val isActive: Boolean
- val enabledBy: String?
-
- fun activate()
- fun deactivate()
- fun getPluginView(): WebView
- fun uploadFile(file: DytePluginFile)
- fun sendData(eventName: String, data: Any?)
-}
-```
-
-The `PluginConfig` type consists of the following fields:
-
-```kotlin
-data class PluginConfig(
- val accessControl: String = "FULL_ACCESS"
-)
-```
-
-
- Android Core Plugins Introduction
-
diff --git a/docs/android-core/polls/_category_.json b/docs/android-core/polls/_category_.json
deleted file mode 100644
index fe2eed0b04..0000000000
--- a/docs/android-core/polls/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 10,
- "label": "Polls",
- "collapsible": true
-}
diff --git a/docs/android-core/polls/creating-a-poll.mdx b/docs/android-core/polls/creating-a-poll.mdx
deleted file mode 100644
index cccbbd7d3d..0000000000
--- a/docs/android-core/polls/creating-a-poll.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Creating a poll
-description: >-
- Create and manage polls in your Android app using Dyte's documentation on
- Polls Creation.
-sidebar_position: 2
-tags:
- - android-core
- - polls
- - create
----
-
-# Creating a poll
-
-A new poll can be created using the `create` method from the
-[`meeting.polls`](./introduction) object. The `meeting.polls.create()` method
-accepts the following params.
-
-| Param | Type | Default Value | Required | Description |
-| --------- | -------- | ------------- | -------- | ------------------------------------------ |
-| question | string | - | yes | The question that is to be voted for. |
-| options | string[] | - | yes | The options of the poll. |
-| anonymous | boolean | - | no | If true, the poll votes are anonymous. |
-| hideVotes | boolean | - | no | If true, the votes on the poll are hidden. |
-
-The following snippet creates a poll where votes are anonymous.
-
-```kotlin
-meeting.poll.create(
- "Are you an early bird or a night owl?",
- listOf("Early bird", "Night owl"),
- true,
- false
-)
-```
-
-
- Android Core Creating a poll
-
-
diff --git a/docs/android-core/polls/introduction.mdx b/docs/android-core/polls/introduction.mdx
deleted file mode 100644
index be656d6ab6..0000000000
--- a/docs/android-core/polls/introduction.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: Introduction
-description: >-
- Learn the fundamentals of integrating polls into your Android application with
- Dyte's Polls Introduction guide.
-sidebar_position: 1
-tags:
- - android-core
- - polls
----
-
-# Introduction
-
-The meetings polls object can be accessed using `meeting.polls`. It provides
-methods to create polls, vote, and more.
-
-`meeting.polls.polls` returns an array of all polls created in a meeting, where
-each element is an object of type `DytePollMessage`.
-
-```kotlin
-data class DytePollMessage(
- val id: String,
- val question: String,
- val anonymous: Boolean,
- val hideVotes: Boolean,
- val createdBy: String,
- val options: List,
-)
-```
-
-The type `DytePollMessage` represents a poll in a Dyte meeting. It also
-contains list of `DytePollOption` which are options for a given poll. And every
-`DytePollOption` has list of votes inside of it. Votes are objects of class
-`DytePollVote` which internally has id and name of the vote.
-
-```kotlin
-data class DytePollOption(
- val text: String,
- val votes: List,
- val count: Int
-)
-
-data class DytePollVote(
- val id: String,
- val name: String
-)
-```
-
-One can easily create, vote and view polls by listening to callbacks on
-`meeting` object.
-
-## Listening to new polls in a meeting
-
-To be able to receive new poll messages you need to implement a method
-`onPollUpdates()` method from callback `DyteMeetingRoomEventsListener`. You can
-subscribe to this events by calling
-`meeting.addMeetingEventsListener(dyteMeetingRoomEventsListener)`
-
-```kotlin
-meeting.addMeetingRoomEventsListener(object :
- DyteMeetingRoomEventsListener {
- override fun onNewPoll(poll: DytePollMessage) {
- // code to handle new poll
- }
-
- override fun onPollUpdates(pollMessages: List) {
- // code to handle polls and their vote updates.
- }
- })
-```
-
-
- Android Core Polls Introduction
-
diff --git a/docs/android-core/polls/voting-on-a-poll.mdx b/docs/android-core/polls/voting-on-a-poll.mdx
deleted file mode 100644
index 7f72d30e4e..0000000000
--- a/docs/android-core/polls/voting-on-a-poll.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Voting on a poll
-description: >-
- Understand the process of voting on polls within your Android app using Dyte's
- documentation on Polls Voting.
-sidebar_position: 3
-tags:
- - android-core
- - polls
- - votes
----
-
-# Voting on a poll
-
-The `meeting.polls.vote()` method can be used to register a vote on a poll. It
-accepts the following params.
-
-| Param | Type | Default Value | Required | Description |
-| ----------- | --------------- | ------------- | -------- | ---------------------------- |
-| pollMessage | DytePollMessage | - | yes | The poll message to vote on. |
-| pollOption | DytePollOption | - | yes | The option to vote for. |
-
-The following snippet votes for the 1st option on the 1st poll created in the
-meeting.
-
-```kotlin
-val poll: DytePollMessage = meeting.polls.items[0]
-val selectedPollOption: DytePollOption = poll.options[0]
-
-meeting.poll.vote(poll, selectedPollOption)
-```
-
-
- Android Core Voting On a Poll
-
diff --git a/docs/android-core/pre-call/1-media-preview.mdx b/docs/android-core/pre-call/1-media-preview.mdx
deleted file mode 100644
index 3bb76f110f..0000000000
--- a/docs/android-core/pre-call/1-media-preview.mdx
+++ /dev/null
@@ -1,223 +0,0 @@
-# Media Preview
-
-Before joining a meeting, users may want to preview and configure their media devices like camera, microphone, and audio output.
-This section provides developers with the tools to prepare the media environment before joining a Dyte meeting.
-
-If you are using our UI Kits, this functionality can be handled by `DyteSetupFragment` or built with `DyteParticipantTileView`
-and `DyteSettingsFragment` components.
-
-## Properties
-
-- `meeting.localUser.audioEnabled`: A boolean value indicating if the audio is currently enabled.
-- `meeting.localUser.videoEnabled`: A boolean value indicating if the video is currently enabled.
-
-## Methods
-
-### Toggling Media
-
-The same methods used for controlling media during a meeting are also applicable for pre-call media configuration.
-
-**1. Mute/Unmute microphone**
-
-
-
-
-```kotlin
-// Mute Audio
-meeting.localUser.disableAudio {}
-
-// Unmute Audio
-meeting.localUser.enableAudio {}
-```
-
-
-
-
-
-```java
-// Mute Audio
-meeting.localUser.disableAudio(error -> null);
-
-// Unmute Audio
-meeting.localUser.enableAudio(error -> null);
-```
-
-
-
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableAudio()") --> success("Gives onAudioUpdate callback to DyteSelfEventsListener")
-
- class eam basic;
-```
-
-
-
-Anytime there is an update in the audio state of the local user, the Core SDK notifies the client through the `onAudioUpdate` callback
-from `DyteSelfEventsListener`. Here's how you can register the listener:
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onAudioUpdate(isEnabled: Boolean) {
- // Show a visual preview of the audio to the user if enabled
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onAudioUpdate(boolean isEnabled) {
- // Show a visual preview of the audio to the user if enabled
- }
-});
-```
-
-
-
-
-**2. Enable/Disable camera**
-
-
-
-
-```kotlin
-// Disable Video
-meeting.localUser.disableVideo {}
-
-// Enable Video
-meeting.localUser.enableVideo {}
-```
-
-
-
-
-
-```java
-// Disable Video
-meeting.localUser.disableVideo(error -> null);
-
-// Enable Video
-meeting.localUser.enableVideo(error -> null);
-```
-
-
-
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableVideo()") --> success("Gives onVideoUpdate callback to DyteSelfEventsListener")
-
- class eam basic;
-```
-
-
-
-Whenever there is an update in the video state of the local user, the Core SDK notifies the client through the `onVideoUpdate` callback
-from `DyteSelfEventsListener`. Here's how you can register the listener:
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onVideoUpdate(isEnabled: Boolean) {
- // Show local user's VideoView if video is enabled
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onVideoUpdate(boolean isEnabled) {
- // Show local user's VideoView if video is enabled
- }
-});
-```
-
-
-
-
-### Changing Media Device
-
-Media devices represent the hardware for the camera, microphone, and speaker devices. To get the list of media devices currently
-available, use the following methods:
-
-To get the currently selected media device, use the following methods:
-
-
-
-
-```kotlin
-// Get current audio device being used
-val currentAudioDevice = meeting.localUser.getSelectedAudioDevice()
-
-// Get current video device being used
-val currentVideoDevice = meeting.localUser.getSelectedVideoDevice()
-```
-
-
-
-
-
-```java
-// Get current audio device being used
-DyteAudioDevice currentAudioDevice = meeting.localUser.getSelectedAudioDevice();
-
-// Get current video device being used
-DyteVideoDevice currentVideoDevice = meeting.localUser.getSelectedVideoDevice();
-```
-
-
-
-
-Use these methods to create a UI that allows users to configure their media devices. When the user selects a device, use the below methods to set the device.
-
-**Set device**
-
-
-
-
-```kotlin
-// Set audio device
-meeting.localUser.setAudioDevice(device)
-// eg. device = audioDevices[0]
-
-// Set video device
-meeting.localUser.setVideoDevice(device)
-// eg. device = videoDevices[0]
-```
-
-
-
-
-
-```java
-// Set audio device
-meeting.localUser.setAudioDevice(device);
-// eg. device = audioDevices.get(0)
-
-// Set video device
-meeting.localUser.setVideoDevice(device);
-// eg. device = videoDevices.get(0)
-```
-
-
-
diff --git a/docs/android-core/pre-call/2-handling-permissions.mdx b/docs/android-core/pre-call/2-handling-permissions.mdx
deleted file mode 100644
index 34bf967196..0000000000
--- a/docs/android-core/pre-call/2-handling-permissions.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
-# Handling Device Permissions
-
-Before allowing users to interact with their camera and microphone, it's important to check if the necessary permissions are
-granted on their Android device. Dyte's Android Core SDK provides easy-to-use APIs to check the status of these permissions.
-
-### Checking Permissions
-
-Use the following APIs to check if the camera and microphone permissions are granted:
-
-
-
-
-```kotlin
-// Check if CAMERA permission is granted
-val cameraPermissionGranted = meeting.localUser.isCameraPermissionGranted
-
-// Check if RECORD_AUDIO (microphone) permission is granted
-val micPermissionGranted = meeting.localUser.isMicrophonePermissionGranted
-```
-
-
-
-
-
-```java
-// Check if CAMERA permission is granted
-boolean cameraPermissionGranted = meeting.localUser.isCameraPermissionGranted();
-
-// Check if RECORD_AUDIO (microphone) permission is granted
-boolean micPermissionGranted = meeting.localUser.isMicrophonePermissionGranted();
-```
-
-
-
-
-Alternatively, you can also use Android's standard way to check if these permissions are granted:
-
-- `android.permission.CAMERA`
-- `android.permission.RECORD_AUDIO`
-
-Refer to the [Android official documentation](https://developer.android.com/training/permissions/requesting#already-granted)
-for more information on checking permissions.
-
-You can use the permission status to enable or disable camera and microphone buttons in the pre-call UI, or provide visual
-feedback to indicate the availability of these media devices.
-
-### Automatic Permission Request
-
-When the Dyte SDK is initialised, it automatically checks for the required media permissions. If the permissions are not granted,
-the SDK requests them on behalf of the developers.
diff --git a/docs/android-core/pre-call/3-meeting-meta.mdx b/docs/android-core/pre-call/3-meeting-meta.mdx
deleted file mode 100644
index db222ef762..0000000000
--- a/docs/android-core/pre-call/3-meeting-meta.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
-# Meeting Metadata
-
-### Change the name of the user
-
-You can allow the user to edit their name by using the `setDisplayName` method.
-
-
-
-
-```kotlin
-meeting.localUser.setDisplayName("New Name")
-```
-
-
-
-
-
-```java
-meeting.localUser.setDisplayName("New Name");
-```
-
-
-
-
-**Note**: The name change will only be reflected to other participants if this method is called before joining the room.
diff --git a/docs/android-core/pre-call/4-waiting-room.mdx b/docs/android-core/pre-call/4-waiting-room.mdx
deleted file mode 100644
index 2abff87a0c..0000000000
--- a/docs/android-core/pre-call/4-waiting-room.mdx
+++ /dev/null
@@ -1,100 +0,0 @@
-# Waiting Room
-
-When you call `meeting.joinRoom()`, the user either enters the meeting room directly if allowed, or they are placed in the waiting room
-if they are a waitlisted participant.
-
-The diagram illustrates the possible room states the local user can be in.
-
-```mermaid
-stateDiagram-v2
- init --> joined
- init --> waitlisted
- waitlisted --> joined
- waitlisted --> rejected
-```
-
-
-
-### Meeting Room Joined
-
-If user joins the room successfully, you receive the `onMeetingRoomJoinCompleted` callback in `DyteMeetingRoomEventsListener`.
-You can listen for this callback as follows:
-
-
-
-
-```kotlin
-meeting.addMeetingRoomEventsListener(object : DyteMeetingRoomEventsListener {
- override fun onMeetingRoomJoinCompleted(meeting: DyteMobileClient) {
- // Local user is in the meeting
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addMeetingRoomEventsListener(new DyteMeetingRoomEventsListener() {
- @Override
- public void onMeetingRoomJoinCompleted(DyteMobileClient meeting) {
- // Local user is in the meeting
- }
-})
-```
-
-
-
-
-### Waitlisted Participant
-
-If the user is waitlisted, the `onWaitListStatusUpdate` callback in `DyteSelfEventsListener` notifies you of any changes in the
-user's waitlist status. You can check the `waitListStatus` to determine their status:
-
-- `WAITING`: Local user is in the waiting room.
-- `REJECTED`: Local user's join room request is rejected by the host.
-
-
-
-
-```kotlin
-meeting.addSelfEventsListener(object : DyteSelfEventsListener {
- override fun onWaitListStatusUpdate(waitListStatus: WaitListStatus) {
- when (waitListStatus) {
- WAITING -> {
- // Local user is in the waiting room
- }
- REJECTED -> {
- // Local user's join room request was rejected by the host
- }
- else -> { }
- }
- }
-})
-```
-
-
-
-
-
-```java
-meeting.addSelfEventsListener(new DyteSelfEventsListener() {
- @Override
- public void onWaitListStatusUpdate(waitListStatus: WaitListStatus) {
- switch (waitListStatus) {
- case WAITING:
- // Local user is in the waiting room
- break;
- case REJECTED:
- // Local user's join room request was rejected by the host
- break;
- }
- }
-});
-```
-
-
-
-
-Host can use [these methods to accept/reject participants](/android-core/participants/waitlisted-participants).
diff --git a/docs/android-core/pre-call/_category_.json b/docs/android-core/pre-call/_category_.json
deleted file mode 100644
index 23939cdb04..0000000000
--- a/docs/android-core/pre-call/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 3,
- "label": "Pre-call",
- "collapsible": true,
- "className": "pre-call-docs"
-}
diff --git a/docs/android-core/quickstart.mdx b/docs/android-core/quickstart.mdx
deleted file mode 100644
index 207b51730a..0000000000
--- a/docs/android-core/quickstart.mdx
+++ /dev/null
@@ -1,253 +0,0 @@
----
-tags:
- - android-core
- - quickstart
- - setup
-slug: /
-sidebar_position: 2
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-import { MavenLatestInstallation } from '@site/src/components/LatestInstallation';
-
-# Quickstart
-
-This quickstart shows how to use Dyte's core SDKs to add live video and audio to
-your Android applications.
-
-To get started quickly, you can use our sample code. You can clone and run a sample application from the Android Core samples,
-available in both [Kotlin](https://github.com/dyte-io/android-samples/tree/main/samples/android-core-sample-kotlin) and [Java](https://github.com/dyte-io/android-samples/tree/main/samples/android-core-sample-java).
-
-## Objective
-
-You'll learn how to:
-
-- [Install the Dyte SDK](#step-1-install-the-sdk)
-- [Initialize the SDK](#step-2-initialize-the-sdk)
-- [Configure a Dyte meeting](#step-3-configure-a-dyte-meeting)
-- [Initialize the Dyte meeting](#step-4-initialize-the-dyte-meeting)
-- [Go live with your Dyte meeting](#step-5-go-live-with-your-dyte-meeting)
-
-## Before Getting Started
-
-Make sure you've read the [Getting Started with Dyte](/getting-started) topic and completed the following steps:
-
-- Create a [Dyte Developer Account](https://dev.dyte.io/)
-- Create a [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
-- [Add Participant](/api/?v=v2#/operations/add_participant) to the meeting
-- Install [Android Studio](https://developer.android.com/studio)
-
-## Step 1: Install the SDK
-
-To install the SDK, add the `core-android` dependency to your app's `build.gradle` file:
-
-
-
-:::tip Note
-If your app targets lower versions of Android (Android API \<= 24), please enable core desugaring in your app's build.gradle file as follows.
-
-```
-android {
- // other configurations
- compileOptions {
- // other configurations
- isCoreLibraryDesugaringEnabled = true
- }
-}
-
-dependencies {
- // other dependencies
- coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
-}
-```
-
-:::
-
-## Step 2: Initialize the SDK
-
-The `DyteMobileClient` is the main class of the SDK. It is the entry point and
-the only class required to initialize Dyte SDK.
-
-
-
-
-```kotlin
-val dyteClient = DyteMeetingBuilder.build(activity)
-```
-
-
-
-
-
-```java
-DyteMobileClient dyteClient = DyteMeetingBuilder.INSTANCE.build(activity);
-```
-
-
-
-
-## Step 3: Configure a Dyte meeting
-
-Configure the following properties in the `DyteMeetingInfoV2` class. You must pass a valid participant `authToken` obtained from
-the [Add Participant](/api/?v=v2#/operations/add_participant) API.
-
-| Name | Description |
-| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api?v=v2#/operations/add_participant) The API response contains the `authToken`. |
-| `enableAudio` | Set whether to join the meeting with your Mic ON (`true`) or OFF (`false`). |
-| `enableVideo` | Set whether to join the meeting with your Camera ON (`true`) or OFF (`false`). |
-| `baseDomain` | Base domain of the dyte's environment you have created the meeting on. Only required if using a white-labeled domain, defaults to "dyte.io" |
-
-
-
-
-```kotlin
-val meetingInfo =
- DyteMeetingInfoV2(
- authToken = AUTH_TOKEN,
- enableAudio = true,
- enableVideo = true,
- baseDomain = "dyte.io"
- )
-```
-
-
-
-
-
-```java
-DyteMeetingInfoV2 meetingInfo =
- new DyteMeetingInfoV2(
- MeetingConfig.AUTH_TOKEN, // authToken
- true, // enableAudio
- true, // enableVideo
- "dyte.io" // baseUrl
- );
-```
-
-
-
-
-## Step 4: Initialize the Dyte meeting
-
-To initialize the meeting, call the `init()` method on the `dyteClient` object with the `meetingInfo` argument. This establishes
-a connection with the Dyte meeting server.
-
-
-
-
-```kotlin
-dyteClient.init(
- meetingInfo,
- onInitCompleted = {
- },
- onInitFailed = {
- }
-)
-```
-
-
-
-
-
-```java
-dyteClient.init(
- meetingInfo,
- () -> {
- // init complete
- return null;
- },
- () -> {
- // init failed
- return null;
- }
-);
-```
-
-
-
-
-## Step 5: Go live with your Dyte meeting!
-
-Now, you have established the connection with the Dyte meeting server successfully. Next step is to join the room.
-
-### Join the room
-
-To join the meeting room, call `joinRoom()` method on the `dyteClient` instance as shown below.
-
-
-
-
-```kotlin
-dyteClient.joinRoom(
- onSuccess = {
- },
- onFailed = {
- }
-)
-```
-
-
-
-
-
-```java
-dyteClient.joinRoom(
- () -> {
- // join complete
- return null;
- },
- () -> {
- // join failed
- return null;
- }
-);
-```
-
-
-
-
-### Leave the room
-
-Once the meeting is over, you can leave the meeting room.
-
-To leave the meeting room, call `leaveRoom()` method on the `dyteClient` as shown below.
-
-
-
-
-```kotlin
-dyteClient.leaveRoom(
- onSuccess = {
- },
- onFailed = {
- }
-)
-```
-
-
-
-
-```java
-dyteClient.leaveRoom(
- () -> {
- // leave complete
- return null;
- }, () -> {
- // leave failed
- return null;
- }
-);
-```
-
-
-
-
-
- Android Core Quickstart
-
-
diff --git a/docs/android-core/recording.mdx b/docs/android-core/recording.mdx
deleted file mode 100644
index f85a4aad77..0000000000
--- a/docs/android-core/recording.mdx
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: Recording
-description: Control recordings in a meeting.
-sidebar_position: 9
-tags:
- - android-core
- - recording
----
-
-# Recording
-
-The `meeting.recording` object in Dyte's Android Core SDK provides APIs to manage recording within a meeting.
-
-### Recording State
-
-The `meeting.recording.recordingState` property indicates the current state of the recording. Possible states include `IDLE`,
-`STARTING`, `RECORDING`, `PAUSED`, and `STOPPING`.
-
-### Starting a Recording
-
-To start a recording, use the `start()` method of the `meeting.recording` object.
-
-```kotlin
-meeting.recording.start()
-```
-
-### Stopping a Recording
-
-To stop an active recording, use the `stop()` method.
-
-```kotlin
-meeting.recording.stop()
-```
-
-### Pausing a Recording
-
-To temporarily pause a recording, use the `pause()` method.
-
-```kotlin
-meeting.recording.pause()
-```
-
-### Resuming a Recording
-
-To resume a paused recording, use the `resume()` method.
-
-```kotlin
-meeting.recording.resume()
-```
-
-### Listening for Recording Events
-
-To handle recording-related events, implement the `DyteRecordingEventsListener` interface. This interface provides callbacks for
-various recording events:
-
-- `onMeetingRecordingStarted()`: Called when the recording is started or resumed, either by the user or their peer.
-- `onMeetingRecordingEnded()`: Called when the recording is stopped or paused, either by the user or their peer.
-- `onMeetingRecordingStateUpdated(state: DyteRecordingState)`: Notifies when there is a change in the recording state.
-- `onMeetingRecordingStopError(e: Exception)`: Indicates an error occurred while stopping an active recording.
-- `onMeetingRecordingPauseError(e: Exception)`: Indicates an error occurred while pausing an active recording.
-- `onMeetingRecordingResumeError(e: Exception)`: Indicates an error occurred while resuming a paused recording.
-
-```kotlin
-meeting.addRecordingEventsListener(object : DyteRecordingEventsListener {
- override fun onMeetingRecordingStarted() {
- // Handle recording started
- }
-
- override fun onMeetingRecordingEnded() {
- // Handle recording stopped
- }
-
- override fun onMeetingRecordingStateUpdated(state: DyteRecordingState) {
- // Handle recording state update
- }
-
- override fun onMeetingRecordingStopError(e: Exception) {
- // Handle recording stop error
- }
-
- override fun onMeetingRecordingPauseError(e: Exception) {
- // Handle recording pause error
- }
-
- override fun onMeetingRecordingResumeError(e: Exception) {
- // Handle recording resume error
- }
-})
-```
-
-Implement these callbacks to handle recording events and errors appropriately in your application.
-
-
- Android Core Recording
-
diff --git a/docs/android-core/release-notes.mdx b/docs/android-core/release-notes.mdx
deleted file mode 100644
index 5198953d0a..0000000000
--- a/docs/android-core/release-notes.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-sidebar_class_name: releaseSidebarHeading
-tags:
- - android-core
- - releasenotes
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-
-
-
- Android Core Release Notes
-
diff --git a/docs/android-core/room-metadata.mdx b/docs/android-core/room-metadata.mdx
deleted file mode 100644
index daa30c3e5a..0000000000
--- a/docs/android-core/room-metadata.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Room Metadata
-description: All metadata pertaining to a meeting.
-sidebar_position: 11
-tags:
- - android-core
- - room-metadata
----
-
-# Room Metadata
-
-All metadata pertaining to a meeting is stored in `meeting.meta`. This includes:
-
-- `meetingId`: The unique identifier of the meeting.
-- `meetingType`: Indicates the meeting is a group-call or a webinar.
-- `meetingTitle`: The title of the meeting.
-- `meetingStartedTimestamp`: The timestamp when the meeting started.
-- `meetingState`: The state of the meeting of type `DyteMeetingState`.
-- `authToken`: User's authentication token for the meeting.
-- `meetingConfig`: The configuration of the meeting of type `MeetingConfig`.
-
-```kotlin
-enum class DyteMeetingState {
- NotInitialised,
- InitStarted,
- InitCompleted,
- InitFailed
-}
-
-data class MeetingConfig(
- val enableAudio: Boolean,
- val enableVideo: Boolean
-)
-```
-
-For example, if you want to get the title of the meeting the current participant is
-connected to, you can do so by doing:
-
-```kotlin
-val meetingTitle = meeting.meta.meetingTitle
-```
-
-
- Android Core Room Metadata
-
diff --git a/docs/android-core/stage-management/1-introduction.mdx b/docs/android-core/stage-management/1-introduction.mdx
deleted file mode 100644
index baf354c3c4..0000000000
--- a/docs/android-core/stage-management/1-introduction.mdx
+++ /dev/null
@@ -1,114 +0,0 @@
----
-title: Introduction
-description: Stage management in Dyte meetings.
-sidebar_position: 1
-tags:
- - android-core
- - stage
----
-
-_Below documentation is relevant for Interactive Livestream(LHLS) and Webinar(WebRTC) use cases._
-
-Instead of a traditional publish-subscribe model, where a user can publish their media and others can choose to subscribe, Dyte
-comes with an optional managed configuration. In this managed configuration, a less privileged user can be configured with a
-default behavior to not publish media. The user can then request permission to publish their media, which a privileged user can
-choose to grant or deny.
-
-### Accessing the Stage APIs
-
-Dyte's stage management APIs allow users to perform actions such as joining and leaving the stage, managing stage requests and
-permissions, and kicking participants from the stage. These APIs are accessible through the `meeting.stage` object.
-
-### Stage Status
-
-In meetings where stage management is enabled, a user's stage status can change within the values represented by the `StageStatus`
-enum. These status values include:
-
-- `ON_STAGE`: Indicates that the user is currently on the stage and is allowed to publish media.
-- `OFF_STAGE`: Indicates that the user is a viewer and is not on the stage. They can see and listen to those on stage.
-- `REQUESTED_TO_JOIN_STAGE`: Indicates that the user has a pending request to join the stage. This status is assigned to the user
- until the host accepts or rejects their request.
-- `ACCEPTED_TO_JOIN_STAGE`: Indicates that the host has accepted the user's request to join the stage.
-
-The `meeting.stage.stageStatus` property provides the current stage status of the local user.
-
-### Viewers
-
-You can retrieve a list of off-stage participants (viewers) in a stage-enabled meeting by accessing the `meeting.stage.viewers`
-property. This property provides a list of `DyteRemoteParticipant` objects whose stage status is not `ON_STAGE`.
-
-### Joining the Stage
-
-To interact with peers and publish media, users can join the stage. This action is only possible if the user's preset allows them
-to publish media or if their request to join the stage has been accepted by a host (i.e., their stage status is `ACCEPTED_TO_JOIN_STAGE`).
-
-```kotlin
-meeting.stage.join()
-```
-
-### Leaving the Stage
-
-When users want to stop interacting with peers, they can leave the stage. This action stops their media from being published,
-and their audio and video are no longer received by others in the room.
-
-```kotlin
-meeting.stage.leave()
-```
-
-### List of Stage Events
-
-The `DyteStageEventListener` interface provides callback methods for various stage events. Implement these callbacks to handle
-stage-related events in your application:
-
-```kotlin
-meeting.addStageEventListener(object : DyteStageEventListener {
- override fun onStageAccessRequestAccepted() {
- // Called when the local user is accepted to join the stage.
- }
-
- override fun onStageAccessRequestRejected() {
- // Called when the local user's request to join the stage is rejected by the host.
- }
-
- override fun onRemovedFromStage() {
- // Called when the local user is removed from the stage.
- }
-
- override fun onNewStageAccessRequest(participant: DyteRemoteParticipant) {
- // Called when a new stage access request is received from a participant.
- // Triggered only if the local user is a host.
- }
-
- override fun onStageAccessRequestsUpdated(accessRequests: List) {
- // Called when the list of stage access requests is updated.
- // Triggered only if the local user is a host.
- }
-
- override fun onStageStatusUpdated(oldStatus: StageStatus, newStatus: StageStatus) {}
- // Called when the local user's stage status is updated.
- }
-
- override fun onPeerStageStatusUpdated(
- participant: DyteRemoteParticipant,
- oldStatus: StageStatus,
- newStatus: StageStatus,
- ) {
- // Called when a remote participant's stage status is updated.
- }
-})
-```
-
-### Stage Errors
-
-All the stage management APIs return a `StageError` if the operation fails. On success, they return `null`. The error type can be one of the following:
-
-- `StageDisabledForMeetingType`: The meeting type does not support stage management.
-- `PermissionDenied`: The user does not have the required permissions to perform the operation.
-- `ActionInvalidForStageStatus`: The operation is invalid for the current stage status.
-- `NoRequestToCancel`: There is no pending request to cancel.
-
-Next, we'll explore the Stage Management APIs for hosts, allowing them to manage stage requests, participants in Dyte meetings.
-
-
- Android Core Stage Introduction
-
diff --git a/docs/android-core/stage-management/2-host-controls.mdx b/docs/android-core/stage-management/2-host-controls.mdx
deleted file mode 100644
index 14a074d30f..0000000000
--- a/docs/android-core/stage-management/2-host-controls.mdx
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: Stage Host Controls
-description: Stage management APIs for Host in Dyte meetings.
-sidebar_position: 2
-tags:
- - android-core
- - stage
----
-
-In a stage management-enabled meeting, a user with the `permissions.host.canAcceptStageRequests` permission as `true` is
-considered a host. The `meeting.stage` object in Dyte's Android Core SDK provides stage management APIs that allow hosts to
-manage stage access requests, invite participants to the stage, and remove participants from the stage.
-
-### List of Stage Access Requests
-
-You can retrieve the list of pending stage access requests by accessing the `meeting.stage.accessRequests` property. This property
-provides a list of `DyteRemoteParticipant` objects who have requested stage access.
-
-**Note**: If the local user is not a host, this property returns an empty list.
-
-### Grant Access
-
-To accept stage access requests or allow a participant directly to the stage, you can use the `grantAccess()` method.
-
-```kotlin
-// Grants stage access to a participant
-// id: peer id of the stage access requesting participant
-meeting.stage.grantAccess(listOf(id))
-
-// Grants stage access to all pending stage access requests
-meeting.stage.grantAccess(meeting.stage.accessRequests.map { it.userId })
-```
-
-### Deny Access
-
-To reject stage access requests, you can use the `denyAccess()` method.
-
-```kotlin
-// Denies stage access request of a participant
-// id: peer id of the stage access requesting participant
-meeting.stage.denyAccess(listOf(id))
-
-// Denies all pending stage access requests
-meeting.stage.denyAccess(meeting.stage.accessRequests.map { it.userId })
-```
-
-### Kick Users
-
-You can remove a participant from the stage by using the `kick()` method.
-
-```kotlin
-// Kicks a participant from stage
-// id: peer id of the ON_STAGE participant to kick
-meeting.stage.kick(listOf(id))
-```
-
-### Listening to Stage Access Requests
-
-You can listen to incoming stage access requests or changes in the access requests list if you are a host. The SDK provides the
-following callbacks to `DyteStageEventListener`:
-
-```kotlin
-meeting.addStageEventListener(object : DyteStageEventListener {
- override fun onNewStageAccessRequest(participant: DyteRemoteParticipant) {
- // Called when a new stage access request is received from a participant.
- }
-
- override fun onStageAccessRequestsUpdated(accessRequests: List) {
- // Called when the list of stage access requests is updated.
- }
-})
-```
-
-These APIs enable you to manage stage access requests and participants effectively in Dyte meetings. Next, we'll explore the
-Stage APIs available to Viewer participants.
diff --git a/docs/android-core/stage-management/3-viewer-participants.mdx b/docs/android-core/stage-management/3-viewer-participants.mdx
deleted file mode 100644
index 47d567c096..0000000000
--- a/docs/android-core/stage-management/3-viewer-participants.mdx
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Stage Access for Viewers
-description: Stage APIs for Viewers in Dyte meetings.
-sidebar_position: 3
-tags:
- - android-core
- - stage
----
-
-Viewer participants in a stage-enabled meeting are users whose preset permission for media production is set as `CAN_REQUEST`.
-The `meeting.stage` object provides APIs for viewer participants to request stage access and withdraw their join stage request.
-
-### Request Access
-
-To request access to the stage, you can call the `requestAccess()` method:
-
-```kotlin
-meeting.stage.requestAccess()
-```
-
-When a host accepts the user's stage access request or allows the user directly to the stage, the SDK triggers the
-`onStageAccessRequestAccepted` callback and if the host rejects the request, the SDK triggers the `onStageAccessRequestRejected` callback. You can listen to these events by adding a `DyteStageEventListener`:
-
-```kotlin
-meeting.addStageEventListener(object : DyteStageEventListener {
- override fun onStageAccessRequestAccepted() {
- // Host accepted the join stage request or invited user directly to stage
- }
-
- override fun onStageAccessRequestRejected() {
- // Host rejected the join stage request
- }
-})
-```
-
-You can then call the `join()` method to finally join the stage.
-
-**Note**: If the host has directly allowed the user to join the stage and they want to decline, you should use the `leave()` method.
-
-### Cancel Access Request
-
-To cancel or withdraw a pending stage access request, you can call the `cancelRequestAccess()` method:
-
-```kotlin
-meeting.stage.cancelRequestAccess()
-```
diff --git a/docs/android-core/stage-management/_category_.json b/docs/android-core/stage-management/_category_.json
deleted file mode 100644
index 197e839ce2..0000000000
--- a/docs/android-core/stage-management/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 9,
- "label": "Stage Management",
- "collapsible": true
-}
diff --git a/docs/android-core/upgrade-v2/1-introduction.mdx b/docs/android-core/upgrade-v2/1-introduction.mdx
deleted file mode 100644
index 5ee14ea8e1..0000000000
--- a/docs/android-core/upgrade-v2/1-introduction.mdx
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: Introduction
-sidebar_position: 1
-tags:
- - android-core
- - v2
----
-
-With the v2 release of the Dyte Core SDK, we're introducing a major upgrade focused on making the development experience simpler, more consistent, and intuitive. This upgrade introduces breaking changes across four key areas:
-
-### 1. Migration to V2 REST API Terminology
-
-- `meeting.meta.roomName` -> `meeting.meta.meetingId`
-- `DyteMeetingParticipant.clientSpecificId` -> `DyteMeetingParticipant.customParticipantId`
-- Removed `DyteMeetingInfo` (V1)
-
-### 2. Removal of Deprecated APIs
-
-We have removed deprecated methods and properties in favour of improved, uniform, and clearer versions.
-
-- Removed `DyteParticipants.screenshares` (use `DyteParticipants.screenShares`). The deprecated type `DyteScreenShareMeetingParticipant` has also been removed
-- **Chat Methods**: Removed deprecated file and image send methods. The new lambda-based methods take more reliable `Uri`s & return proper errors
- - File message methods:
- - Removed:
- - `sendFileMessage(filePath: String)`
- - `sendFileMessage(filePath: String, fileName: String)`
- - `sendFileMessage(fileUri: Uri)`
- - Use instead:
- - `sendFileMessage(fileUri: Uri, onResult: (ChatFileError?) -> Unit)`
- - Removed:
- - `sendFileMessage(filePath: String, peerIds: List)`
- - `sendFileMessage(fileUri: Uri, peerIds: List)`
- - Use instead:
- - `sendFileMessage(fileUri: Uri, peerIds: List, onResult: (ChatFileError?) -> Unit)`
- - Image message methods:
- - Removed:
- - `sendImageMessage(filePath: String, fileName: String)`
- - `sendImageMessage(imageUri: Uri)`
- - `sendImageMessage(imagePath: String)`
- - Use instead:
- - `sendImageMessage(imageUri: Uri, onResult: (ChatFileError?) -> Unit)`
- - Removed:
- - `sendImageMessage(imagePath: String, peerIds: List)`
- - `sendImageMessage(imageUri: Uri, peerIds: List)`
- - `sendImageMessage(filePath: String, fileName: String, peerIds: List)`
- - Use instead:
- - `sendImageMessage(imageUri: Uri, peerIds: List, onResult: (ChatFileError?) -> Unit)`
-- Removed deprecated listener callbacks:
- - `DyteSelfEventsListener.onStageStatusUpdated`. Use `DyteStageEventListener.onStageStatusUpdated()`
- - `DyteStageEventListener.onPresentRequestAccepted(participant: DyteJoinedMeetingParticipant)`
- - `DyteMeetingRoomEventsListener.onActiveTabUpdate(id: String, tabType: ActiveTabType)`.
- Use `DyteMeetingRoomEventsListener.onActiveTabUpdate(meeting: DyteMobileClient, activeTab: ActiveTab)`
-
-### 3. Revamped Error Handling
-
-- Errors are categorised by modules, such as `ChatError`, `SelfError`, and `MeetingError`
-- All public APIs provide proper errors and additional error data where applicable for better debugging
-- Utilises Kotlin sealed classes for better type safety
-
-### 4. API Structural Changes
-
-We made a few direct breaking changes in our APIs to simplify the types, make methods more intuitive and ensure uniformity across platforms.
-For example, `DyteMeetingParticipant` has been restructured to align with real-world entities.
-
-Learn more about the direct breaking changes and migration instructions on the next page.
diff --git a/docs/android-core/upgrade-v2/2-breaking-changes-migration.mdx b/docs/android-core/upgrade-v2/2-breaking-changes-migration.mdx
deleted file mode 100644
index a12bac8a17..0000000000
--- a/docs/android-core/upgrade-v2/2-breaking-changes-migration.mdx
+++ /dev/null
@@ -1,183 +0,0 @@
----
-title: Breaking Changes and Migration Guide
-sidebar_position: 2
-tags:
- - android-core
- - v2
----
-
-This section provides details about the additional breaking changes made in Dyte Core SDK v2 and provides migration guidance.
-The changes span multiple modules, mainly simplifying the APIs or renaming them to ensure uniformity across the platforms.
-
-### Changes in Participant Hierarchy and Simplified Types
-
-The participant hierarchy has been simplified to align better with real-world entities:
-
-- **Old Structure**:
-
- - `DyteMeetingParticipant` was the parent class with direct subtypes:
- - `DyteJoinedMeetingParticipant`
- - `DyteWaitlistedParticipant`
- - `DyteJoinedMeetingParticipant` had two subtypes:
- - `DyteScreenShareMeetingParticipant`
- - `DyteSelfParticipant` (local user)
-
-- **New Structure**:
-
- - `DyteMeetingParticipant` still represents a participant in a meeting which is simply either:
- - `DyteSelfParticipant` (local user) or
- - `DyteRemoteParticipant` (other participants in the meeting)
-
-- Moved methods for managing waiting room requests to `DyteParticipants`:
- - `DyteWaitlistedParticipant.acceptWaitListedRequest()` -> `DyteParticipants.acceptWaitingRoomRequest(id)`
- - `DyteWaitlistedParticipant.rejectWaitListedRequest()` -> `DyteParticipants.rejectWaitingRoomRequest(id)`
-
-The old participant hierarchy was complex, with certain types representing temporary states or behaviour at runtime.
-The new structure simplifies this by clearly differentiating between the local user and remote participants.
-
-**Migration Instructions**:
-
-- Replace instances of `DyteJoinedMeetingParticipant` with `DyteRemoteParticipant`.
-- Replace any usage of `DyteScreenShareMeetingParticipant` with `DyteMeetingParticipant` or its subtype.
-- `DyteSelfParticipant` is now a direct subtype of `DyteMeetingParticipant`.
-- Update the Waiting Room management logic to use APIs from `DyteParticipants` for accepting/rejecting waiting room requests.
-
-### Changes in DyteMeetingRoomEventsListener Connection State Callbacks
-
-The following connection state callbacks have been removed:
-
-- `onMeetingRoomDisconnected`, `onConnectingToMeetingRoom`, `onConnectedToMeetingRoom`,
- `onDisconnectedFromMeetingRoom`, `onMeetingRoomConnectionFailed`, `onReconnectingToMeetingRoom`,
- `onReconnectedToMeetingRoom`, `onMeetingRoomReconnectionFailed`
-
-These callbacks have been consolidated into a single unified callback:
-`onSocketConnectionUpdate(newState: SocketConnectionState)`
-
-**Migration Instructions**:
-
-- Move all connection state handling, mainly reconnection logic from the old callbacks to `onSocketConnectionUpdate()`.
- The new callback provides a `SocketConnectionState` parameter that represents the current state of the meeting connection.
-
-`DyteMeetingInfoV2.baseUrl` has been renamed to `DyteMeetingInfoV2.baseDomain`. This change is applicable only
-if you are using a white-labeled domain.
-
-### Other Breaking Changes module-wise
-
-#### 1. DyteMobileClient (meeting)
-
-- The following methods now return `MeetingError` in the `onFailure` callback instead of `DyteError`:
- - `init()`, `leaveRoom()`, `release()`
-- Renamed some methods for adding/removing listeners to align with the respective listener names:
- - `addParticipantEventsListener()` -> `addParticipantsEventListener()`
- - `addPollsEventsListener()` -> `addPollsEventListener()`
- - `addStageEventsListener()` -> `addStageEventListener()`
- - `addLivestreamEventListener()` -> `addLivestreamEventListener()`
-- Changes in `DyteMeetingRoomEventsListener` callbacks:
- - Failure callbacks now return standardised `MeetingError` instead of `Exception`:
- - `onMeetingInitFailed(exception: Exception)` -> `onMeetingInitFailed(error: MeetingError)`
- - `onMeetingRoomJoinFailed(exception: Exception)` -> `onMeetingRoomJoinFailed(error: MeetingError)`
- - Relevant callback methods now include `DyteMobileClient` as a parameter, making it easier to access meeting object
- - `onMeetingInitCompleted()` -> `onMeetingInitCompleted(meeting: DyteMobileClient)`
- - `onMeetingRoomJoinCompleted()` -> `onMeetingRoomJoinCompleted(meeting: DyteMobileClient)`
- - `onActiveTabUpdate(activeTab: ActiveTab)` -> `onActiveTabUpdate(meeting: DyteMobileClient, activeTab: ActiveTab)`
-
-#### 2. DyteSelfParticipant (meeting.localUser)
-
-- Renamed the following screen share methods to make the name casing of "ScreenShare" uniform with the rest of the SDK:
- - `enableScreenshare()` -> `enableScreenShare()`
- - `disableScreenshare()` -> `disableScreenShare()`
-- Merged `onScreenShareStarted` & `onScreenShareStopped` into a single callback: `onScreenShareUpdate(isEnabled: Boolean)`
-- Moved `onRoomMessage()` callback from `DyteSelfEventsListener` to `DyteParticipantsEventListener` and renamed it to `onNewBroadcastMessage()`
-- Removed the unused `onProximityChanged(isNear: Boolean)`
-
-**Migration Instructions**:
-
-- Update enable/disable screen share method names
-- Replace the old screen share callbacks with the new `onScreenShareUpdate()` callback
-- Move the broadcast message handling logic to `DyteParticipantsEventListener.onNewBroadcastMessage()` callback
-
-#### 3. DyteParticipants (meeting.participants)
-
-- `meeting.participants` now contains data only related to remote participants, excluding the local user
-- Changes in `DyteParticipantsEventListener` callbacks:
- - Callbacks are now given only for remote participant events. Local user changes are dispatched to `DyteSelfEventsListener`
- - Listener renamed from `DyteParticipantEventsListener` to `DyteParticipantsEventListener`
- - Merged `onScreenShareStarted` & `onScreenShareEnded` into a single callback:
- `onScreenShareUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean)`
- - Removed `onNoActiveSpeaker()`. Now `onActiveSpeakerChanged(participant: DyteRemoteParticipant?)` gets a null value when active participant is cleared
- - Removed unused, uncalled `onScreenSharesUpdated()`, `onSetAsActiveSpeaker()`, & `onRemovedAsActiveSpeaker()`
- - Following callbacks have been tweaked for consistency & clarity:
- - `onAudioUpdate(audioEnabled: Boolean, participant: DyteMeetingParticipant)` -> `onAudioUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean)`
- - `onVideoUpdate(videoEnabled: Boolean, participant: DyteMeetingParticipant)` -> `onVideoUpdate(participant: DyteRemoteParticipant, isEnabled: Boolean)`
- - `onPinned()` -> `onParticipantPinned(participant: DyteRemoteParticipant)`
- - `onUnpinned()` -> `onParticipantUnpinned(participant: DyteRemoteParticipant)`
-
-**Migration Instructions**:
-
-- Ensure that local user-related changes are handled using `DyteSelfEventsListener` instead of `DyteParticipantsEventListener`
-- Update the callback signatures wherever `DyteParticipantsEventListener` is implemented
-
-#### 4. DyteStage APIs (meeting.stage)
-
-- Stage Host Methods:
- - Removed methods `grantAccessAll()` and `denyAccessAll()`
- - `grantAccess()`, `denyAccess()`, and `kick()` now take a list of user IDs, making them more flexible
-- Removed unused `REJECTED_TO_JOIN_STAGE` constant from `StageStatus` enum
-- Removed the `DyteStageStatus` typealias
-- DyteStageEventListener: Callbacks now consistently use the term '_stage_' to align with the **DyteStage** module for better clarity
- - Redundant peer callbacks have been removed to simplify the API. Those events can be inferred as per use-case by
- `onPeerStageStatusUpdated(participant: DyteRemoteParticipant, oldStatus: StageStatus, newStatus: StageStatus)`
- - `onPresentRequestReceived()` -> `onStageAccessRequestAccepted()`
- - `onStageStatusUpdated(stageStatus: DyteStageStatus)` -> `onStageStatusUpdated(oldStatus: StageStatus, newStatus: StageStatus)`
- - `onPresentRequestAdded(participant: DyteJoinedMeetingParticipant)` -> `onNewStageAccessRequest(participant: DyteRemoteParticipant)`
- - `onStageRequestsUpdated(accessRequests: List)` -> `onStageAccessRequestsUpdated(accessRequests: List)`
- - Removed `onAddedToStage()`, it was called when localUser successfully joined the stage, the name didn’t match the scenario
-
-**Migration Instructions**:
-
-- Update the method calls for granting, denying, and kicking stage participants to use lists of user IDs
-- Replace removed/renamed callbacks in `DyteStageEventListener` with the new ones
-
-#### 5. DytePolls APIs (meeting.polls)
-
-- Renamed Classes and Properties
- - `DytePollMessage` -> `DytePoll`
- - `DytePollEventsListener` -> `DytePollsEventListener`
- - `DytePolls.messages` -> `DytePolls.items`
-- `DytePollsEventListener` changes:
- - `onPollUpdates(pollMessages: List)` -> `onPollUpdates(pollItems: List)`
-
-#### 6. DyteRecording APIs (meeting.recording)
-
-- Removed following error callbacks from `DyteRecordingEventsListener` as `DyteRecording` methods now return proper errors:
- - `onMeetingRecordingStopError()`, `onMeetingRecordingPauseError()`, `onMeetingRecordingResumeError()`
-- `onMeetingRecordingStarted()`, `onMeetingRecordingEnded()`, and `onMeetingRecordingStateUpdated()` have been merged into a single callback:
- `onRecordingStateChanged(oldState: DyteRecordingState, newState: DyteRecordingState)`.
-
-**Migration Instructions**
-
-- Remove any references to the deleted error callbacks in your code. Move error handling code to the `onResult` lambda of the recording methods.
-- Replace the separate recording state callbacks with the new unified `onRecordingStateChanged` callback.
-
-#### 7. DyteLivestream APIs (meeting.livestream)
-
-- Changed the term "LiveStream" to "Livestream" throughout the SDK
- - `meeting.liveStream` -> `meeting.livestream`
- - `DyteLiveStream` -> `DyteLivestream`
-- Simplified `LivestreamState` enum to align with the Web SDK
- - **Old States**: `NONE`, `STARTING`, `STARTED`, `STOPPING`, `STOPPED`, `ERRORED`
- - **New States**: `IDLE`, `STARTING`, `STREAMING`, `STOPPING`
-- `DyteLivestream.liveStreamUrl` -> `DyteLivestream.playbackUrl`
-- Changes in `DyteLivestreamEventsListener`:
- - The `DyteLiveStreamEventsListener` has been renamed to `DyteLivestreamEventListener`
- - `onLiveStreamStarting`, `onLiveStreamStarted`, `onLiveStreamEnding`, and `onLiveStreamEnded` have been consolidated into
- `onLivestreamStateChanged(oldState: LivestreamState, newState: LivestreamState)`
- - `onLiveStreamErrored()` -> `onLivestreamError(message: String)`
- - `onLiveStreamStateUpdate(data: DyteLivestreamData)` -> `onLivestreamUpdate(data: DyteLivestreamData)`
- - Removed `onStageCountUpdated(count: Int)`
-
-**Migration Instructions**
-
-- Update all class and property references to replace "LiveStream" with "Livestream"
-- Use the new `LivestreamState` enum values, replacing old state with the new, simplified states
-- Update callbacks in `DyteLivestreamEventListener` to the new versions, ensuring state changes are handled using `onLivestreamStateChanged` and other revised methods
diff --git a/docs/android-core/upgrade-v2/_category_.json b/docs/android-core/upgrade-v2/_category_.json
deleted file mode 100644
index 85fd7d870a..0000000000
--- a/docs/android-core/upgrade-v2/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 2,
- "label": "2.x Upgrade Guide",
- "collapsible": true
-}
diff --git a/docs/android/advanced-usage.mdx b/docs/android/advanced-usage.mdx
deleted file mode 100644
index 047f51a934..0000000000
--- a/docs/android/advanced-usage.mdx
+++ /dev/null
@@ -1,211 +0,0 @@
----
-sidebar_position: 5
-description: >-
- Explore advanced usage scenarios and features in Dyte for Android with our
- detailed documentation.
----
-
-# Advanced usage
-
-## Audio/Video config options while joining meeting.
-
-```kotlin {3,4,8,11}
-val meetingInfo = DyteMeetingInfoV2(
- authToken = state.authToken,
- enableAudio = true,
- enableVideo = true
-)
-val config = DyteUIKitConfig(
- activity = this,
- dyteMeetingInfo = meetingInfo,
-)
-val dyteUIKit = DyteUIKitBuilder.build(config)
-```
-
-## Control the meeting, and take meeting & participant actions
-
-The `Meeting` instance (referenced as `meeting` below) helps you interact with
-the meeting. You can get access to meeting object as follows.
-
-```kotlin
-val meeting = dyteUIKit.meeting
-```
-
-:::tip Note
-Once you have access to `meeting` object you can listen to all events triggered in core-sdk.
-Please read [core docs](/android-core/)
-:::
-
-You can get the UI configuration of the meeting in progress using the
-`designTokens` property of `Meeting`.
-
-```kotlin
-val designTokens = dyteUIKit.designTokens
-```
-
-You can take actions on the meeting as well as the participants. You can also
-setup custom controls to that interact with the meeting in certain ways that
-help you send events and messages across to other participants in the meeting.
-
-## Get info about the meeting's UI configuration
-
-```kotlin
-val colors = designTokens.colors
-val textColors = designTokens.colors.text
-val brandColors = designTokens.colors.brand
-val backgroundColors = designTokens.colors.background
-val videoBackgroundColor = designTokens.colors.videoBackground
-val statusColors = designTokens.colors.status
-```
-
-## Get info about the plugins configured for the meeting
-
-You can get info about the plugins configured for the meeting in progress using
-the `plugins` property of `Meeting`.
-
-```kotlin
-val activePlugins = meeting.plugins.active
-val allPlugins = meeting.plugins.all
-```
-
-## Self controls inside meeting
-
-### Mic control
-
-To turn off the mic
-
-```kotlin
-meeting.localUser.disableAudio()
-```
-
-To turn on the mic
-
-```kotlin
-meeting.localUser.enableAudio()
-```
-
-## Camera control
-
-To turn off the camera
-
-```kotlin
-meeting.localUser.disableVideo()
-```
-
-To turn on the camera
-
-```kotlin
-meeting.localUser.enableVideo()
-```
-
-### Leave meeting
-
-To leave the meeting
-
-```kotlin
-meeting.leaveRoom()
-```
-
-## Get list of all participants in the meeting
-
-You can get a list of all participants in the meeting using the `participants`
-property of `meeting`.
-
-```kotlin
-val participants = meeting.participants
-val active = participants.active
-val joined = participants.joined
-```
-
-For active speaker and pinned participant in the meeting use as follows
-
-```kotlin
-val screenshares = participants.screenshares
-val activeSpeaker = participants.activeSpeaker
-val pinned = participants.pinned
-```
-
-## Controlling individual participants and actions
-
-Dyte client SDK provide methods and properties to help you control participant
-actions and certain UI elements. This could include actions that affect the
-participant themselves as well as other participants (like a host with
-privileged permissions may want to control the video of other participants).
-This section defines all the possible properties and actions that can be taken.
-
-To get hold of participant you want to manage, do as follows
-
-```kotlin
-val participant = meeting.participants.joined.find { it.id = "my_participant_id" }
-```
-
-#### Disable participant's audio stream
-
-To remotely turn the participant's mic off, you can do
-
-```kotlin
-participant.disableAudio()
-```
-
-#### Check if participant's video is on
-
-To check whether a participant's video is on (camera is turned on), you can use
-
-```kotlin
-val video = participant.videoEnabled;
-```
-
-which sets the value of `video` to a boolean specifying if the camera is on or
-not.
-
-#### Get participant video stream
-
-If the participant's video is on, you can get the associated video stream using
-
-```kotlin
-val videoStream = participant.getVideoView()
-```
-
-#### Disable participant's audio stream
-
-To remotely turn the participant's camera off, you can do
-
-```kotlin
-participant.disableVideo()
-```
-
-#### Check if the participant is pinned to the grid
-
-To check whether a participant's video is pinned to the meeting grid; by the
-host, by the user, by the preset, or by any other mechanism; you can use
-
-```kotlin
-val pinned = participant.isPinned;
-```
-
-which sets the value of `pinned` to a boolean specifying whether the video is
-pinned or not.
-
-#### Pin a participant video to the grid
-
-You can pin a participant's video to the grid using
-
-```kotlin
-participant.pin();
-```
-
-#### Unpin a participant video from the grid
-
-You can unpin a participant's video from the grid using
-
-```kotlin
-participant.unpin();
-```
-
-
- Android Advanced usage
-
-
diff --git a/docs/android/build-pre-call-ui/_category_.json b/docs/android/build-pre-call-ui/_category_.json
deleted file mode 100644
index ff59d70cc0..0000000000
--- a/docs/android/build-pre-call-ui/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Pre-call preview UI",
- "collapsible": true
-}
diff --git a/docs/android/build-pre-call-ui/build-your-own/_category_.json b/docs/android/build-pre-call-ui/build-your-own/_category_.json
deleted file mode 100644
index ec59ec7c2d..0000000000
--- a/docs/android/build-pre-call-ui/build-your-own/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Build your own",
- "collapsible": true
-}
diff --git a/docs/android/build-pre-call-ui/build-your-own/add-audio-video-device.mdx b/docs/android/build-pre-call-ui/build-your-own/add-audio-video-device.mdx
deleted file mode 100644
index 6982a22f0c..0000000000
--- a/docs/android/build-pre-call-ui/build-your-own/add-audio-video-device.mdx
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: Audio/video - Device Selection
-sidebar_position: 4
----
-
-To let the user choose between multiple available input / output devices, you can use the `DyteSettingsFragment` or `DyteSettingsBottomsheet` component
-
-```kotlin
-val dyteSettingsFragment = DyteSettingsFragment()
-dyteSettingsFragment.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-## for video device Selection
-
-You can access list of video devices like `meeting.localUser.getVideoDevices()` and selected video device can be accessed with `meeting.localUser.getSelectedVideoDevice()`
-
-To render the video device selection you can use following code
-
-```xml
-
-```
-
-and on the kotlin side
-
-```kotlin
-val videoDevices = meeting.localUser.getVideoDevices()
-val videoAdapter = ArrayAdapter(
- requireContext(),
- R.layout.dyte_spinner_item,
- videoDevices.map { it.type.displayName },
- )
-videoAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
-val selectedVideoDevice = meeting.localUser.getSelectedVideoDevice()
-val selectedPosition = videoDevices.indexOfFirst { it.type == selectedVideoDevice?.type }
-videoDeviceSpinner.adapter = videoAdapter
-videoDeviceSpinner.onItemSelectedListener =
- object : OnItemSelectedListener {
- override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
- val device = videoDevices[position]
- meeting.localUser.setVideoDevice(device)
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
- // no-op
- }
- }
-videoDeviceSpinner.setSelection(selectedPosition, false)
-```
-
-## for audio device Selection
-
-You can access list of audio devices like `meeting.localUser.getAudioDevices()` and selected audio device can be accessed with `meeting.localUser.getSelectedAudioDevice()`
-
-To render the audio device selection you can use following code
-
-```xml
-
-```
-
-and on the kotlin side
-
-```kotlin
-val audioDevices = meeting.localUser.getAudioDevices()
-val audioAdapter = ArrayAdapter(
- requireContext(),
- R.layout.dyte_spinner_item,
- audioDevices.map { it.type.displayName },
- )
-audioAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
-val selectedAudioDevice = meeting.localUser.getSelectedAudioDevice()
-val selectedPosition = audioDevices.indexOfFirst { it.type == selectedAudioDevice?.type }
-audioDeviceSpinner.adapter = audioAdapter
-audioDeviceSpinner.onItemSelectedListener =
- object : OnItemSelectedListener {
- override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
- val device = audioDevices[position]
- meeting.localUser.setAudioDevice(device)
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
- // no-op
- }
- }
-audioDeviceSpinner.setSelection(selectedPosition, false)
-```
diff --git a/docs/android/build-pre-call-ui/build-your-own/add-audio-video-preview.mdx b/docs/android/build-pre-call-ui/build-your-own/add-audio-video-preview.mdx
deleted file mode 100644
index fe747c3bfd..0000000000
--- a/docs/android/build-pre-call-ui/build-your-own/add-audio-video-preview.mdx
+++ /dev/null
@@ -1,93 +0,0 @@
----
-title: Audio/video - Preview
-sidebar_position: 3
----
-
-import CodeRunner from '@site/src/components/CodeRunner/CodeRunner';
-
-For building audio/video preview
-
-### Permissions
-
-- For AUDIO - The value of `meeting.self.permissions.canProduceAudio` needs to be `ALLOWED`
-- For VIDEO - The value of `meeting.self.permissions.canProduceVideo` needs to be `ALLOWED`
-
-In the preset editor, toggle these settings under `Media`.
-
-### Media Preview and Controls
-
-We'll be using `DyteParticipantTileView`, `DyteInputField` for building a preview tile and
-`DyteMicToggleButton`, `DyteCameraToggleButton` for media controls
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-And on the kolin side we bind the newly added element like follows:
-
-```kotlin
-private lateinit var selfParticipantTileView: DyteParticipantTileView
-private lateinit var cameraToggleButton: DyteCameraToggleButton
-private lateinit var micToggleButton: DyteMicToggleButton
-
-override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- selfParticipantTileView = view.findViewById(R.id.dyteparticipanttileview_setup_screen)
- cameraToggleButton = view.findViewById(R.id.dytecameratoggle_setup_screen)
- micToggleButton = view.findViewById(R.id.dytemictoggle_setup_screen)
-
- selfParticipantTileView.activateForSelfPreview(meeting.localUser)
- micToggleButton.activate(meeting)
- cameraToggleButton.activate(meeting)
-}
-```
-
-
diff --git a/docs/android/build-pre-call-ui/build-your-own/edit-user-name.mdx b/docs/android/build-pre-call-ui/build-your-own/edit-user-name.mdx
deleted file mode 100644
index 3c6ec04805..0000000000
--- a/docs/android/build-pre-call-ui/build-your-own/edit-user-name.mdx
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: Edit user name
-sidebar_position: 2
----
-
-A common use case of pre-call UI is to give the user a option to set / edit their name.
-
-### Permissions
-
-Requires `meeting.localUser.permissions.miscellaneous.canEditDisplayName` to be `true`
-
-In the preset editor, ensure `Miscellaneous > Edit Name` is toggled enabled.
-
-
-
-### File: CustomMeetingPreview.tsx
-
-We add a `` element for entering the participant name. We should not show this input if the user doese not have permission to edit name (`meeting.localUser.permissions.miscellaneous.canEditDisplayName`)
-
-```xml {15, 21}
-
-
-
-
-
-
-
-
-
-
-```
-
-And on the kolin side we bind the newly added element like follows:
-
-```kotlin
-nameAtom.addTextChangedListener(
- object : TextWatcher {
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
- // no-op
- }
-
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
- // no-op
- }
-
- override fun afterTextChanged(s: Editable?) {
- meeting.self.setDisplayName(s?.toString())
- }
- }
-)
-```
-
-`meeting.self.setDisplayName(participantName)` sets the new name for the participant.
-
-At the end, we let user join the meeting using `meeting.join();`.
diff --git a/docs/android/build-pre-call-ui/build-your-own/initial-code-skeleton.mdx b/docs/android/build-pre-call-ui/build-your-own/initial-code-skeleton.mdx
deleted file mode 100644
index 21fe3c7908..0000000000
--- a/docs/android/build-pre-call-ui/build-your-own/initial-code-skeleton.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Basic structure
-sidebar_position: 1
----
-
-## What are we building?
-
-We are deconstructing the default setup screen.
-
-At the end of this group of docs, we should have the following screen built using low level components.
-
-
-
-Let's put a basic skeleton and the initial boilerplate code.
-
-Barebone xml needed to redner ui for self name and a button to join the meeting will look as follow:
-
-```xml
-
-
-
-
-
-
-
-
-```
-
-Now inside your `setup_fragment.kt` file you'll need to bind xml elements with kotlin objects, to do that:
-
-```kotlin
-private lateinit var joinButton: DyteJoinButton
-private lateinit var selfNameDyteLabel: DyteLabel
-
-override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- joinButton.activate(meeting)
- selfNameDyteLabel.text = meeting.localUser.name
-}
-```
-
-This should give you output as following
-
-
diff --git a/docs/android/build-pre-call-ui/default-setup-screen.mdx b/docs/android/build-pre-call-ui/default-setup-screen.mdx
deleted file mode 100644
index 84e472ffd1..0000000000
--- a/docs/android/build-pre-call-ui/default-setup-screen.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: DyteSetupScreen
-sidebar_position: 4
----
-
-Dyte provides a default pre-call preview UI, also known as setup screen as part of our UI components.
-
-To use the default pre-built setup screen you can use `DyteSetupFragment` from our components.
-
-```kotlin
-fragmentManager
- .beginTransaction()
- .add(id.fragmentContainer, DyteSetupFragment(), "TAG")
- .commit()
-```
-
-If you want to break down the above for a custom UI but still want to reuse the default setup screen, use the following component.
-
-If you want to build a custom pre-call UI, let's go to the next page to start building one.
diff --git a/docs/android/chat/_category_.json b/docs/android/chat/_category_.json
deleted file mode 100644
index fce8ca11dd..0000000000
--- a/docs/android/chat/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Chat",
- "collapsible": true
-}
diff --git a/docs/android/chat/prebuilt-screen.mdx b/docs/android/chat/prebuilt-screen.mdx
deleted file mode 100644
index a6a8f8794f..0000000000
--- a/docs/android/chat/prebuilt-screen.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-sidebar_position: 1
-title: Prebuilt Chat Screen
----
-
-## Introduction to Chat in Dyte Meetings
-
-In Dyte meetings, participants can also engage in real-time communication by sending chat messages.
-These messages can be text, images, or files, depending on the [chat permissions](/guides/livestream/advanced/configuring-permissions#chat)
-set in their preset.
-
-## Dyte's Prebuilt Chat Screen
-
-Dyte's Android UI Kit includes prebuilt Chat screen that handle the complete chat logic and offer
-a range of features to enhance the chat experience in Dyte meetings:
-
-- **Display Messages**: Displays all chat messages, including text, images, and files, in a clear and organized manner
-- **Image Preview**: Allows users to tap on an image message to view it in full screen
-- **File Download**: Enables users to download files sent in chat messages with a simple tap
-- **Message Composer**: Provides a user-friendly interface for composing messages, supporting text,
- image, and file messages. It automatically adjusts the UI based on the user's chat permissions,
- hiding or disabling options that are not permitted
-- **Auto-Scroll**: Auto-scrolls to new messages as they are received but stops auto-scrolling if the user
- has scrolled up to read an old message
-- **Device Permissions**: Handles device permissions elegantly on all supported Android versions for sending images, files,
- and downloading files to the device. This saves developers effort, allowing them to focus on building their apps
-
-
-
-
-
-
-
-
-## Using Dyte's Chat screen
-
-Dyte's prebuilt Chat screen comes in two variants:
-
-1. **DyteChatBottomSheet**: Displays the chat UI as a full-screen bottom sheet that can be dismissed by swiping down.
-
-```kotlin
-import dyte.io.uikit.screens.chat.DyteChatBottomSheet
-
-val dyteChatBottomSheet = DyteChatBottomSheet()
-dyteChatBottomSheet.show(childFragmentManager, TAG)
-```
-
-2. **DyteChatFragment**: Shows the chat UI inside an Android Fragment, providing the flexibility to display the chat UI
- full screen or as a part of the screen with other UI elements.
-
-```xml
-
-
-```
-
-```kotlin
-import dyte.io.uikit.screens.chat.DyteChatFragment
-
-val dyteChatFragment = DyteChatFragment()
-supportFragmentManager.beginTransaction()
- .replace(R.id.fragment_container_view, dyteChatFragment, TAG)
- .commit()
-```
-
-## Wrap-Up
-
-By integrating Dyte's prebuilt Chat screens into your app, you can enhance the communication experience for users
-during Dyte meetings.
diff --git a/docs/android/components/_category_.json b/docs/android/components/_category_.json
deleted file mode 100644
index d51fe60e5d..0000000000
--- a/docs/android/components/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 10,
- "label": "Components",
- "collapsible": true
-}
diff --git a/docs/android/components/dyte-audio-selector.mdx b/docs/android/components/dyte-audio-selector.mdx
deleted file mode 100644
index 27f665661e..0000000000
--- a/docs/android/components/dyte-audio-selector.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
-# DyteAudioDeviceSelector
-
-An audio device selector component which can be used to select audio devices.
-
-To use this component inside an xml use following syntax:
-
-```xml
-
- />
-```
-
-It should look like the following when rendered on the screen:
-
-
-
-Device can be changed by clicking on the dropdown and selecting the desired device.
diff --git a/docs/android/components/dyte-audio-visualizer.mdx b/docs/android/components/dyte-audio-visualizer.mdx
deleted file mode 100644
index a418d94cee..0000000000
--- a/docs/android/components/dyte-audio-visualizer.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-audio-visualizer.svg
-description: >-
- Learn how to use and customize the DyteParticipantAudioIndicator component in
- Dyte's Android with our detailed documentation.
----
-
-# DyteParticipantAudioIndicator
-
-An audio visualizer component which visualizes a participants audio.
-
-To use this component inside an xml use following syntax
-
-```xml
-
- />
-```
-
-Inside kotlin/Java code you need to pass objtec of `DyteMeetingParticipant` to render their audio status.
-
-```kotlin
-val audioIndicator = findViewById(R.id.audio_indicator)
-audioIndicator.activate(participant)
-```
-
-
- Android DyteParticipantAudioIndicator
-
diff --git a/docs/android/components/dyte-avatar.mdx b/docs/android/components/dyte-avatar.mdx
deleted file mode 100644
index 096355d393..0000000000
--- a/docs/android/components/dyte-avatar.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteAvatarView component in Dyte's Android
- with our detailed documentation.
----
-
-# DyteAvatarView
-
-Avatar component which renders a participant's image or their initials.
-
-```xml
-
-```
-
-And to setup DyteAvatarView inside your kotlin/Java code use as follow:
-
-```kotlin
-val avatarView = findViewById(R.id.dyteavatarview_dyte_participant_tile)
-avatarView.activate(participant)
-```
-
-
- Android DyteAvatarView
-
diff --git a/docs/android/components/dyte-button.mdx b/docs/android/components/dyte-button.mdx
deleted file mode 100644
index 7732cd9395..0000000000
--- a/docs/android/components/dyte-button.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-button.svg
-description: >-
- Learn how to use and customize the DyteButton component in Dyte's Android with
- our detailed documentation.
----
-
-# DyteButton
-
-A button that follows Dyte's Design System.
-
-```xml
-
-```
-
-## Button variants
-
-There are 3 variants supported, can be set using xml.
-
-```xml
-app:dyte_btn_variant="danger"
-app:dyte_btn_variant="primary"
-app:dyte_btn_variant="secondary"
-```
-
-
- Android DyteButton
-
diff --git a/docs/android/components/dyte-camera-toggle.mdx b/docs/android/components/dyte-camera-toggle.mdx
deleted file mode 100644
index 77b8dc82ae..0000000000
--- a/docs/android/components/dyte-camera-toggle.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteCameraToggle component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteCameraToggle
-
-A button which toggles your camera.
-
-```xml
-
-```
-
-To setup the button inside kotlin/Java code do as follows
-
-```kotlin
-val cameraToggleButton = findViewById(R.id.btn_camera_toggle)
-cameraToggleButton.activate(meeting)
-```
-
-
- Android DyteCameraToggle
-
diff --git a/docs/android/components/dyte-chat.mdx b/docs/android/components/dyte-chat.mdx
deleted file mode 100644
index 8c8b1a180b..0000000000
--- a/docs/android/components/dyte-chat.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-chat.svg
-description: >-
- Learn how to use and customize the DyteChat component in Dyte's Android with
- our detailed documentation.
----
-
-# DyteChat
-
-Fully featured chat screen with image & file upload and auto-scroll.
-
-```kotlin
-val dyteChatBottomSheet = DyteChatBottomSheet()
-dyteChatBottomSheet.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-
- Android DyteChat
-
diff --git a/docs/android/components/dyte-clock.mdx b/docs/android/components/dyte-clock.mdx
deleted file mode 100644
index 7b7f38f197..0000000000
--- a/docs/android/components/dyte-clock.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-clock.svg
-description: >-
- Learn how to use and customize the DyteClockView component in Dyte's Android
- with our detailed documentation.
----
-
-# DyteClockView
-
-```xml
-
-```
-
-To setup the clock inside kotlin/Java code do as follows
-
-```kotlin
-val clockView = findViewById(R.id.dyte_clock_view)
-clockView.activate(meeting)
-```
-
-
- Android DyteClockView
-
diff --git a/docs/android/components/dyte-controlbar-button.mdx b/docs/android/components/dyte-controlbar-button.mdx
deleted file mode 100644
index ffe6da8538..0000000000
--- a/docs/android/components/dyte-controlbar-button.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-controlbar-button.svg
-description: >-
- Learn how to use and customize the DyteControlBarButton component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteControlBarButton
-
-A skeleton component used for composing buttons.
-
-```xml
-
-```
-
-To setup the controlbar button inside kotlin/Java code do as follows
-
-```kotlin
-val buttonView = findViewById(R.id.dyte_control_bar_button)
-buttonView.setOnClickListener(
- {
- // TODO: your action here
- }
-)
-```
-
-
- Android DyteControlBarButton
-
diff --git a/docs/android/components/dyte-grid-pagination.mdx b/docs/android/components/dyte-grid-pagination.mdx
deleted file mode 100644
index 6e755da2cc..0000000000
--- a/docs/android/components/dyte-grid-pagination.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-grid-pagination.svg
-description: >-
- Learn how to use and customize the DyteGridPaginatorView component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteGridPaginatorView
-
-A component which allows you to change current page and view mode of active
-participants list.
-
-```xml
-
-```
-
-To setup the paginator inside kotlin/Java code do as follows
-
-```kotlin
-val paginatorView = findViewById(R.id.dyte_grid_paginator)
-paginatorView.activate(meeting)
-```
-
-
- Android DyteGridPaginatorView
-
diff --git a/docs/android/components/dyte-grid.mdx b/docs/android/components/dyte-grid.mdx
deleted file mode 100644
index cbd8361b44..0000000000
--- a/docs/android/components/dyte-grid.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-grid.svg
-description: >-
- Learn how to use and customize the DyteGridViewV2 component in Dyte's Android
- with our detailed documentation.
----
-
-# DyteGridViewV2
-
-The main grid component which abstracts all the grid handling logic and renders
-it for you.
-
-```xml
-
-```
-
-To setup the grid inside kotlin/Java code do as follows
-
-```kotlin
-val gridView = findViewById(R.id.dyte_grid_view)
-gridView.activate(meeting)
-```
-
-
- Android DyteGridViewV2
-
diff --git a/docs/android/components/dyte-idle-screen.mdx b/docs/android/components/dyte-idle-screen.mdx
deleted file mode 100644
index 2b209327ba..0000000000
--- a/docs/android/components/dyte-idle-screen.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-idle-screen.svg
-description: >-
- Learn how to use and customize the DyteLoaderView component in Dyte's Android
- with our detailed documentation.
----
-
-# DyteLoaderView
-
-A screen that shows full screen loader which is used between a connection is established with Dyte universe.
-
-```xml
-
-```
-
-
- Android DyteLoaderView
-
diff --git a/docs/android/components/dyte-join-stage.mdx b/docs/android/components/dyte-join-stage.mdx
deleted file mode 100644
index c771ad0b38..0000000000
--- a/docs/android/components/dyte-join-stage.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteJoinStage component in Dyte's Android
- with our detailed documentation.
----
-
-# DyteJoinStage
-
-A confirmation dialog screen which is shown
-
-- When the user's request to Join Stage is approved by the meeting host.
-- When host invites the localUser to join stage.
-
-```kotlin
-val dyteJoinStage = DyteJoinStage(requireContext())
-dyteJoinStage.setOnCancelListener {
- // when dialog is dismissed by the localUser
-}
-dyteJoinStage.show()
-dyteJoinStage.activate(meeting)
-```
-
-
- Android DyteJoinStage
-
diff --git a/docs/android/components/dyte-leave-button.mdx b/docs/android/components/dyte-leave-button.mdx
deleted file mode 100644
index 1580f2adbf..0000000000
--- a/docs/android/components/dyte-leave-button.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteLeaveButton component in Dyte's Android
- with our detailed documentation.
----
-
-# DyteLeaveButton
-
-A button which toggles visilibility of the leave confirmation dialog.
-
-```xml
-
-```
-
-To activate DyteLeaveButton, do as follows:
-
-```kotlin
-val leaveButton = findViewById(R.id.dyte_leave_button)
-leaveButton.activate(meeting)
-```
-
-
- Android DyteLeaveButton
-
diff --git a/docs/android/components/dyte-leave-meeting.mdx b/docs/android/components/dyte-leave-meeting.mdx
deleted file mode 100644
index 81ececf1e1..0000000000
--- a/docs/android/components/dyte-leave-meeting.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-leave-meeting.svg
-description: >-
- Learn how to use and customize the DyteLeaveMeetingView component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteLeaveMeetingView
-
-A component which allows you to leave a meeting or end meeting for all, if you
-have the permission.
-
-To use the component do in kotlin/java as follows:
-
-```kotlin
-val endCallDialog = DyteLeaveMeetingView(context, meeting)
-endCallDialog.show()
-```
-
-
- Android DyteLeaveMeetingView
-
diff --git a/docs/android/components/dyte-meeting-title.mdx b/docs/android/components/dyte-meeting-title.mdx
deleted file mode 100644
index ac9ff1e609..0000000000
--- a/docs/android/components/dyte-meeting-title.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-meeting-title.svg
-description: >-
- Learn how to use and customize the DyteMeetingTitleView component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteMeetingTitleView
-
-A component which displays the title of the meeting.
-
-```xml
-
-```
-
-To use the component do in kotlin/java as follows:
-
-```kotlin
-val meetingTitleView = findViewById(R.id.dytemeetingtitletextview)
-meetingTitleView.activate(meeting)
-```
-
-
- Android DyteMeetingTitleView
-
diff --git a/docs/android/components/dyte-meeting.mdx b/docs/android/components/dyte-meeting.mdx
deleted file mode 100644
index 3741a6b320..0000000000
--- a/docs/android/components/dyte-meeting.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-meeting.svg
-description: >-
- Learn how to use and customize the DyteUIKit component in Dyte's Android with
- our detailed documentation.
----
-
-# DyteUIKit
-
-A single component which renders an entire meeting UI.
-
-It loads your preset and renders the UI based on it. With this component, you
-don't have to handle all the states, dialogs and other smaller bits of managing
-the application.
-
-```kotlin
-val meetingInfo = DyteMeetingInfoV2(
- authToken = authToken,
- baseUrl = baseUrl
-)
-val dyteUIKitInfo = DyteUIKitInfo(
- activity = this,
- dyteMeetingInfo = meetingInfo
-)
-val dyteUIKit = DyteUIKitBuilder.build(dyteUIKitInfo)
-dyteUIKit.startMeeting()
-```
-
-
- Android DyteUIKit
-
diff --git a/docs/android/components/dyte-mic-toggle.mdx b/docs/android/components/dyte-mic-toggle.mdx
deleted file mode 100644
index ff135f6542..0000000000
--- a/docs/android/components/dyte-mic-toggle.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteMicToggleButton component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteMicToggleButton
-
-A button which toggles your microphone.
-
-```xml
-
-```
-
-To use the component do in kotlin/java as follows:
-
-```kotlin
-val micToggleButton = view.findViewById(R.id.dyte_mic_toggle)
-micToggleButton.activate(meeting)
-```
-
-
- Android DyteMicToggleButton
-
diff --git a/docs/android/components/dyte-more-toggle.mdx b/docs/android/components/dyte-more-toggle.mdx
deleted file mode 100644
index b509bf00ef..0000000000
--- a/docs/android/components/dyte-more-toggle.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteMoreToggleButton component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteMoreToggleButton
-
-A button which toggles visibility of a more menu.
-
-```xml
-
-```
-
-To use the component do in kotlin/java as follows:
-
-```kotlin
-var moreToggleButton = findViewById(R.id.dyte_more_toggle)
-moreToggleButton.activate()
-```
-
-
- Android DyteMoreToggleButton
-
diff --git a/docs/android/components/dyte-name-tag.mdx b/docs/android/components/dyte-name-tag.mdx
deleted file mode 100644
index 691b11ad56..0000000000
--- a/docs/android/components/dyte-name-tag.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-name-tag.svg
-description: >-
- Learn how to use and customize the DyteNameTagView component in Dyte's Android
- with our detailed documentation.
----
-
-# DyteNameTagView
-
-A component which shows a participant's name.
-
-```xml
-
-```
-
-To use the component do in kotlin/java as follows:
-
-```kotlin
-var nameTagView = findViewById(R.id.dyte_name_tag_view)
-nameTagView.activate(participant)
-```
-
-
- Android DyteNameTagView
-
diff --git a/docs/android/components/dyte-participant-count.mdx b/docs/android/components/dyte-participant-count.mdx
deleted file mode 100644
index d791a3a9b9..0000000000
--- a/docs/android/components/dyte-participant-count.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participant-count.svg
-description: >-
- Learn how to use and customize the DyteParticipantCountView component in
- Dyte's Android with our detailed documentation.
----
-
-# DyteParticipantCountView
-
-A component which shows count of total joined participants in a meeting.
-
-```xml
-
-```
-
-To use the component do in kotlin/java as follows:
-
-```kotlin
-var participantCountView = findViewById(R.id.dyte_participant_count_view)
-participantCountView.activate(meeting)
-```
-
-
- Android DyteParticipantCountView
-
diff --git a/docs/android/components/dyte-participants.mdx b/docs/android/components/dyte-participants.mdx
deleted file mode 100644
index 16730d8438..0000000000
--- a/docs/android/components/dyte-participants.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participants.svg
-description: >-
- Learn how to use and customize the DyteParticipantsFragment component in
- Dyte's Android with our detailed documentation.
----
-
-# DyteParticipantsFragment
-
-A component which lists all participants, with ability to run privileged actions
-on each participant according to your permissions.
-
-To show DyteParticipantsFragment do in kotlin/Java as follows:
-
-```kotlin
-val dyteParticipantsFragment = DyteParticipantsFragment()
-dyteParticipantsFragment.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-
- Android DyteParticipantsFragment
-
diff --git a/docs/android/components/dyte-plugins.mdx b/docs/android/components/dyte-plugins.mdx
deleted file mode 100644
index 94a7c2e862..0000000000
--- a/docs/android/components/dyte-plugins.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-plugins.svg
-description: >-
- Learn how to use and customize the DytePluginsBottomSheet component in Dyte's
- Android with our detailed documentation.
----
-
-# DytePluginsBottomSheet
-
-A component which lists all available plugins from their preset, and ability to
-enable or disable plugins.
-
-To show DytePluginsBottomSheet do in kotlin/Java as follows:
-
-```kotlin
-val dytePluginsBottomSheet = DytePluginsBottomSheet()
-dytePluginsBottomSheet.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-
- Android DytePluginsBottomSheet
-
diff --git a/docs/android/components/dyte-poll-form.mdx b/docs/android/components/dyte-poll-form.mdx
deleted file mode 100644
index 63741051d2..0000000000
--- a/docs/android/components/dyte-poll-form.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteCreatePollBottomSheet component in
- Dyte's Android with our detailed documentation.
----
-
-# DyteCreatePollBottomSheet
-
-A component that lets you create a poll.
-
-To show DyteCreatePollBottomSheet do in kotlin/Java as follows:
-
-```kotlin
-val dytePollsBottomSheet = DyteCreatePollBottomSheet()
-dytePollsBottomSheet.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-
- Android DyteCreatePollBottomSheet
-
diff --git a/docs/android/components/dyte-polls.mdx b/docs/android/components/dyte-polls.mdx
deleted file mode 100644
index 903c7d2de4..0000000000
--- a/docs/android/components/dyte-polls.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-polls.svg
-description: >-
- Learn how to use and customize the DytePollsBottomSheet component in Dyte's
- Android with our detailed documentation.
----
-
-# DytePollsBottomSheet
-
-A component which lists all available plugins a user can access with the ability
-to enable or disable them as per their permissions.
-
-To show DytePollBottomSheet do in kotlin/Java as follows:
-
-```kotlin
-val dytePollsBottomSheet = DytePollBottomSheet()
-dytePollsBottomSheet.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-
- Android DytePollsBottomSheet
-
diff --git a/docs/android/components/dyte-recording-indicator.mdx b/docs/android/components/dyte-recording-indicator.mdx
deleted file mode 100644
index b43b683ae0..0000000000
--- a/docs/android/components/dyte-recording-indicator.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-recording-indicator.svg
-description: >-
- Learn how to use and customize the DyteRecordingIndicator component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteRecordingIndicator
-
-A component which indicates the recording status of a meeting.
-
-It will not render anything if no recording is taking place.
-
-```xml
-
-```
-
-To setup the DyteRecordingIndicator inside kotlin/Java code do as follows
-
-```kotlin
-val dyteRecordingIndicator = findViewById(R.id.dyte_recording_indicator)
-dyteRecordingIndicator.activate(meeting)
-```
-
-
- Android DyteRecordingIndicator
-
diff --git a/docs/android/components/dyte-settings.mdx b/docs/android/components/dyte-settings.mdx
deleted file mode 100644
index 9468df41ae..0000000000
--- a/docs/android/components/dyte-settings.mdx
+++ /dev/null
@@ -1,24 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-settings.svg
-description: >-
- Learn how to use and customize the DyteSettingsFragment component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteSettingsFragment
-
-A settings component to see and change your audio/video devices.
-
-To show DyteSettingsFragment do in kotlin/Java as follows:
-
-```kotlin
-val dyteSettingsFragment = DyteSettingsFragment()
-dyteSettingsFragment.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-
- Android DyteSettingsFragment
-
diff --git a/docs/android/components/dyte-setup-screen.mdx b/docs/android/components/dyte-setup-screen.mdx
deleted file mode 100644
index 03fef9c6d8..0000000000
--- a/docs/android/components/dyte-setup-screen.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-setup-screen.svg
-description: >-
- Learn how to use and customize the DyteSetupFragment component in Dyte's
- Android with our detailed documentation.
----
-
-# DyteSetupFragment
-
-A screen shown before joining the meeting, where you can edit your display name,
-and media settings.
-
-To show DyteSetupFragment do in kotlin/Java as follows:
-
-```kotlin
-val dyteSetupFragment = DyteSetupFragment()
-dyteSetupFragment.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-
- Android DyteSetupFragment
-
diff --git a/docs/android/components/dyte-video-selector.mdx b/docs/android/components/dyte-video-selector.mdx
deleted file mode 100644
index 66364bdaf1..0000000000
--- a/docs/android/components/dyte-video-selector.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
-# DyteVideoDeviceSelector
-
-A video device selector component which can be used to select video devices.
-
-To use this component inside an xml use following syntax:
-
-```xml
-
- />
-```
-
-It should look like the following when rendered on the screen:
-
-
-
-Device can be changed by clicking on the dropdown and selecting the desired device.
diff --git a/docs/android/components/dyte-webinar-stage-toggle.mdx b/docs/android/components/dyte-webinar-stage-toggle.mdx
deleted file mode 100644
index b4cf63d625..0000000000
--- a/docs/android/components/dyte-webinar-stage-toggle.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-description: >-
- Learn how to use and customize the DyteWebinarStageToggleButton component in
- Dyte's Android with our detailed documentation.
----
-
-# DyteWebinarStageToggleButton
-
-Component that lets you add provisin for localUser to Join stage. This component internally handles operations related to Request Access, Join Stage, Cancel Request Access and Leave the stage.
-
-```xml
-
-```
-
-To setup the button inside kotlin/Java code do as follows
-
-```kotlin
-val dyteStageToggleButton = findViewById(R.id.dyte_webinar_stage_toggle)
-dyteStageToggleButton.activate(meeting)
-```
-
-
- Android DyteWebinarStageToggleButton
-
diff --git a/docs/android/components/gallery.mdx b/docs/android/components/gallery.mdx
deleted file mode 100644
index d141677b8e..0000000000
--- a/docs/android/components/gallery.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-sidebar_position: 1
-slug: /components
-description: >-
- Learn how to use and customize the Gallery component in Dyte's Android with
- our detailed documentation.
----
-
-# Gallery
-
-
-
-
-
-
-
-
- Android Gallery
-
diff --git a/docs/android/customize-meeting-ui.mdx b/docs/android/customize-meeting-ui.mdx
deleted file mode 100644
index 942f3dc6b5..0000000000
--- a/docs/android/customize-meeting-ui.mdx
+++ /dev/null
@@ -1,165 +0,0 @@
----
-sidebar_position: 4
-description: >-
- Customize the meeting UI of your Android application using Dyte Docs as your
- guide.
----
-
-# Customize your Meeting UI
-
-Dyte provides a range of UI customizations for meetings, including defining participant interactions within a meeting room. The default values for these options are set to facilitate integration. However, you have the flexibility to override them at the client end to suit specific use cases or events.
-
-When configuring a Dyte meeting, you can pass the following configuration options.
-
-```kotlin
-val imarticusColors = ColorTokens(
- brand = BrandColor(
- shade300 = Color.parseColor("#ffea76"),
- shade400 = Color.parseColor("#ffe865"),
- shade500 = Color.parseColor("#ffe554"),
- shade600 = Color.parseColor("#e6ce4c"),
- shade700 = Color.parseColor("#ccb743"),
- ),
- background = BackgroundColor(
- shade600 = Color.parseColor("#121212"),
- shade700 = Color.parseColor("#454545"),
- shade800 = Color.parseColor("#898989"),
- shade900 = Color.parseColor("#b1b1b1"),
- shade1000 = Color.parseColor("#e1e1e1")
- ),
- text = TextColor(
- onBrand = TextColor.TextColorOnBrand(
- shade1000 = Color.parseColor("#ff002b4c"),
- shade900 = Color.parseColor("#e0002b4c"),
- shade800 = Color.parseColor("#c2002b4c"),
- shade700 = Color.parseColor("#a3002b4c"),
- shade600 = Color.parseColor("#85002b4c")
- ),
- onBackground = TextColor.TextColorOnBackground(
- shade1000 = Color.parseColor("#ff050505"),
- shade900 = Color.parseColor("#e0050505"),
- shade800 = Color.parseColor("#c2050505"),
- shade700 = Color.parseColor("#a3050505"),
- shade600 = Color.parseColor("#85050505")
- )
- )
- )
-
- val tokens = DyteUITokens(colors = imarticusColors,
- borderRadius = BorderRadiusToken.Circular,
- borderWidth = BorderWidthToken.Thin)
-```
-
-```kotlin {7}
-val meetingInfo = = DyteMeetingInfoV2(
- authToken = state.authToken,
-)
-val config = DyteUIKitConfig(
- activity = this,
- dyteMeetingInfo = meetingInfo,
- designTokens = tokens
-)
-val dyteClient = DyteUIKitBuilder.build(config)
-dyteClient.loadUi()
-```
-
-Here is a visual representation showcasing all the defined configuration options.
-
-
-
-
-
-Dyte provides customization options for adjusting the color, border radius, and border width of your UI. Let's explore these customization options in more detail.
-
-## Customize color scheme to match your brand
-
-Customize the meeting's color scheme to match your brand and theme with Dyte. You can specify four sets of color values:
-
-- brandColor: Primary brand color.
-- backgroundColor: Primary background color.
-- textColor: The primary text color for both the brand color and background.
-
-### `brandColor`
-
-```kotlin
-BrandColor(
- shade300 = Color.parseColor("#ffea76"),
- shade400 = Color.parseColor("#ffe865"),
- shade500 = Color.parseColor("#ffe554"),
- shade600 = Color.parseColor("#e6ce4c"),
- shade700 = Color.parseColor("#ccb743"),
-)
-```
-
-### `backgroundColor`
-
-```kotlin
-BackgroundColor(
- shade600 = Color.parseColor("#121212"),
- shade700 = Color.parseColor("#454545"),
- shade800 = Color.parseColor("#898989"),
- shade900 = Color.parseColor("#b1b1b1"),
- shade1000 = Color.parseColor("#e1e1e1")
-)
-```
-
-### `textColor`
-
-```kotlin
-text = TextColor(
- onBrand = TextColor.TextColorOnBrand(
- shade1000 = Color.parseColor("#ff002b4c"),
- shade900 = Color.parseColor("#e0002b4c"),
- shade800 = Color.parseColor("#c2002b4c"),
- shade700 = Color.parseColor("#a3002b4c"),
- shade600 = Color.parseColor("#85002b4c")
- ),
- onBackground = TextColor.TextColorOnBackground(
- shade1000 = Color.parseColor("#ff050505"),
- shade900 = Color.parseColor("#e0050505"),
- shade800 = Color.parseColor("#c2050505"),
- shade700 = Color.parseColor("#a3050505"),
- shade600 = Color.parseColor("#85050505")
- )
-)
-```
-
-## Customize border radius of elements in the meeting
-
-To customize the border radius of elements in your Dyte meeting, follow these steps:
-
-1. Create the `DyteUITokens` object:
-
-```kotlin
-val tokens = DyteUITokens(colors = dyteColors, borderRadius = BorderRadiusToken.Rounded)
-```
-
-- `dyteColors`: Represents the color scheme for your meeting.
-- `borderRadius`: Defines the desired border radius. By specifying the desired border radius value in the borderRadius token, you can customize the border radius of elements in your Dyte meeting.
-
-2. Configure `DyteUIKit` then build and load the Dyte UI.
-
-```kotlin {10}
-val meetingInfo = DyteMeetingInfoV2(
- // meeting info
-)
-val config = DyteUIKitConfig(
- activity = this,
- dyteMeetingInfo = meetingInfo,
- designTokens = tokens
-)
-val dyteUIKit = DyteUIKitBuilder.build(config)
-dyteUIKit.loadUi()
-```
-
-
-
-
-
-
- Android Customize your Meeting UI
-
-
diff --git a/docs/android/participants/_category_.json b/docs/android/participants/_category_.json
deleted file mode 100644
index ced656c0e4..0000000000
--- a/docs/android/participants/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Participants",
- "collapsible": true
-}
diff --git a/docs/android/participants/introduction.mdx b/docs/android/participants/introduction.mdx
deleted file mode 100644
index 29c02ab6cd..0000000000
--- a/docs/android/participants/introduction.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Types
-sidebar_position: 1
----
-
-The data regarding all meeting participants is stored under `meeting.participants`. These **does not** include the local user. Use the methods and events to consume the participants data. For example, to get all the participants who joined the meeting:
-
-```kotlin
-// get all joined participants
-val joined: List = meeting.participants.joined
-
-// get all participants
-val all: List = meeting.participants.all
-```
-
-The `meeting.participants` object has the following **lists** of participants
-
-- **all**: A list that contains all the participants who have joined the meeting except the local user
-- **joined**: A list that contains all the participants who are currently in the meeting
- except the local user
-- **waitlisted**: A list that contains all the participants waiting to join the
- meeting.
-- **active**: A list that contains all the participants except the local user whose media is subscribed to i.e
- participants are supposed to be on the screen at the moment except the local user
-- **pinned**: A list that contains all the pinned participants of the meeting.
-- **screenShares**: A list that contains all the participants who are sharing their screen.
-
-Therefore if you were to make a video / audio grid of participants, you'd use the `active` map, but to display the list of all participants in the meeting you'd use the `joined` map.
-
-Each participant in each of the `joined`, `active`, `pinned` and `screenShares` list are of type `DyteJoinedMeetingParticipant`, `waitlisted` list is of type `DyteWaitlistedParticipant` and `all` list is of type `DyteParticipant`.
diff --git a/docs/android/participants/prebuilt.mdx b/docs/android/participants/prebuilt.mdx
deleted file mode 100644
index 814a7e4f9d..0000000000
--- a/docs/android/participants/prebuilt.mdx
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: Prebuilt
-sidebar_position: 3
----
-
-# Manage Participants
-
-This section explains how to list and manage participants in your Dyte app.
-
-## Listing Participants
-
-To show the list of participants in your app, you can use the `DyteParticipantsFragment` class.
-
-You can create an instance of this class and call the show method to display the list of current participants as shown below:
-
-```kotlin
-val dyteParticipantsFragment = DyteParticipantsFragment()
-dyteParticipantsFragment.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-It should show something like below, with the list of participants in the room:
-
-
-
-## Host Controls
-
-If you are the host of the room, you will see the **host controls** when you click the **three-dot menu** on the top right corner of the participants list. The host controls allow you to manage the participants in the room.
-
-The host controls include the following options:
-
-- **Mute/Unmute**: Mute or unmute a participant.
-- **Kick**: Kick a participant from the room.
-- **Pin**: Pin a participant's video.
-- **Turn off video**: Turn off a participant's video.
-
-
-
-
-You can also use these methods from our participant object to
-perform these actions programmatically.
-
-```kotlin
-val participant = meeting.participants.joined.firstOrNull { it.id == participantId }
-
-participant?.let { pcpt ->
- // To disable a participant's video stream
- pcpt.disableVideo();
-
- // To disable a participant's audio stream
- pcpt.disableAudio();
-
- // To kick a participant from the meeting
- pcpt.kick();
-}
-```
-
-You can also `pin` or `unpin` a participant in the meeting. All "pinned"
-participants are added to the `meeting.participants.pinned` map.
-
-```kotlin
-val participant = meeting.participants.joined.firstOrNull { it.id == participantId }
-
-participant?.let { pcpt ->
- // To pin a participant
- pcpt.pin();
-
- // To unpin a participant
- pcpt.unpin();
-}
-```
diff --git a/docs/android/plugins/_category_.json b/docs/android/plugins/_category_.json
deleted file mode 100644
index 5772922e2f..0000000000
--- a/docs/android/plugins/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 8,
- "label": "Plugins",
- "collapsible": true
-}
diff --git a/docs/android/plugins/introduction.mdx b/docs/android/plugins/introduction.mdx
deleted file mode 100644
index c9d6dbf3fc..0000000000
--- a/docs/android/plugins/introduction.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Introduction
-description: Manage plugins in a meeting.
-sidebar_position: 1
-tags:
- - android-ui-kit
- - plugins
----
-
-# Introduction
-
-Plugins are one-click add-ons that can make your meetings more immersive and collaborative. Dyte provides a bunch of inbuilt plugins to choose from, you can also build your own plugins using the [Plugin SDK](../../plugin-sdk/).
-
-The meeting plugins can be accessed from the `meeting.plugins` object, it exposes the following.
-
-| Property | Type | Description |
-| -------- | ---- | -------------------------------------- |
-| active | List | All plugins that are currently in use. |
-| all | List | All plugins the meeting has access to. |
-
-Each plugin in the list is of type `DytePlugin` which has the following public fields and methods:
-
-```kotlin
-class DytePlugin {
- val id: String
- val name: String
- val description: String
- val picture: String
- val isPrivate: Boolean
- val staggered: Boolean
- val baseURL: String
- val config: PluginConfig
- val isActive: Boolean
- val enabledBy: String?
-
- fun activate()
- fun deactivate()
- fun getPluginView(): WebView
- fun uploadFile(file: DytePluginFile)
- fun sendData(eventName: String, data: Any?)
-}
-```
diff --git a/docs/android/plugins/prebuilt.mdx b/docs/android/plugins/prebuilt.mdx
deleted file mode 100644
index 629dafa08e..0000000000
--- a/docs/android/plugins/prebuilt.mdx
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: Prebuilt
-description: Show and use plugins list in a meeting.
-sidebar_position: 2
-tags:
- - android-ui-kit
- - plugins
----
-
-## Listing plugins in a meeting
-
-To show the list of enabled plugins in your app, you can use the `DytePluginsBottomSheet` class.
-
-You can create an instance of this class and call the `show` method to display the list of enabled plugins as shown below:
-
-```kotlin
-val dytePluginsBottomSheet = DytePluginsBottomSheet()
-dytePluginsBottomSheet.show(
- fragmentManager,
- "SOME_TAG_HERE"
-)
-```
-
-The bottom sheet should look like this:
-
-
-
-## Using a plugin in a meeting
-
-To use a plugin in a meeting, you can use the rocket icon next to the plugin name in the plugins list.
-
-
-
-
-When you click on the rocket icon, the plugin webview will be added to the meeting and
-everyone in the meeting will be able to see and interact with the plugin.
-
-
-
-## Send data to the plugin
-
-You can send data (type `any`) to a plugin using the `sendData()` method. This method comes in handy when building your own plugin.
-
-```kotlin
-val pluginId = '...';
-val plugin = meeting.plugins.active.firstOrNull { it.id == pluginId }
-
-plugin?.let { p ->
- p.sendData(
- eventName = "my-custom-event",
- data = "Hello world"
- )
-}
-```
-
-## Receive data from the plugin
-
-You can receive data from a plugin by subscribing to the `onPluginActivated` event in through our `DytePluginEventsListener` interface.
-
-```kotlin
-private var pluginEventListener: DytePluginEventsListener =
- object : DytePluginEventsListener {
- override fun onPluginActivated(plugin: DytePlugin) {
- // do something with the plugin
- }
-
- ...
- }
-
-// use while initializing the meeting
-meeting.addPluginEventsListener(pluginEventListener)
-```
diff --git a/docs/android/polls/_category_.json b/docs/android/polls/_category_.json
deleted file mode 100644
index 38f4bee4c0..0000000000
--- a/docs/android/polls/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 9,
- "label": "Polls",
- "collapsible": true
-}
diff --git a/docs/android/polls/prebuilt-create-poll.mdx b/docs/android/polls/prebuilt-create-poll.mdx
deleted file mode 100644
index d0ddeb51a3..0000000000
--- a/docs/android/polls/prebuilt-create-poll.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-sidebar_position: 2
-title: Prebuilt Create Poll Screen
----
-
-In Dyte meetings, participants can create polls to gather opinions or make decisions collectively.
-The ability to create polls is determined by the [polls permissions](/guides/livestream/advanced/configuring-permissions#polls)
-set in the participant's preset.
-
-## Using Dyte's Create Poll Screen
-
-Dyte's Android UI Kit provides a user-friendly prebuilt screen, [DyteCreatePollBottomSheet](/android/components/dyte-poll-form),
-for creating polls in a Dyte meeting. When using the DyteCreatePollBottomSheet, the poll creator can:
-
-- Add more options to the poll (default is 2)
-- Choose to make the poll voting anonymous
-- Choose to hide the poll results before voting, keeping the vote count and voters hidden from participants
-
-To integrate the `DyteCreatePollBottomSheet` into your app and allow participants to create polls,
-use the provided code snippet:
-
-```kotlin
-import dyte.io.uikit.screens.polls.DyteCreatePollBottomSheet
-
-val createPollBottomSheet = DyteCreatePollBottomSheet()
-createPollBottomSheet.show(childFragmentManager, TAG)
-```
-
-
-
-**Wrap Up**: With Dyte's prebuilt Create Poll screen, you can easily add interactive polls features
-to your app, enhancing participant engagement in Dyte meetings.
diff --git a/docs/android/polls/prebuilt-polls-screen.mdx b/docs/android/polls/prebuilt-polls-screen.mdx
deleted file mode 100644
index 53955c193a..0000000000
--- a/docs/android/polls/prebuilt-polls-screen.mdx
+++ /dev/null
@@ -1,65 +0,0 @@
----
-sidebar_position: 1
-title: Prebuilt Polls Screen
----
-
-## Introduction to Polls in Dyte Meetings
-
-In Dyte meetings, participants can engage in polls to gather opinions or make decisions collectively.
-Polls enhance the interactive nature of meetings, allowing participants to actively express their views.
-The ability to create, or interact with polls is determined by the [polls permissions](/guides/livestream/advanced/configuring-permissions#polls)
-set in the participant's preset.
-
-## Dyte's Prebuilt Polls Screen
-
-Dyte's Android UI Kit provides a prebuilt Polls screen with the following features:
-
-- Displays all created polls if the participant has permission to view them
-- Allows participants to vote by selecting a checkbox for their chosen option
-- Shows the number of votes each poll option has received
-
-### Usage Options
-
-The prebuilt Polls screen is available in two variants:
-
-1. [**DytePollsBottomSheet**](/android/components/dyte-polls): Displays the Polls list as a full-screen bottom sheet that can be dismissed by swiping down.
-
-```kotlin
-import dyte.io.uikit.screens.polls.DytePollsBottomSheet
-
-val dytePollsBottomSheet = DytePollsBottomSheet()
-dytePollsBottomSheet.show(childFragmentManager, TAG)
-```
-
-2. **DytePollsFragment**: Shows the list of ongoing polls inside an Android fragment, providing flexibility
- to show the Polls UI fullscreen or in a part of the screen along with other UI elements.
-
-```xml
-
-
-```
-
-```kotlin
-import dyte.io.uikit.screens.polls.DytePollsFragment
-
-val dytePollsFragment = DytePollsFragment()
-supportFragmentManager.beginTransaction()
- .replace(R.id.fragment_container_view, dytePollsFragment, TAG)
- .commit()
-```
-
-
-
-## Next Steps
-
-In the next guide, we will explore the "Prebuilt Create Poll screen" which allows participants to create polls
-if they have permission in their preset.
diff --git a/docs/android/quickstart.mdx b/docs/android/quickstart.mdx
deleted file mode 100644
index b86e085998..0000000000
--- a/docs/android/quickstart.mdx
+++ /dev/null
@@ -1,173 +0,0 @@
----
-sidebar_position: 1
-slug: /
-description: >-
- Dive into Dyte's Android documentation to integrate video collaboration
- seamlessly into your Android applications.
----
-
-import { MavenLatestInstallation } from '@site/src/components/LatestInstallation';
-
-# Quickstart
-
-This quickstart shows how to use Dyte's Android UI Kit SDK to add live video and
-audio to your Android applications.
-
-To get started quickly, you can use our sample code. Simply clone and run a sample application
-from the Android UIKit samples, available in both [Kotlin](https://github.com/dyte-io/android-samples/tree/main/samples/android-ui-kit-sample-kotlin) and [Java](https://github.com/dyte-io/android-samples/tree/main/samples/android-uikit-sample-java).
-
-## Objective
-
-You'll learn how to:
-
-- [Install the Dyte SDK](#step-1-install-the-sdk-from-mavencentral)
-- [Configure a Dyte meeting](#step-2-configure-a-dyte-meeting)
-- [Initialize the SDK](#step-3-initialize-the-sdk)
-- [Launch the meeting UI](#step-4-launch-the-meeting-ui)
-
-## Before Getting Started
-
-Make sure you've read the
-[Getting Started with Dyte](/getting-started) topic and
-completed the steps in the
-[Integrate Dyte](/getting-started#integrate-dyte) section.
-You must complete the following steps:
-
-- Create a [Dyte Developer Account](https://dev.dyte.io/)
-- Create a
- [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
-- [Add Participant](/api/?v=v2#/operations/add_participant)
- to the meeting
-- Install [Android Studio](https://developer.android.com/studio)
-
-## Step 1: Install the SDK from MavenCentral
-
-
-
-:::tip Note
-If your app targets to lower versions of android (android api \<= 24), Please enable core desugering in your app's build.gradle file like follows.
-
-```
-android {
- // other configurations
- compileOptions {
- // other configurations
- isCoreLibraryDesugaringEnabled = true
-
- // Sets Java compatibility to Java 8
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
-}
-
-dependencies {
- // other dependencies
- coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
-}
-```
-
-:::
-
-## Step 2: Configure a Dyte meeting
-
-Configure the following properties in the `DyteMeetingInfoV2` class. You must pass a valid participant `authToken`
-obtained from the [Add Participant](/api/?v=v2#/operations/add_participant) API.
-
-| Name | Description |
-| ------------- | ------------------------------------------------------------------------------------------------------------------------------ |
-| `authToken` | Authentication token generated using the [Add Participant API](/api/?v=v2#/operations/add_participant) after meeting creation. |
-| `enableAudio` | Set whether to join the meeting with your Mic ON (`true`) or OFF (`false`). |
-| `enableVideo` | Set whether to join the meeting with your Camera ON (`true`) or OFF (`false`). |
-| `baseUrl` | Base URL of the Dyte environment you have created the meeting on. |
-
-
-
-
-```kotlin
-val meetingInfo = DyteMeetingInfoV2(
- authToken = "",
- enableAudio = true,
- enableVideo = true,
- baseUrl = "dyte.io"
-)
-```
-
-
-
-
-
-```java
-DyteMeetingInfoV2 meetingInfo = new DyteMeetingInfoV2(
- "",
- true, // enableAudio
- true, // enableVideo
- "dyte.io"
-);
-```
-
-
-
-
-## Step 3: Initialize the SDK
-
-Initialize the DyteUIKit with the `DyteUIKitBuilder` class, using the `meetingInfo` configured above.
-
-
-
-
-```kotlin
-val dyteUIKitInfo = DyteUIKitInfo(
- activity = this,
- dyteMeetingInfo = meetingInfo
-)
-val dyteUIKit = DyteUIKitBuilder.build(dyteUIKitInfo)
-```
-
-
-
-
-
-```java
-DyteUIKitInfo dyteUIKitInfo = new DyteUIKitInfo(this, meetingInfo);
-DyteUIKit dyteUIKit = DyteUIKitBuilder.build(dyteUIKitInfo);
-```
-
-
-
-
-## Step 4: Launch the meeting UI
-
-To launch the meeting UI all you need to do is call `startMeeting()` which will take
-care of everything for you.
-
-
-
-
-```kotlin
-dyteUIKit.startMeeting()
-```
-
-
-
-
-
-```java
-dyteUIKit.startMeeting();
-```
-
-
-
-
-
-
-
-
-
-
-
- Android Quickstart
-
-
diff --git a/docs/android/release-notes.mdx b/docs/android/release-notes.mdx
deleted file mode 100644
index 6897411285..0000000000
--- a/docs/android/release-notes.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-sidebar_class_name: releaseSidebarHeading
-tags:
- - releasenotes
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-
-
-
- Android Release Notes
-
diff --git a/docs/android/render-participant-videos/_category_.json b/docs/android/render-participant-videos/_category_.json
deleted file mode 100644
index c27ad0df06..0000000000
--- a/docs/android/render-participant-videos/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 6,
- "label": "Render participant videos",
- "collapsible": true
-}
diff --git a/docs/android/render-participant-videos/custom-ui.mdx b/docs/android/render-participant-videos/custom-ui.mdx
deleted file mode 100644
index ca432125b1..0000000000
--- a/docs/android/render-participant-videos/custom-ui.mdx
+++ /dev/null
@@ -1,137 +0,0 @@
----
-title: Building Your Own UI
-sidebar_position: 2
----
-
-In this guide, we will walk you through building a custom UI to render participant videos using
-Dyte's Android UI Kit. We will use an example of a video calling app like FaceTime to demonstrate
-how to display participant videos in your own UI.
-
-## Video Calling Example
-
-Let's consider a video calling app where two participants are in a call. The UI of our example app
-will feature:
-
-- **Remote Participant Tile**: This tile will render the video of the other participant, occupying
- the main area of the screen
-- **Local User Tile**: Positioned at the right-bottom corner, this tile will display your video
- i.e. of the local user
-
-
-
-## Using DyteParticipantTileView
-
-To achieve this UI, we will utilize the `DyteParticipantTileView` provided by Dyte's Android UI Kit.
-This custom Android view renders the video of a single participant and automatically handles displaying
-the video or a placeholder when the participant turns their camera on or off.
-
-## Getting Started
-
-Before we begin, let's understand the key components we'll be working with:
-
-- **DyteParticipantTileView**: Renders the video of a single participant
-- **DyteJoinedMeetingParticipant**: Represents a participant who has joined the meeting. The joined list
- in `DyteParticipants` holds objects of this type
-- **DyteSelfParticipant**: Represents the local user
-- **DyteMobileClient**: Provides access to meeting and participant information. Use the `meeting.participants.joined` list
- to retrieve the list of participants who have joined the meeting
-
-## Building the UI
-
-1. **XML Layout**: Define the layout of your video calling screen. Use two `DyteParticipantTileViews`
- to represent the remote participant and the local user.
-
-```xml
-
-
-
-
-
-
-
-
-```
-
-2. **UI Logic**: Bind the DyteParticipantTileViews to the respective participants and activate
- them to render the videos.
-
-```kotlin
-import dyte.io.uikit.view.participanttile.DyteParticipantTileView
-import io.dyte.core.DyteMobileClient
-
-class VideoCallActivity : AppCompatActivity() {
- private lateinit var selfParticipantTileView: DyteParticipantTileView
- private lateinit var remoteParticipantTileView: DyteParticipantTileView
- private val meeting: DyteMobileClient by lazy { DyteUIKitBuilder.meeting }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_video_call)
-
- selfParticipantTileView = findViewById(R.id.dyteparticipanttileview_self_participant)
- remoteParticipantTileView = findViewById(R.id.dyteparticipanttileview_remote_participant)
-
- activateUI(meeting)
- }
-
- private fun activateUI(meeting: DyteMobileClient) {
- val localUser = meeting.localUser
- val remoteParticipant = meeting.participants.joined.firstOrNull { it.id != localUser.id } ?: return
-
- selfParticipantTileView.activate(localUser)
- remoteParticipantTileView.activate(remoteParticipant)
- }
-}
-```
-
-3. **Adding Controls** (Bonus): You can easily add controls like mic toggle, camera toggle,
- and leave call button using the [DyteMicToggleButton](/android/components/dyte-mic-toggle),
- [DyteCameraToggleButton](/android/components/dyte-camera-toggle), and [DyteLeaveButton](/android/components/dyte-leave-button)
- provided by Dyte's Android UI Kit.
-
-Here's the screenshot of the UI implemented:
-
-
-
-## Wrap-Up
-
-Congratulations! You've successfully built a custom UI to render participant videos using Dyte's Android UI Kit.
-With components like **DyteGridView** and **DyteParticipantTileView**, Dyte's UI Kit simplifies video rendering
-in meetings and offers the flexibility to create dynamic video calling experiences.
-
-### Complete Code
-
-You can find the complete code for this example in Dyte's [Facetime sample repository](https://github.com/dyte-io/android-samples/tree/main/samples/facetime).
-Feel free to explore and try it out!
diff --git a/docs/android/render-participant-videos/using-dytegrid.mdx b/docs/android/render-participant-videos/using-dytegrid.mdx
deleted file mode 100644
index 539f4be62b..0000000000
--- a/docs/android/render-participant-videos/using-dytegrid.mdx
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: Using DyteGridView
-sidebar_position: 1
----
-
-The [DyteGridView](/android/components/dyte-grid) is a custom Android View provided by Dyte's Android UI Kit, designed to simplify
-the rendering of participant videos in a meeting. It abstracts the grid handling logic, making it easy to
-display videos in a grid layout.
-
-To render participant videos using `DyteGridView`, follow these steps:
-
-1. **Add DyteGridView to your layout**:
-
-```xml
-
-```
-
-2. **Activate DyteGridView**: In your fragment or activity class, activate the `DyteGridViewV2` by calling the
- `activate` method with an instance of `DyteMobileClient`.
-
-```kotlin
-import dyte.io.uikit.view.dytegrid.DyteGridViewV2
-import io.dyte.core.DyteMobileClient
-
-class MeetingFragment : Fragment() {
- private lateinit var gridView: DyteGridViewV2
- private val meeting: DyteMobileClient by lazy { DyteUIKitBuilder.meeting }
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- gridView = view.findViewById(R.id.dyte_grid_view)
- gridView.activate(meeting)
- }
-}
-```
-
-After activation, the DyteGridView will automatically render the videos of the participants present in the meeting.
-
-
-
-## Building Your Own UI
-
-While DyteGridView provides a convenient way to render participant videos, you may want to customize the UI further.
-In the next section, we will explore how to build your own UI to render participant videos according to your application's specific requirements.
diff --git a/docs/android/sample-app.mdx b/docs/android/sample-app.mdx
deleted file mode 100644
index 1ea027a440..0000000000
--- a/docs/android/sample-app.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-sidebar_position: 11
-description: >-
- Explore and learn from the Android sample app provided in Dyte's
- documentation.
----
-
-# Sample app
-
-You can check out an example of this integration by cloning our
-[Android UI Kit sample app repo](https://github.com/dyte-io/android-samples/tree/main/samples/android-ui-kit-sample-kotlin).
-
-
- Android Sample app
-
-
diff --git a/docs/angular-ui-kit/basics/_category_.json b/docs/angular-ui-kit/basics/_category_.json
deleted file mode 100644
index ed81286200..0000000000
--- a/docs/angular-ui-kit/basics/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Build your own UI",
- "collapsible": true
-}
diff --git a/docs/angular-ui-kit/basics/components-basics.mdx b/docs/angular-ui-kit/basics/components-basics.mdx
deleted file mode 100644
index c045e2edbf..0000000000
--- a/docs/angular-ui-kit/basics/components-basics.mdx
+++ /dev/null
@@ -1,244 +0,0 @@
----
-sidebar_position: 1
-description: >-
- Learn the basics of components in Dyte's Angular UI Kit through our detailed
- documentation.
----
-
-# Components Basics
-
-Learn about the structure of an individual component and figure out how to use
-the UI Kit effectively.
-
-## Usage Guide
-
-With the UI Kit, we provide a few set of ways to use it, depending on your needs
-and use case.
-
-### Write less code
-
-You can use the provided ` ` monolith component in case you want
-to write less code and not handle all the states and components rendering.
-
-It takes care of all of it and loads the entire meeting UI from your preset.
-
-```html
-
-
-
-
-
-```
-
-### Using individual components
-
-If you wish to integrate UI Kit components into your UI at various parts, you
-can use individual components as well which are used within the main `dyte-meeting` component.
-
-To simplify using individual components, you can the `dyte-ui-provider` component which lets you
-automatically sync all the common props that you would normally pass to each individual component without
-having to pass them manually to each component. These props are `meeting`, `config`, `iconPack`, `t`, `size` and `states`.
-
-:::info
-All components sync to props passed to `dyte-ui-provider` starting from UI Kit `v2.4.0`, so make sure you on the latest version.
-:::
-
-Here is a basic example which renders a grid if you join the meeting.
-
-```html
-
-
- Joining...
-
-
-
-
-
-
-
-
-
-
-```
-
-This way, all the components which you used will automatically sync with the changes.
-
-You can also pass these props individually as well like before.
-
-## Default Props
-
-Most of the components accept a set of a **Default Props** for essential
-features such as meeting data, meeting APIs, UI Configuration,
-internationalisation & icons.
-
-| Prop | Description |
-| :--------- | :------------------------------------------------------------------------------- |
-| `meeting` | The web-core `DyteClient` object. Contains all the meeting specific data & APIs. |
-| `config` | The [`UI Config`](../reference/interfaces/UIConfig) config |
-| `t` | [i18n helper](../reference/#dytei18n) method |
-| `iconPack` | [`IconPack`](../reference/#iconpack) object |
-
-Here is a simple example of how you pass these props to components, here a
-`DyteGrid`:
-
-```js
-const gridEl = document.createElement('dyte-grid');
-
-gridEl.meeting = meeting;
-gridEl.config = config;
-gridEl.t = t;
-gridEl.iconPack = iconPack;
-```
-
-## Component Specific Props
-
-Each component also has a set of props specifically.
-
-Here are some examples:
-
-### Button variants
-
-```html
-Primary Button (Default)
-Secondary button
-Danger button
-Ghost button
-```
-
-### Participant components
-
-These are components which depend on a single participant object or a
-participant list.
-
-`meeting.self` and participant objects from `meeting.participants` can be passed
-as a participant to this prop.
-
-```js
-const nameTagSelf = document.createElement('dyte-grid');
-const nameTagSelfWithYou = nameTagSelf.cloneNode(true);
-
-nameTagSelf.participant = nameTagSelfWithYou.participant = participant;
-
-// You should also pass the `meeting` object to see the
-// `(you)` text in name tag to identify self
-nameTagSelfWithYou.meeting = meeting;
-```
-
-### Grid Components
-
-We have a set of grid components that help you to have any kind of grid you
-wish.
-
-There are two types of grid components, so that the grid can be easily extended
-and modularized.
-
-- Parent Grid component - `dyte-grid`
-- Normal Grid components - `dyte-simple-grid`, `dyte-mixed-grid`,
- `dyte-spotlight-grid`
-
-#### Parent Grid Component
-
-The `DyteGrid` component is a monolith component which handles all grid related
-events and data on it's own and passes the following props to it's children.
-
-| Prop | Description |
-| :-------------------------- | :---------------------------------- |
-| `participants[]` | Active Participants |
-| `pinnedParticipants[]` | Pinned Participants |
-| `screenShareParticipants[]` | Participants who are screen sharing |
-| `plugins[]` | Active Plugins |
-
-These props are passed to it's children which it computes from the UI Config
-which is passed to it. By default it will use the default UI Config.
-
-:::tip
-
-Try changing the `aspectRatio` and `gap` props.
-
-:::
-
-```html
-
-
-```
-
-#### Normal Grid Components
-
-These components just accept the props mentioned above and render the UI.
-
-Read more about them in their Reference pages.
-
-##### DyteSimpleGrid
-
-Accepts: `participants`, `pinnedParticipants`.
-
-This grid renders just the ParticipantTiles of the participants you pass to it.
-It also brings `pinnedParticipants` to the start of the grid.
-
-##### DyteSimpleGrid
-
-Accepts: `participants`, `pinnedParticipants`.
-
-This grid renders the ParticipantTiles of the participants and
-pinnedParticipants in separate grids.
-
-Pinned participants are in spotlight area, i.e; larger grid.
-
-##### DyteMixedGrid
-
-Accepts: `participants`, `pinnedParticipants`, `screenShareParticipants`,
-`plugins`.
-
-This grid renders screenshares as well as plugins in the main larger view and
-renders a smaller grid on the right side which is configurable via the UI
-Config. You can use SimleGrid or SpotlightGrid here.
-
-If you just want to render `self` twice in a SimpleGrid:
-
-##### Example for SimpleGrid
-
-```js
-// load meeting
-
-const simpleGrid = document.createElement('dyte-simple-grid');
-simpleGrid.aspectRatio = '1:1';
-simpleGrid.gap = 8;
-simpleGrid.participants = [meeting.self, meeting.self];
-```
-
-
- Angular UI Kit Components Basics
-
-
diff --git a/docs/angular-ui-kit/basics/pre-requisite.mdx b/docs/angular-ui-kit/basics/pre-requisite.mdx
deleted file mode 100644
index ff72c6afc5..0000000000
--- a/docs/angular-ui-kit/basics/pre-requisite.mdx
+++ /dev/null
@@ -1,126 +0,0 @@
----
-sidebar_position: 5
-description: >-
- Understand the prerequisites for using Dyte's Angular UI Kit with our
- comprehensive documentation.
----
-
-# Prerequisite
-
-Make sure to read this before you start integrating the UI Kit into your app.
-
-These are a couple of components that are important for proper functioning of a
-meeting.
-
-### DyteParticipantsAudio
-
-This component takes care of the audio playback and autoplay issues.
-
-:::danger Audio
-
-The user will not hear audio without this component.
-
-:::
-
-```html
-
-
-
-```
-
-This component will also show a dialog in case the browser throws an auto play
-error, requiring user interaction to allow playing audio.
-
-Here is more information on
-[Autoplay policy in Chrome](https://developer.chrome.com/blog/autoplay/).
-
-Other browsers have similar policy, with some minor differences.
-
-### DyteNotifications
-
-:::danger Notifications
-
-The user will not be notified of important events such as network disconnection,
-poor network without this component.
-
-:::
-
-```html
-
-
-
-```
-
-### DyteDialogManager
-
-A component which handles all dialog elements in a component. This component is required for the following components to work:
-
-- DyteLeaveButton
-- DyteSettingsToggle
-- DyteBreakoutRoomsToggle
-- DyteMuteAllButton
-
-This components depends on the values from `states` object.
-
-```html
-
-
-
-```
-
-
- Angular UI Kit Prerequisite
-
-
diff --git a/docs/angular-ui-kit/components/_category_.json b/docs/angular-ui-kit/components/_category_.json
deleted file mode 100644
index 639469d6af..0000000000
--- a/docs/angular-ui-kit/components/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 6,
- "label": "Components",
- "collapsible": true,
- "collapsed": false
-}
diff --git a/docs/angular-ui-kit/components/dyte-audio-visualizer.mdx b/docs/angular-ui-kit/components/dyte-audio-visualizer.mdx
deleted file mode 100644
index 7dfafda77f..0000000000
--- a/docs/angular-ui-kit/components/dyte-audio-visualizer.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-audio-visualizer.svg
-description: >-
- Learn how to use and customize the dyte-audio-visualizer component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-audio-visualizer
-
-An audio visualizer component which visualizes a participants audio.
-
-Commonly used inside `dyte-name-tag`.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-audio-visualizer
-
diff --git a/docs/angular-ui-kit/components/dyte-avatar.mdx b/docs/angular-ui-kit/components/dyte-avatar.mdx
deleted file mode 100644
index 4fa0ff207f..0000000000
--- a/docs/angular-ui-kit/components/dyte-avatar.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-avatar.svg
-description: >-
- Learn how to use and customize the dyte-avatar component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-avatar
-
-Avatar component which renders a participant's image or their initials.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-avatar
-
diff --git a/docs/angular-ui-kit/components/dyte-button.mdx b/docs/angular-ui-kit/components/dyte-button.mdx
deleted file mode 100644
index 9184efa2bc..0000000000
--- a/docs/angular-ui-kit/components/dyte-button.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-button.svg
-description: >-
- Learn how to use and customize the dyte-button component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-button
-
-A button that follows Dyte's Design System.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-button
-
diff --git a/docs/angular-ui-kit/components/dyte-camera-toggle.mdx b/docs/angular-ui-kit/components/dyte-camera-toggle.mdx
deleted file mode 100644
index ed9e7a6470..0000000000
--- a/docs/angular-ui-kit/components/dyte-camera-toggle.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-camera-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-camera-toggle
-
-A button which toggles your camera.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-camera-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-chat-toggle.mdx b/docs/angular-ui-kit/components/dyte-chat-toggle.mdx
deleted file mode 100644
index bfd277f06a..0000000000
--- a/docs/angular-ui-kit/components/dyte-chat-toggle.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-chat-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-chat-toggle
-
-A button which toggles visibility of chat.
-
-You need to pass the `meeting` object to it to see the unread messages count badge.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSidebar: boolean;
- sidebar: 'chat' | 'none';
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-chat-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-chat.mdx b/docs/angular-ui-kit/components/dyte-chat.mdx
deleted file mode 100644
index 540406a37c..0000000000
--- a/docs/angular-ui-kit/components/dyte-chat.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-chat.svg
-description: >-
- Learn how to use and customize the dyte-chat component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-chat
-
-Fully featured chat component with image & file upload, emoji picker and auto-scroll.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-chat
-
diff --git a/docs/angular-ui-kit/components/dyte-clock.mdx b/docs/angular-ui-kit/components/dyte-clock.mdx
deleted file mode 100644
index 63bbc7145d..0000000000
--- a/docs/angular-ui-kit/components/dyte-clock.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-clock.svg
-description: >-
- Learn how to use and customize the dyte-clock component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-clock
-
-## Props
-
-
-
-
- Angular UI Kit dyte-clock
-
diff --git a/docs/angular-ui-kit/components/dyte-confirmation-modal.mdx b/docs/angular-ui-kit/components/dyte-confirmation-modal.mdx
deleted file mode 100644
index 59084906e2..0000000000
--- a/docs/angular-ui-kit/components/dyte-confirmation-modal.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-confirmation-modal component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-confirmation-modal
-
-A confirmation modal.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-confirmation-modal
-
diff --git a/docs/angular-ui-kit/components/dyte-controlbar-button.mdx b/docs/angular-ui-kit/components/dyte-controlbar-button.mdx
deleted file mode 100644
index c97ba0ce3c..0000000000
--- a/docs/angular-ui-kit/components/dyte-controlbar-button.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-controlbar-button.svg
-description: >-
- Learn how to use and customize the dyte-controlbar-button component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-controlbar-button
-
-A skeleton component used for composing buttons.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-controlbar-button
-
diff --git a/docs/angular-ui-kit/components/dyte-controlbar.mdx b/docs/angular-ui-kit/components/dyte-controlbar.mdx
deleted file mode 100644
index dec3ff7bec..0000000000
--- a/docs/angular-ui-kit/components/dyte-controlbar.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-controlbar component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-controlbar
-
-Controlbar component provides you with various designs as variants.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-controlbar
-
diff --git a/docs/angular-ui-kit/components/dyte-dialog-manager.mdx b/docs/angular-ui-kit/components/dyte-dialog-manager.mdx
deleted file mode 100644
index 8da5ca9259..0000000000
--- a/docs/angular-ui-kit/components/dyte-dialog-manager.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-dialog-manager component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-dialog-manager
-
-A component which handles all dialog elements in a component such as:
-
-- dyte-settings
-- dyte-leave-meeting
-- dyte-permissions-message
-- dyte-image-viewer
-- dyte-remote-access-manager
-- dyte-breakout-rooms-manager
-
-This components depends on the values from `states` object.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-dialog-manager
-
diff --git a/docs/angular-ui-kit/components/dyte-dialog.mdx b/docs/angular-ui-kit/components/dyte-dialog.mdx
deleted file mode 100644
index 336511bcbf..0000000000
--- a/docs/angular-ui-kit/components/dyte-dialog.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-dialog.svg
-description: >-
- Learn how to use and customize the dyte-dialog component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-dialog
-
-A dialog component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-dialog
-
diff --git a/docs/angular-ui-kit/components/dyte-emoji-picker.mdx b/docs/angular-ui-kit/components/dyte-emoji-picker.mdx
deleted file mode 100644
index f064788880..0000000000
--- a/docs/angular-ui-kit/components/dyte-emoji-picker.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-emoji-picker.svg
-description: >-
- Learn how to use and customize the dyte-emoji-picker component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-emoji-picker
-
-A very simple emoji picker component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-emoji-picker
-
diff --git a/docs/angular-ui-kit/components/dyte-ended-screen.mdx b/docs/angular-ui-kit/components/dyte-ended-screen.mdx
deleted file mode 100644
index 6e640c0457..0000000000
--- a/docs/angular-ui-kit/components/dyte-ended-screen.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-ended-screen.svg
-description: >-
- Learn how to use and customize the dyte-ended-screen component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-ended-screen
-
-A screen which shows a meeting has ended.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-ended-screen
-
diff --git a/docs/angular-ui-kit/components/dyte-file-message.mdx b/docs/angular-ui-kit/components/dyte-file-message.mdx
deleted file mode 100644
index 5f9f42376e..0000000000
--- a/docs/angular-ui-kit/components/dyte-file-message.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-file-message component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-file-message
-
-A component which renders a file message from chat.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-file-message
-
diff --git a/docs/angular-ui-kit/components/dyte-fullscreen-toggle.mdx b/docs/angular-ui-kit/components/dyte-fullscreen-toggle.mdx
deleted file mode 100644
index 758b016157..0000000000
--- a/docs/angular-ui-kit/components/dyte-fullscreen-toggle.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-fullscreen-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-fullscreen-toggle
-
-A button which toggles full screen mode for any
-existing `dyte-meeting` component in the DOM.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-fullscreen-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-grid-pagination.mdx b/docs/angular-ui-kit/components/dyte-grid-pagination.mdx
deleted file mode 100644
index 163bf31a69..0000000000
--- a/docs/angular-ui-kit/components/dyte-grid-pagination.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-grid-pagination.svg
-description: >-
- Learn how to use and customize the dyte-grid-pagination component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-grid-pagination
-
-A component which allows you to change current page and view mode
-of active participants list. This is reflected in the `dyte-grid` component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-grid-pagination
-
diff --git a/docs/angular-ui-kit/components/dyte-grid.mdx b/docs/angular-ui-kit/components/dyte-grid.mdx
deleted file mode 100644
index 7dde3f873a..0000000000
--- a/docs/angular-ui-kit/components/dyte-grid.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-grid.svg
-description: >-
- Learn how to use and customize the dyte-grid component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-grid
-
-The main grid component which abstracts all the grid handling logic and renders it for you.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-grid
-
diff --git a/docs/angular-ui-kit/components/dyte-header.mdx b/docs/angular-ui-kit/components/dyte-header.mdx
deleted file mode 100644
index d39525ffae..0000000000
--- a/docs/angular-ui-kit/components/dyte-header.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-header component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-header
-
-A component that houses all the header components.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-header
-
diff --git a/docs/angular-ui-kit/components/dyte-icon.mdx b/docs/angular-ui-kit/components/dyte-icon.mdx
deleted file mode 100644
index b2f2854705..0000000000
--- a/docs/angular-ui-kit/components/dyte-icon.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-icon component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-icon
-
-An icon component which accepts an svg string and renders it.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-icon
-
diff --git a/docs/angular-ui-kit/components/dyte-idle-screen.mdx b/docs/angular-ui-kit/components/dyte-idle-screen.mdx
deleted file mode 100644
index 125b4913d5..0000000000
--- a/docs/angular-ui-kit/components/dyte-idle-screen.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-idle-screen.svg
-description: >-
- Learn how to use and customize the dyte-idle-screen component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-idle-screen
-
-A screen that handles the idle state,
-i.e; when you are waiting for data about the meeting, specifically the `meeting` object.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-idle-screen
-
diff --git a/docs/angular-ui-kit/components/dyte-image-message.mdx b/docs/angular-ui-kit/components/dyte-image-message.mdx
deleted file mode 100644
index 1ad7eb47af..0000000000
--- a/docs/angular-ui-kit/components/dyte-image-message.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-image-message component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-image-message
-
-A component which renders an image message from chat.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-image-message
-
diff --git a/docs/angular-ui-kit/components/dyte-image-viewer.mdx b/docs/angular-ui-kit/components/dyte-image-viewer.mdx
deleted file mode 100644
index 47ca4f210d..0000000000
--- a/docs/angular-ui-kit/components/dyte-image-viewer.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-image-viewer.svg
-description: >-
- Learn how to use and customize the dyte-image-viewer component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-image-viewer
-
-A component which shows an image sent via chat.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-image-viewer
-
diff --git a/docs/angular-ui-kit/components/dyte-leave-button.mdx b/docs/angular-ui-kit/components/dyte-leave-button.mdx
deleted file mode 100644
index b8e48af05d..0000000000
--- a/docs/angular-ui-kit/components/dyte-leave-button.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-leave-button component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-leave-button
-
-A button which toggles visilibility of the leave confirmation dialog.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-leave-button
-
diff --git a/docs/angular-ui-kit/components/dyte-leave-meeting.mdx b/docs/angular-ui-kit/components/dyte-leave-meeting.mdx
deleted file mode 100644
index 08d12e25f7..0000000000
--- a/docs/angular-ui-kit/components/dyte-leave-meeting.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-leave-meeting.svg
-description: >-
- Learn how to use and customize the dyte-leave-meeting component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-leave-meeting
-
-A component which allows you to leave a meeting or
-end meeting for all, if you have the permission.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-leave-meeting
-
diff --git a/docs/angular-ui-kit/components/dyte-logo.mdx b/docs/angular-ui-kit/components/dyte-logo.mdx
deleted file mode 100644
index 08555f5886..0000000000
--- a/docs/angular-ui-kit/components/dyte-logo.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-logo.svg
-description: >-
- Learn how to use and customize the dyte-logo component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-logo
-
-A component which loads the logo from your config, or via the `logo-url` attribute.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-logo
-
diff --git a/docs/angular-ui-kit/components/dyte-meeting-title.mdx b/docs/angular-ui-kit/components/dyte-meeting-title.mdx
deleted file mode 100644
index 7bbfe5a978..0000000000
--- a/docs/angular-ui-kit/components/dyte-meeting-title.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-meeting-title.svg
-description: >-
- Learn how to use and customize the dyte-meeting-title component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-meeting-title
-
-A component which displays the title of the meeting.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-meeting-title
-
diff --git a/docs/angular-ui-kit/components/dyte-meeting.mdx b/docs/angular-ui-kit/components/dyte-meeting.mdx
deleted file mode 100644
index dbc96ea2a8..0000000000
--- a/docs/angular-ui-kit/components/dyte-meeting.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-meeting.svg
-description: >-
- Learn how to use and customize the dyte-meeting component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-meeting
-
-A single component which renders an entire meeting UI.
-
-It loads your preset and renders the UI based on it.
-With this component, you don't have to handle all the states,
-dialogs and other smaller bits of managing the application.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-meeting
-
diff --git a/docs/angular-ui-kit/components/dyte-menu-item.mdx b/docs/angular-ui-kit/components/dyte-menu-item.mdx
deleted file mode 100644
index 8f07e04840..0000000000
--- a/docs/angular-ui-kit/components/dyte-menu-item.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-menu-item component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-menu-item
-
-A menu item component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-menu-item
-
diff --git a/docs/angular-ui-kit/components/dyte-menu-list.mdx b/docs/angular-ui-kit/components/dyte-menu-list.mdx
deleted file mode 100644
index 0e7f2d2f38..0000000000
--- a/docs/angular-ui-kit/components/dyte-menu-list.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-menu-list component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-menu-list
-
-A menu list component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-menu-list
-
diff --git a/docs/angular-ui-kit/components/dyte-menu.mdx b/docs/angular-ui-kit/components/dyte-menu.mdx
deleted file mode 100644
index 4a3bd1243e..0000000000
--- a/docs/angular-ui-kit/components/dyte-menu.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-menu.svg
-description: >-
- Learn how to use and customize the dyte-menu component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-menu
-
-A menu component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-menu
-
diff --git a/docs/angular-ui-kit/components/dyte-mic-toggle.mdx b/docs/angular-ui-kit/components/dyte-mic-toggle.mdx
deleted file mode 100644
index 9f982c6d8e..0000000000
--- a/docs/angular-ui-kit/components/dyte-mic-toggle.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-mic-toggle component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-mic-toggle
-
-A button which toggles your microphone.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-mic-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-mixed-grid.mdx b/docs/angular-ui-kit/components/dyte-mixed-grid.mdx
deleted file mode 100644
index b2adb12cf7..0000000000
--- a/docs/angular-ui-kit/components/dyte-mixed-grid.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-mixed-grid.svg
-description: >-
- Learn how to use and customize the dyte-mixed-grid component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-mixed-grid
-
-A grid component which handles screenshares, plugins and participants.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-mixed-grid
-
diff --git a/docs/angular-ui-kit/components/dyte-more-toggle.mdx b/docs/angular-ui-kit/components/dyte-more-toggle.mdx
deleted file mode 100644
index bbea131ec8..0000000000
--- a/docs/angular-ui-kit/components/dyte-more-toggle.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-more-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-more-toggle
-
-A button which toggles visibility of a more menu.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeMoreMenu: boolean;
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-more-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-name-tag.mdx b/docs/angular-ui-kit/components/dyte-name-tag.mdx
deleted file mode 100644
index 52be7f61ca..0000000000
--- a/docs/angular-ui-kit/components/dyte-name-tag.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-name-tag.svg
-description: >-
- Learn how to use and customize the dyte-name-tag component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-name-tag
-
-A component which shows a participant's name.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-name-tag
-
diff --git a/docs/angular-ui-kit/components/dyte-network-indicator.mdx b/docs/angular-ui-kit/components/dyte-network-indicator.mdx
deleted file mode 100644
index 2c4dd91849..0000000000
--- a/docs/angular-ui-kit/components/dyte-network-indicator.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-network-indicator component in Dyte's React UI
- Kit with our detailed documentation.
----
-
-# dyte-network-indicator
-
-A component that indicates poor network connection.
-
-It listens to the mediaScoreUpdate event of the passed participant to get the score.
-
-```tsx
-(participant as DyteParticipant).addListener(
- 'mediaScoreUpdate',
- ({ kind, isScreenshare, score, scoreStats }) => {
- console.log(
- `Score for ${isScreenshare ? 'screen share' : ''} ${kind} was:: ${score}`,
- );
- },
-);
-```
-
-:::note info
-
-This component will only be visible if the network quality is poor (less than or equal to 3, on a scale of 5, 5 being best).
-
-:::
-
-## Props
-
-
-
-
- React UI Kit dyte-network-indicator
-
diff --git a/docs/angular-ui-kit/components/dyte-notification.mdx b/docs/angular-ui-kit/components/dyte-notification.mdx
deleted file mode 100644
index 064358d577..0000000000
--- a/docs/angular-ui-kit/components/dyte-notification.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-notification.svg
-description: >-
- Learn how to use and customize the dyte-notification component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-notification
-
-A component which shows a notification.
-
-You need to remove the element after you receive the
-`dyteNotificationDismiss` event.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-notification
-
diff --git a/docs/angular-ui-kit/components/dyte-notifications.mdx b/docs/angular-ui-kit/components/dyte-notifications.mdx
deleted file mode 100644
index ed4b0638e1..0000000000
--- a/docs/angular-ui-kit/components/dyte-notifications.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-notifications component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-notifications
-
-A component which handles notifications.
-
-You can configure which notifications you want to see and which ones you want to hear.
-There are also certain limits which you can set as well.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-notifications
-
diff --git a/docs/angular-ui-kit/components/dyte-overlay-modal.mdx b/docs/angular-ui-kit/components/dyte-overlay-modal.mdx
deleted file mode 100644
index 56e2124a58..0000000000
--- a/docs/angular-ui-kit/components/dyte-overlay-modal.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-overlay-modal component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-overlay-modal
-
-A confirmation modal.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-overlay-modal
-
diff --git a/docs/angular-ui-kit/components/dyte-participant-count.mdx b/docs/angular-ui-kit/components/dyte-participant-count.mdx
deleted file mode 100644
index f3cb8846fa..0000000000
--- a/docs/angular-ui-kit/components/dyte-participant-count.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participant-count.svg
-description: >-
- Learn how to use and customize the dyte-participant-count component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-participant-count
-
-A component which shows count of total joined participants in a meeting.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-participant-count
-
diff --git a/docs/angular-ui-kit/components/dyte-participant-tile.mdx b/docs/angular-ui-kit/components/dyte-participant-tile.mdx
deleted file mode 100644
index f5e9330090..0000000000
--- a/docs/angular-ui-kit/components/dyte-participant-tile.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participant-tile.svg
-description: >-
- Learn how to use and customize the dyte-participant-tile component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-participant-tile
-
-A component which plays a participants video and allows for placement
-of components like `dyte-name-tag`, `dyte-audio-visualizer` or any other component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-participant-tile
-
diff --git a/docs/angular-ui-kit/components/dyte-participant.mdx b/docs/angular-ui-kit/components/dyte-participant.mdx
deleted file mode 100644
index fdb2c7edcb..0000000000
--- a/docs/angular-ui-kit/components/dyte-participant.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-participant component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-participant
-
-A participant entry component used inside `dyte-participants` which shows data like:
-name, picture and media device status.
-
-You can perform privileged actions on the participant too.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-participant
-
diff --git a/docs/angular-ui-kit/components/dyte-participants-audio.mdx b/docs/angular-ui-kit/components/dyte-participants-audio.mdx
deleted file mode 100644
index 34b191fa77..0000000000
--- a/docs/angular-ui-kit/components/dyte-participants-audio.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participants-audio.svg
-description: >-
- Learn how to use and customize the dyte-participants-audio component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-participants-audio
-
-A component which plays all the audio from participants and screenshares.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-participants-audio
-
diff --git a/docs/angular-ui-kit/components/dyte-participants-stage-list.mdx b/docs/angular-ui-kit/components/dyte-participants-stage-list.mdx
deleted file mode 100644
index cc071b0a1c..0000000000
--- a/docs/angular-ui-kit/components/dyte-participants-stage-list.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-participants-stage-list component in
- Dyte's Angular UI Kit with our detailed documentation.
----
-
-# dyte-participants-stage-list
-
-A component which lists all participants, with ability to
-run privileged actions on each participant according to your permissions.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-participants-stage-list
-
diff --git a/docs/angular-ui-kit/components/dyte-participants-toggle.mdx b/docs/angular-ui-kit/components/dyte-participants-toggle.mdx
deleted file mode 100644
index 2d3e7ad0b1..0000000000
--- a/docs/angular-ui-kit/components/dyte-participants-toggle.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-participants-toggle component in
- Dyte's Angular UI Kit with our detailed documentation.
----
-
-# dyte-participants-toggle
-
-A button which toggles visibility of participants.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSidebar: boolean;
- sidebar: 'participants' | 'none';
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-participants-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-participants.mdx b/docs/angular-ui-kit/components/dyte-participants.mdx
deleted file mode 100644
index 38f0fc289e..0000000000
--- a/docs/angular-ui-kit/components/dyte-participants.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participants.svg
-description: >-
- Learn how to use and customize the dyte-participants component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-participants
-
-A component which lists all participants, with ability to
-run privileged actions on each participant according to your permissions.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-participants
-
diff --git a/docs/angular-ui-kit/components/dyte-permissions-message.mdx b/docs/angular-ui-kit/components/dyte-permissions-message.mdx
deleted file mode 100644
index dd5ed7f511..0000000000
--- a/docs/angular-ui-kit/components/dyte-permissions-message.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-permissions-message component in
- Dyte's Angular UI Kit with our detailed documentation.
----
-
-# dyte-permissions-message
-
-A component which shows permission related troubleshooting
-information.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-permissions-message
-
diff --git a/docs/angular-ui-kit/components/dyte-plugin-main.mdx b/docs/angular-ui-kit/components/dyte-plugin-main.mdx
deleted file mode 100644
index 4647207242..0000000000
--- a/docs/angular-ui-kit/components/dyte-plugin-main.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-plugin-main.svg
-description: >-
- Learn how to use and customize the dyte-plugin-main component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-plugin-main
-
-A component which loads a plugin.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-plugin-main
-
diff --git a/docs/angular-ui-kit/components/dyte-plugins-toggle.mdx b/docs/angular-ui-kit/components/dyte-plugins-toggle.mdx
deleted file mode 100644
index 2c4d5d67a1..0000000000
--- a/docs/angular-ui-kit/components/dyte-plugins-toggle.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-plugins-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-plugins-toggle
-
-A button which toggles visibility of plugins.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSidebar: boolean;
- sidebar: 'plugins' | 'none';
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-plugins-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-plugins.mdx b/docs/angular-ui-kit/components/dyte-plugins.mdx
deleted file mode 100644
index 5cc225dd26..0000000000
--- a/docs/angular-ui-kit/components/dyte-plugins.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-plugins.svg
-description: >-
- Learn how to use and customize the dyte-plugins component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-plugins
-
-A component which lists all available plugins from their preset,
-and ability to enable or disable plugins.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-plugins
-
diff --git a/docs/angular-ui-kit/components/dyte-poll-form.mdx b/docs/angular-ui-kit/components/dyte-poll-form.mdx
deleted file mode 100644
index e74b6a2403..0000000000
--- a/docs/angular-ui-kit/components/dyte-poll-form.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-poll-form component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-poll-form
-
-A component that lets you create a poll.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-poll-form
-
diff --git a/docs/angular-ui-kit/components/dyte-poll.mdx b/docs/angular-ui-kit/components/dyte-poll.mdx
deleted file mode 100644
index abdb6629d7..0000000000
--- a/docs/angular-ui-kit/components/dyte-poll.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-poll component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-poll
-
-A poll component.
-
-Shows a poll where a user can vote.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-poll
-
diff --git a/docs/angular-ui-kit/components/dyte-polls-toggle.mdx b/docs/angular-ui-kit/components/dyte-polls-toggle.mdx
deleted file mode 100644
index a0cf099d9e..0000000000
--- a/docs/angular-ui-kit/components/dyte-polls-toggle.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-polls-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-polls-toggle
-
-A button which toggles visibility of polls.
-
-You need to pass the `meeting` object to it to see the unread polls count badge.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSidebar: boolean;
- sidebar: 'polls' | 'none';
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-polls-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-polls.mdx b/docs/angular-ui-kit/components/dyte-polls.mdx
deleted file mode 100644
index cb59680150..0000000000
--- a/docs/angular-ui-kit/components/dyte-polls.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-polls.svg
-description: >-
- Learn how to use and customize the dyte-polls component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-polls
-
-A component which lists all available plugins a user can access with
-the ability to enable or disable them as per their permissions.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-polls
-
diff --git a/docs/angular-ui-kit/components/dyte-recording-indicator.mdx b/docs/angular-ui-kit/components/dyte-recording-indicator.mdx
deleted file mode 100644
index 6f073ff00d..0000000000
--- a/docs/angular-ui-kit/components/dyte-recording-indicator.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-recording-indicator.svg
-description: >-
- Learn how to use and customize the dyte-recording-indicator component in
- Dyte's Angular UI Kit with our detailed documentation.
----
-
-# dyte-recording-indicator
-
-A component which indicates the recording status of a meeting.
-
-It will not render anything if no recording is taking place.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-recording-indicator
-
diff --git a/docs/angular-ui-kit/components/dyte-recording-toggle.mdx b/docs/angular-ui-kit/components/dyte-recording-toggle.mdx
deleted file mode 100644
index fa2ecf4401..0000000000
--- a/docs/angular-ui-kit/components/dyte-recording-toggle.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-recording-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-recording-toggle
-
-A button which toggles recording state of a meeting.
-
-Only a privileged user can perform this action,
-thus the button will not be visible for participants
-who don't have the permission to record a meeting.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-recording-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-remote-access-manager.mdx b/docs/angular-ui-kit/components/dyte-remote-access-manager.mdx
deleted file mode 100644
index 4d415465f1..0000000000
--- a/docs/angular-ui-kit/components/dyte-remote-access-manager.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-remote-access-manager.svg
-description: >-
- Learn how to use and customize the dyte-remote-access-manager component in
- Dyte's Angular UI Kit with our detailed documentation.
----
-
-# dyte-remote-access-manager
-
-A component which lets a user manage remote access requests for their screen.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-remote-access-manager
-
diff --git a/docs/angular-ui-kit/components/dyte-screen-share-toggle.mdx b/docs/angular-ui-kit/components/dyte-screen-share-toggle.mdx
deleted file mode 100644
index 95d769ef6e..0000000000
--- a/docs/angular-ui-kit/components/dyte-screen-share-toggle.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-screen-share-toggle component in
- Dyte's Angular UI Kit with our detailed documentation.
----
-
-# dyte-screen-share-toggle
-
-A button which toggles your screenshare.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-screen-share-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-screenshare-view.mdx b/docs/angular-ui-kit/components/dyte-screenshare-view.mdx
deleted file mode 100644
index af56d2baae..0000000000
--- a/docs/angular-ui-kit/components/dyte-screenshare-view.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-screenshare-view.svg
-description: >-
- Learn how to use and customize the dyte-screenshare-view component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-screenshare-view
-
-A component which plays a participant's screenshared video.
-
-It also allows for placement of other components similar to `dyte-participant-tile`.
-
-This component will not render anything if the participant hasn't start screensharing.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-screenshare-view
-
diff --git a/docs/angular-ui-kit/components/dyte-settings-audio.mdx b/docs/angular-ui-kit/components/dyte-settings-audio.mdx
deleted file mode 100644
index 9ee2992694..0000000000
--- a/docs/angular-ui-kit/components/dyte-settings-audio.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-settings-audio component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-settings-audio
-
-A component which lets to manage your audio devices and audio preferences.
-
-Emits `dyteStateUpdate` event with data for muting notification sounds:
-
-```ts
-{
- prefs: {
- muteNotificationSounds: boolean;
- }
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-settings-audio
-
diff --git a/docs/angular-ui-kit/components/dyte-settings-toggle.mdx b/docs/angular-ui-kit/components/dyte-settings-toggle.mdx
deleted file mode 100644
index 3df9afcd2d..0000000000
--- a/docs/angular-ui-kit/components/dyte-settings-toggle.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-settings-toggle component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-settings-toggle
-
-A button which toggles visibility of chat.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSettings: boolean;
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-settings-toggle
-
diff --git a/docs/angular-ui-kit/components/dyte-settings-video.mdx b/docs/angular-ui-kit/components/dyte-settings-video.mdx
deleted file mode 100644
index cad9e26670..0000000000
--- a/docs/angular-ui-kit/components/dyte-settings-video.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-settings-video component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-settings-video
-
-A component which lets to manage your camera devices and your video preferences.
-
-Emits `dyteStateUpdate` event with data for toggling mirroring of self video:
-
-```ts
-{
- prefs: {
- mirrorVideo: boolean;
- }
-}
-```
-
-## Props
-
-
-
-
- Angular UI Kit dyte-settings-video
-
diff --git a/docs/angular-ui-kit/components/dyte-settings.mdx b/docs/angular-ui-kit/components/dyte-settings.mdx
deleted file mode 100644
index e43676f803..0000000000
--- a/docs/angular-ui-kit/components/dyte-settings.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-settings.svg
-description: >-
- Learn how to use and customize the dyte-settings component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-settings
-
-A settings component to see and change your audio/video devices
-as well as see your connection quality.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-settings
-
diff --git a/docs/angular-ui-kit/components/dyte-setup-screen.mdx b/docs/angular-ui-kit/components/dyte-setup-screen.mdx
deleted file mode 100644
index da850d69e6..0000000000
--- a/docs/angular-ui-kit/components/dyte-setup-screen.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-setup-screen.svg
-description: >-
- Learn how to use and customize the dyte-setup-screen component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-setup-screen
-
-A screen shown before joining the meeting, where you can edit your display name,
-and media settings.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-setup-screen
-
diff --git a/docs/angular-ui-kit/components/dyte-sidebar.mdx b/docs/angular-ui-kit/components/dyte-sidebar.mdx
deleted file mode 100644
index 6c2d35f61a..0000000000
--- a/docs/angular-ui-kit/components/dyte-sidebar.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-sidebar.svg
-description: >-
- Learn how to use and customize the dyte-sidebar component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-sidebar
-
-A component which handles the sidebar and
-you can customize which sections you want, and which section you want as the default.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-sidebar
-
diff --git a/docs/angular-ui-kit/components/dyte-simple-grid.mdx b/docs/angular-ui-kit/components/dyte-simple-grid.mdx
deleted file mode 100644
index 2b317cc8f4..0000000000
--- a/docs/angular-ui-kit/components/dyte-simple-grid.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-simple-grid.svg
-description: >-
- Learn how to use and customize the dyte-simple-grid component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-simple-grid
-
-A grid component which renders only the participants in a simple grid.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-simple-grid
-
diff --git a/docs/angular-ui-kit/components/dyte-spinner.mdx b/docs/angular-ui-kit/components/dyte-spinner.mdx
deleted file mode 100644
index b1b2c93094..0000000000
--- a/docs/angular-ui-kit/components/dyte-spinner.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-spinner.svg
-description: >-
- Learn how to use and customize the dyte-spinner component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-spinner
-
-A component which shows an animating spinner.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-spinner
-
diff --git a/docs/angular-ui-kit/components/dyte-spotlight-grid.mdx b/docs/angular-ui-kit/components/dyte-spotlight-grid.mdx
deleted file mode 100644
index e248b11169..0000000000
--- a/docs/angular-ui-kit/components/dyte-spotlight-grid.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-spotlight-grid.svg
-description: >-
- Learn how to use and customize the dyte-spotlight-grid component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-spotlight-grid
-
-A grid component that renders two lists of participants: `pinnedParticipants` and `participants`.
-
-You can customize the layout to a `column` view, by default is is `row`.
-
-- Participants from `pinnedParticipants[]` are rendered inside a larger grid.
-- Participants from `participants[]` array are rendered in a smaller grid.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-spotlight-grid
-
diff --git a/docs/angular-ui-kit/components/dyte-stage.mdx b/docs/angular-ui-kit/components/dyte-stage.mdx
deleted file mode 100644
index 33d9966747..0000000000
--- a/docs/angular-ui-kit/components/dyte-stage.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-stage component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-stage
-
-A component used as a stage that commonly houses
-the `grid` and `sidebar` components.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-stage
-
diff --git a/docs/angular-ui-kit/components/dyte-switch.mdx b/docs/angular-ui-kit/components/dyte-switch.mdx
deleted file mode 100644
index 5fa5c5e691..0000000000
--- a/docs/angular-ui-kit/components/dyte-switch.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-switch.svg
-description: >-
- Learn how to use and customize the dyte-switch component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-switch
-
-A switch component which follows Dyte's Design System.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-switch
-
diff --git a/docs/angular-ui-kit/components/dyte-text-field.mdx b/docs/angular-ui-kit/components/dyte-text-field.mdx
deleted file mode 100644
index 8a3be89ba9..0000000000
--- a/docs/angular-ui-kit/components/dyte-text-field.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-text-field component in Dyte's Angular
- UI Kit with our detailed documentation.
----
-
-# dyte-text-field
-
-A text field component.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-text-field
-
diff --git a/docs/angular-ui-kit/components/dyte-text-message.mdx b/docs/angular-ui-kit/components/dyte-text-message.mdx
deleted file mode 100644
index 4b6e5484ee..0000000000
--- a/docs/angular-ui-kit/components/dyte-text-message.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-text-message component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-text-message
-
-A component which renders a text message from chat.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-text-message
-
diff --git a/docs/angular-ui-kit/components/dyte-tooltip.mdx b/docs/angular-ui-kit/components/dyte-tooltip.mdx
deleted file mode 100644
index 99d34fd2bb..0000000000
--- a/docs/angular-ui-kit/components/dyte-tooltip.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-tooltip.svg
-description: >-
- Learn how to use and customize the dyte-tooltip component in Dyte's Angular UI
- Kit with our detailed documentation.
----
-
-# dyte-tooltip
-
-Tooltip component which follows Dyte's Design System.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-tooltip
-
diff --git a/docs/angular-ui-kit/components/dyte-viewer-count.mdx b/docs/angular-ui-kit/components/dyte-viewer-count.mdx
deleted file mode 100644
index 21639f6007..0000000000
--- a/docs/angular-ui-kit/components/dyte-viewer-count.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-viewer-count component in Dyte's
- Angular UI Kit with our detailed documentation.
----
-
-# dyte-viewer-count
-
-A component which shows count of total joined participants in a meeting.
-
-## Props
-
-
-
-
- Angular UI Kit dyte-viewer-count
-
diff --git a/docs/angular-ui-kit/components/gallery.mdx b/docs/angular-ui-kit/components/gallery.mdx
deleted file mode 100644
index e32c86b88b..0000000000
--- a/docs/angular-ui-kit/components/gallery.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-sidebar_position: 1
-slug: /components
-description: >-
- Learn how to use and customize the Gallery component in Dyte's Angular UI Kit
- with our detailed documentation.
----
-
-# Gallery
-
-
-
-
-
-
-
-
-
-
- Angular UI Kit Gallery
-
diff --git a/docs/angular-ui-kit/customizations/_category_.json b/docs/angular-ui-kit/customizations/_category_.json
deleted file mode 100644
index a827607d55..0000000000
--- a/docs/angular-ui-kit/customizations/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 6,
- "label": "Customizations",
- "collapsible": true
-}
diff --git a/docs/angular-ui-kit/customizations/custom-iconpack.mdx b/docs/angular-ui-kit/customizations/custom-iconpack.mdx
deleted file mode 100644
index d9f423e0ac..0000000000
--- a/docs/angular-ui-kit/customizations/custom-iconpack.mdx
+++ /dev/null
@@ -1,156 +0,0 @@
----
-sidebar_position: 6
----
-
-# Customize Meeting Icons
-
-Dyte's UI Kit provides all the necessary UI components to allow complete customization of all its UI Kit components. You can customize your meeting icons such as chat, clock, leave meeting, mic on and off, and more.
-
-Customizing the meeting icons involve the following steps:
-
-1. Integrate Dyte's web SDK into your web application
-2. Customize the default icon pack
-
-## Step 1: Integrate Dyte's web SDK into your web application
-
-
-
- To get started with customizing the icons for your meetings, you need to first integrate Dyte's Web SDK into your web application.
-
- 1. Install the package using npm or Yarn.
-
-```bash npm2yarn
-npm install @dytesdk/angular-ui-kit @dytesdk/web-core
-```
-
-2. Create a meeting room using the [Create Meeting API](/api#/operations/create_meeting).
-3. Generate an `authToken` using the [Add Participant API](/api#/operations/add_participant). An `authToken` is a unique token that is used to identify a user in the meeting.
-4. Initialize the Dyte client using the `DyteClient.init({ authToken })`. It returns the meeting object.
-5. Pass the meeting object to the UI Kit.
-
-The `dyte-meeting` component generates the default UI experience. Read more about how to customize the UI [here](/angular-ui-kit/basics/components-basics).
-
-```ts
-class AppComponent {
- title = 'MyProject';
- @ViewChild('myid') meetingComponent: DyteMeeting;
- dyteMeeting: DyteClient;
-
- async ngAfterViewInit() {
- const meeting = await DyteClient.init({
- authToken: '',
- });
- meeting.join();
- this.dyteMeeting = meeting;
- if (this.meetingComponent) this.meetingComponent.meeting = meeting;
- }
-}
-```
-
-
-
-## Step 2: Customize default icon pack
-
-Now that you've integrated Dyte SDK into your application successfully, let's quickly understand how you can customize the icon set for your application.
-
-Dyte's default icon set is available at [icons.dyte.io](https://icons.dyte.io/). You can modify and generate your custom icon set from here.
-
-In order to replace Dyte's default icon set with your own, you can pass the link to your icon set in the `dyte-meeting` component like so.
-
-```ts
-class AppComponent {
- title = 'MyProject';
- @ViewChild('myid') meetingComponent: DyteMeeting;
- dyteMeeting: DyteClient;
-
- async ngAfterViewInit() {
- const meeting = await DyteClient.init({
- authToken: '',
- });
- meeting.join();
- this.dyteMeeting = meeting;
- if (!this.meetingComponent) {
- throw Error('Component is empty');
- }
- this.meetingComponent.meeting = meeting;
-
- // Pass the icon pack url
- this.meetingComponent.iconPackUrl = 'https://example.com/my-icon-pack.json';
- }
-}
-```
-
-## IconPack Reference
-
-Ƭ **IconPack**: typeof `defaultIconPack`
-
-Icon Pack object type:
-
-- Object key denotes name of icon
-- Object value stores the SVG string
-
-### defaultIconPack
-
-• `Const` **defaultIconPack**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------------------------- | :------- |
-| `attach` | `string` |
-| `call_end` | `string` |
-| `chat` | `string` |
-| `checkmark` | `string` |
-| `chevron_down` | `string` |
-| `chevron_left` | `string` |
-| `chevron_right` | `string` |
-| `chevron_up` | `string` |
-| `clock` | `string` |
-| `copy` | `string` |
-| `disconnected` | `string` |
-| `dismiss` | `string` |
-| `download` | `string` |
-| `emoji_multiple` | `string` |
-| `full_screen_maximize` | `string` |
-| `full_screen_minimize` | `string` |
-| `image` | `string` |
-| `image_off` | `string` |
-| `join_stage` | `string` |
-| `leave_stage` | `string` |
-| `mic_off` | `string` |
-| `mic_on` | `string` |
-| `more_vertical` | `string` |
-| `participants` | `string` |
-| `people` | `string` |
-| `pin` | `string` |
-| `pin_off` | `string` |
-| `poll` | `string` |
-| `recording` | `string` |
-| `rocket` | `string` |
-| `search` | `string` |
-| `send` | `string` |
-| `settings` | `string` |
-| `share` | `string` |
-| `share_screen_person` | `string` |
-| `share_screen_start` | `string` |
-| `share_screen_stop` | `string` |
-| `speaker` | `string` |
-| `spinner` | `string` |
-| `spotlight` | `string` |
-| `stop_recording` | `string` |
-| `subtract` | `string` |
-| `vertical_scroll` | `string` |
-| `vertical_scroll_disabled` | `string` |
-| `video_off` | `string` |
-| `video_on` | `string` |
-| `wand` | `string` |
-| `warning` | `string` |
-| `wifi` | `string` |
-
-
- Angular UI Kit Customize Meeting Icons
-
-
diff --git a/docs/angular-ui-kit/customizations/custom-locale.mdx b/docs/angular-ui-kit/customizations/custom-locale.mdx
deleted file mode 100644
index 49f0e9550f..0000000000
--- a/docs/angular-ui-kit/customizations/custom-locale.mdx
+++ /dev/null
@@ -1,103 +0,0 @@
----
-sidebar_position: 6
-description: >-
- Learn how to customize the locale settings in Dyte's Angular UI Kit with our
- comprehensive documentation.
----
-
-# Customize Meeting Locale
-
-Dyte's UI Kit allows you to customize all the text within the video call interface. You can personalize the text to align with your specific locale needs.
-
-Customizing the locale involve the following steps:
-
-1. Integrate Dyte's web SDK into your web application
-2. Customize the default language pack
-
-## Step 1: Integrate Dyte's web SDK into your web application
-
-
-
- To get started with customizing the icons for your meetings, you need to first integrate Dyte's Web SDK into your web application.
-
- 1. Install the package using npm or Yarn.
-
-```bash npm2yarn
-npm install @dytesdk/angular-ui-kit @dytesdk/web-core
-```
-
-2. Create a meeting room using the [Create Meeting API](/api#/operations/create_meeting).
-3. Generate an `authToken` using the [Add Participant API](/api#/operations/add_participant). An `authToken` is a unique token that is used to identify a user in the meeting.
-4. Initialize the Dyte client using the `DyteClient.init({ authToken })`. It returns the meeting object.
-5. Pass the meeting object to the UI Kit.
-
-The `dyte-meeting` component generates the default UI experience. Read more about how to customize the UI [here](/angular-ui-kit/basics/components-basics).
-
-```ts
-class AppComponent {
- title = 'MyProject';
- @ViewChild('myid') meetingComponent: DyteMeeting;
- dyteMeeting: DyteClient;
-
- async ngAfterViewInit() {
- const meeting = await DyteClient.init({
- authToken: '',
- });
- meeting.join();
- this.dyteMeeting = meeting;
- if (this.meetingComponent) this.meetingComponent.meeting = meeting;
- }
-}
-```
-
-
-
-## Step 2: Customize the default language pack
-
-Now that you've integrated Dyte SDK into your application successfully, let's quickly understand how you can customize the language pack for your application.
-
-Dyte's default language pack can be imported like so.
-
-```jsx
-import { defaultLanguage, useLanguage } from '@dytesdk/angular-ui-kit';
-```
-
-In order to replace Dyte's default locale set with your own, you can pass your own locale to the `t` prop exposed by the UI components.
-
-```jsx
-// Customise Dyte's default locale object
-const myLanguagePack = useLanguage({
- ...defaultLanguage,
- mute_all: 'Mute All Users',
-});
-
-// In your component
-class AppComponent {
- title = 'MyProject';
- @ViewChild('myid') meetingComponent: DyteMeeting;
- dyteMeeting: DyteClient;
-
- async ngAfterViewInit() {
- const meeting = await DyteClient.init({
- authToken: '',
- });
- meeting.join();
- this.dyteMeeting = meeting;
- if (this.meetingComponent) this.meetingComponent.meeting = meeting;
- }
-}
-```
-
-The `useLanguage` function takes in your custom locale object as an argument and generates a function that retrieves the value associated with the provided key.
-
-import DefaultLanguageI18N from '/docs/partials/_default-language-i18n.mdx';
-
-
-
-
- Angular UI Kit Customize Meeting Locale
-
-
diff --git a/docs/angular-ui-kit/design-system.mdx b/docs/angular-ui-kit/design-system.mdx
deleted file mode 100644
index 00deeee616..0000000000
--- a/docs/angular-ui-kit/design-system.mdx
+++ /dev/null
@@ -1,239 +0,0 @@
----
-sidebar_position: 4
-description: >-
- Explore the design system and guidelines for using Dyte's Angular UI Kit in
- your applications.
----
-
-# Design System
-
-Read this blog post to know more:
-https://dyte.io/blog/new-dyte-video-sdk-design-system/
-
-## `provideDyteDesignSystem()` utility
-
-This is a very handy utility to configure the design system of UI Kit components
-programmatically, with very lines of code.
-
-```html
-
-
-
-```
-
-Read on to learn more about each token in detail.
-
-## Design Tokens
-
-UI Kit uses [design tokens](https://css-tricks.com/what-are-design-tokens/) for
-it's design system.
-
-Design tokens are the design related values which are used to maintain a design
-system, which provides flexibility in customizing the overall design of a system
-with values such as: typography, spacing, colors etc.
-
-These design tokens are stored and shared among components with the help of
-[CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties).
-
-### Typography
-
-```css
---dyte-font-family: Inter;
-```
-
-You can tweak the font family used in your UI Kit components easily with this
-token.
-
-You can edit this value in two ways with the provideDyteDesignSystem utility.
-
-#### Usage
-
-```js
-const designTokens = {
- fontFamily: 'Custom Font',
- // or
- googleFont: 'A Google Font',
-};
-```
-
-Set either of these values in your design tokens.
-
-1. With `fontFamily` 🪡 - Use a custom font family, you'll have to load the font
- manually.
-2. With `googleFont` ✨ - Use a google font, the font is loaded automatically.
-
-### Colors
-
-```css
---dyte-colors-brand-500: 33 96 253;
---dyte-colors-background-1000: 8 8 8;
-/* ... rest of the shades */
-```
-
-CSS Variables are set in the format: `R G B`.
-
-Here are all the color tokens, along with their default values.
-
-
-
-
-
-
-
-
-
-
-
-#### Usage
-
-:::info
-
-Note the exception of `text` and `text-on-brand` colors, you only specify a
-single color even though there are the following shades: 1000 - 600.
-
-This is because the `provideDyteDesignSystem()` utility sets the color you pass
-to `text-1000` and calculates lighter shades and sets them as well.
-
-Only pass objects for `brand` and `background` colors.
-
-:::
-
-A set of commonly used `background` shades are available by default with the
-`theme` property.
-
-Theme values are: `light`, `dark`, `darkest`.
-
-Edit color tokens like this. Only the colors you specify will be set.
-
-```js
-const designTokens = {
- theme: 'darkest',
- colors: {
- brand: { 500: '#0D51FD' },
- background: { 1000: '#080808' },
- text: '#ffffff',
- 'text-on-primary': '#ffffff',
- 'video-bg': '#181818',
- },
-};
-```
-
-### Spacing
-
-```css
---dyte-space-1: 4px;
-/* ... rest of the spacing scale */
-```
-
-The spacing scale is used for setting width, height, margins, paddings,
-positions etc. throughout the components.
-
-- The default value for the spacing scale base is `4px`.
-- Rest of the values are calculated with this base, set to `--dyte-space-1`.
-- Current spacing scale ranges from `0` to `96`.
-
-#### Usage
-
-Set the base of the spacing scale with `spacingBase` property.
-
-```js
-const designTokens = {
- spacingBase: 4, // value in px
-};
-```
-
-### Border Width & Border Radius
-
-Border Width and Border Radius properties can also be customized with design
-tokens!
-
-| Token Name | Values |
-| :------------- | :---------------------------------------------- |
-| `borderWidth` | `none`, `thin`, `fat` |
-| `borderRadius` | `sharp`, `rounded`, `extra-rounded`, `circular` |
-
-#### Usage
-
-```js
-const designTokens = {
- borderWidth: 'thin',
- borderRadius: 'rounded',
-};
-```
-
-
- Angular UI Kit Design System
-
-
diff --git a/docs/angular-ui-kit/introduction.mdx b/docs/angular-ui-kit/introduction.mdx
deleted file mode 100644
index 9b8096f959..0000000000
--- a/docs/angular-ui-kit/introduction.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-sidebar_position: 1
-slug: /
-image: /static/ui-kit/1.x.x/ui-kit-cover.jpg
----
-
-# Introduction
-
-Dyte's UI Kit is a prebuilt design library of UI components that makes it easy
-to integrate video and voice calls into any app or website within minutes.
-
-## Usage
-
-The UI Kit is a design library of prebuilt UI components built on top of the
-Core SDKs. Core SDK handles all the low-level media and network handling parts
-of a meeting and exposes APIs that the UI Kit uses.
-
-The library uses a layered design structure allowing you to start with a prebuilt component and slowly go down layers and add custom UI incrementally as your needs evolve.
-
-- **Use prebuilt component**: You can use prebuilt `dyte-meeting` component to
- create your meeting quickly. With this component, you don't have to handle all
- the states, dialogs, and other aspects of managing the application. The UI kit
- also respect your permissions and theming configuration from the preset.
-
-- **Mix and match**: Use some components from our component library, build some custom components yourself. Read the [basics of our component design](/angular-ui-kit/basics/components-basics) and checkout the [gallery of available components](/angular-ui-kit/components)
-
-
- Angular UI Kit Introduction
-
-
diff --git a/docs/angular-ui-kit/quickstart.mdx b/docs/angular-ui-kit/quickstart.mdx
deleted file mode 100644
index bf862995aa..0000000000
--- a/docs/angular-ui-kit/quickstart.mdx
+++ /dev/null
@@ -1,133 +0,0 @@
----
-sidebar_position: 3
-description: >-
- Get started quickly with Dyte's Angular UI Kit by following our step-by-step
- Quickstart guide.
----
-
-# Quickstart
-
-This quickstart shows how to use Dyte's UI Kit prebuilt components to add live
-video and audio to your [Angular](https://angular.io/) application with minimal
-coding and a variety of meeting UI customization options.
-
-For getting started quickly, you can use our
-[sample code](https://github.com/dyte-io/angular-samples#samples). You can clone
-and run a sample application from the
-[Angular UI Kit GitHub repository](https://github.com/dyte-io/angular-samples).
-
-## Before Getting Started
-
-- Make sure you've read the [Getting Started with Dyte](/getting-started) topic
- and completed the following steps:
-
- - Create a [Dyte Developer Account](https://dev.dyte.io/)
- - Create a [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
- - [Add Participant](/api/?v=v2#/operations/add_participant) to the meeting
-
-## Step 1: Install the SDK
-
-Since the UI Kit is built on top of the Core SDK, you must install the
-`web-core` package along with the `angular-ui-kit`.
-
-The web-core package handles all of the low-level logic required for a meeting
-by interacting with our servers. It is used to create a meeting object, which
-you need to pass to the UI Kit components.
-
-You can install the package using npm or Yarn.
-
-```bash npm2yarn
-npm install @dytesdk/angular-ui-kit @dytesdk/web-core
-```
-
-### Version
-
-| | |
-| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
-| @dytesdk/angular-ui-kit | [](https://badge.fury.io/js/@dytesdk%2Fangular-ui-kit) |
-| @dytesdk/web-core | [](https://badge.fury.io/js/@dytesdk%2Fweb-core) |
-
-## Step 2: Load `DyteComponentsModule`
-
-Load the `DyteComponentsModule` into your app module. This is typically the
-`app.module.ts` file.
-
-This allows you to use Dyte's UI components in your component HTML files. For
-more information on the components, see
-[Angular components](https://angular.io/guide/component-overview).
-
-```ts
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { DyteComponentsModule } from '@dytesdk/angular-ui-kit';
-
-import { AppComponent } from './app.component';
-
-@NgModule({
- declarations: [AppComponent],
- imports: [BrowserModule, DyteComponentsModule],
- providers: [],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
-```
-
-**(Optional) Step 3: Allow Synthetic Default Imports**
-
-If you are using TypeScript, set `allowSyntheticDefaultImports` as true in your
-`tsconfig.json`.
-
-```json
-{
- "compilerOptions": {
- "allowSyntheticDefaultImports": true
- }
-}
-```
-
-## Step 4: Add Dyte Meeting to the Template File
-
-Load the Dyte component to your template file (`component.html`).
-
-```html
-
-```
-
-## Step 5: Initialize the Dyte Meeting
-
-1. Get a reference to the meeting component using @ViewChild().
-2. Call the init() method and pass the authToken.
-
-| | |
-| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the Add Participant API. The API response contains the authToken. |
-
-3. Pass the meeting object to the UI Kit component. The meeting object serves as
- the link between web-core and UI Kit, allowing them to communicate with one
- another. Once the UI Kit has the meeting object, it can join and leave
- meetings, and so on.
-
-```ts
-class AppComponent {
- title = 'MyProject';
- @ViewChild('myid') meetingComponent: DyteMeeting;
- dyteMeeting: DyteClient;
-
- async ngAfterViewInit() {
- const meeting = await DyteClient.init({
- authToken: '',
- });
- meeting.join();
- this.dyteMeeting = meeting;
- if (this.meetingComponent) this.meetingComponent.meeting = meeting;
- }
-}
-```
-
-
- Angular UI Kit Quickstart
-
-
diff --git a/docs/angular-ui-kit/reference/classes/DyteNotificationsAudio.md b/docs/angular-ui-kit/reference/classes/DyteNotificationsAudio.md
deleted file mode 100644
index 04a7b1ac62..0000000000
--- a/docs/angular-ui-kit/reference/classes/DyteNotificationsAudio.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: DyteNotificationsAudio
-title: 'Class: DyteNotificationsAudio'
-custom_edit_url: null
----
-
-Handles notification sounds in a meeting
-
-## Constructors
-
-### constructor
-
-• **new DyteNotificationsAudio**()
-
-## Properties
-
-### audio
-
-• `Private` **audio**: `any`
-
-___
-
-### playing
-
-• `Private` **playing**: `any`
-
-## Methods
-
-### play
-
-▸ **play**(`sound`, `duration?`): `void`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sound` | ``"joined"`` \| ``"left"`` \| ``"message"`` |
-| `duration?` | `number` |
-
-#### Returns
-
-`void`
-
-___
-
-### setDevice
-
-▸ **setDevice**(`id`): `Promise`\<`void`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `id` | `string` |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-
- Angular UI Kit Class: DyteNotificationsAudio
-
-
diff --git a/docs/angular-ui-kit/reference/interfaces/Notification.md b/docs/angular-ui-kit/reference/interfaces/Notification.md
deleted file mode 100644
index 807069fd5c..0000000000
--- a/docs/angular-ui-kit/reference/interfaces/Notification.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: Notification
-title: 'Interface: Notification'
-custom_edit_url: null
----
-
-Notification object type, which is used in ` `.
-
-## Properties
-
-### button
-
-• `Optional` **button**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `onClick` | () => `void` |
-| `text` | `string` |
-| `variant?` | `ButtonVariant` |
-
-___
-
-### duration
-
-• `Optional` **duration**: `number`
-
-Duration in milliseconds, don't pass this if you want a stagnant notification
-
-___
-
-### icon
-
-• `Optional` **icon**: `string`
-
-___
-
-### id
-
-• **id**: `string`
-
-___
-
-### image
-
-• `Optional` **image**: `string`
-
-___
-
-### message
-
-• **message**: `string`
-
-
-
- Angular UI Kit Interface: Notification
-
-
diff --git a/docs/angular-ui-kit/reference/interfaces/PollObject.md b/docs/angular-ui-kit/reference/interfaces/PollObject.md
deleted file mode 100644
index 473db8389f..0000000000
--- a/docs/angular-ui-kit/reference/interfaces/PollObject.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-id: PollObject
-title: 'Interface: PollObject'
-custom_edit_url: null
----
-
-## Properties
-
-### anonymous
-
-• **anonymous**: `boolean`
-
-___
-
-### hideVotes
-
-• **hideVotes**: `boolean`
-
-___
-
-### options
-
-• **options**: `string`[]
-
-___
-
-### question
-
-• **question**: `string`
-
-
-
- Angular UI Kit Interface: PollObject
-
-
diff --git a/docs/angular-ui-kit/reference/interfaces/States.md b/docs/angular-ui-kit/reference/interfaces/States.md
deleted file mode 100644
index 684fc55dfe..0000000000
--- a/docs/angular-ui-kit/reference/interfaces/States.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-id: States
-title: 'Interface: States'
-custom_edit_url: null
----
-
-Global States object which are shared among components
-
-## Indexable
-
-▪ [state: `string`]: `any`
-
-## Properties
-
-### activeJoinStage
-
-• `Optional` **activeJoinStage**: `boolean`
-
-___
-
-### activeLeaveConfirmation
-
-• `Optional` **activeLeaveConfirmation**: `boolean`
-
-___
-
-### activeMoreMenu
-
-• `Optional` **activeMoreMenu**: `boolean`
-
-___
-
-### activePermissionsMessage
-
-• `Optional` **activePermissionsMessage**: `boolean`
-
-___
-
-### activePlugin
-
-• `Optional` **activePlugin**: `boolean`
-
-___
-
-### activeRemoteAccessManager
-
-• `Optional` **activeRemoteAccessManager**: `boolean`
-
-___
-
-### activeScreenShare
-
-• `Optional` **activeScreenShare**: `boolean`
-
-___
-
-### activeSettings
-
-• `Optional` **activeSettings**: `boolean`
-
-___
-
-### activeSidebar
-
-• `Optional` **activeSidebar**: `boolean`
-
-___
-
-### activeSpotlight
-
-• `Optional` **activeSpotlight**: `boolean`
-
-___
-
-### image
-
-• `Optional` **image**: `ImageMessage`
-
-___
-
-### maxPeers
-
-• `Optional` **maxPeers**: `number`
-
-___
-
-### meeting
-
-• `Optional` **meeting**: ``"idle"`` \| ``"setup"`` \| ``"joined"`` \| ``"ended"`` \| ``"waiting"``
-
-___
-
-### page
-
-• `Optional` **page**: `number`
-
-___
-
-### prefs
-
-• `Optional` **prefs**: [`UserPreferences`](UserPreferences.md)
-
-___
-
-### roomLeftState
-
-• `Optional` **roomLeftState**: `RoomLeftState`
-
-___
-
-### sidebar
-
-• `Optional` **sidebar**: ``"chat"`` \| ``"polls"`` \| ``"participants"`` \| ``"plugins"`` \| ``"none"``
-
-
-
- Angular UI Kit Interface: States
-
-
diff --git a/docs/angular-ui-kit/reference/interfaces/UIConfig.md b/docs/angular-ui-kit/reference/interfaces/UIConfig.md
deleted file mode 100644
index c988238842..0000000000
--- a/docs/angular-ui-kit/reference/interfaces/UIConfig.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-id: UIConfig
-title: 'Interface: UIConfig'
-custom_edit_url: null
----
-
-A UI Config object defines the UI of the meeting
-
-## Properties
-
-### config
-
-• `Optional` **config**: `Config`
-
-___
-
-### designTokens
-
-• `Optional` **designTokens**: `DesignTokens`
-
-___
-
-### root
-
-• `Optional` **root**: `UIRoot`
-
-___
-
-### styles
-
-• `Optional` **styles**: `UIStyles`
-
-
-
- Angular UI Kit Interface: UIConfig
-
-
diff --git a/docs/angular-ui-kit/reference/interfaces/UserPreferences.md b/docs/angular-ui-kit/reference/interfaces/UserPreferences.md
deleted file mode 100644
index bfd51ad5be..0000000000
--- a/docs/angular-ui-kit/reference/interfaces/UserPreferences.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-id: UserPreferences
-title: 'Interface: UserPreferences'
-custom_edit_url: null
----
-
-User preferences object type which are
-shared within the global States object.
-
-## Properties
-
-### autoScroll
-
-• `Optional` **autoScroll**: `boolean`
-
-___
-
-### mirrorVideo
-
-• `Optional` **mirrorVideo**: `boolean`
-
-___
-
-### muteNotificationSounds
-
-• `Optional` **muteNotificationSounds**: `boolean`
-
-
-
- Angular UI Kit Interface: UserPreferences
-
-
diff --git a/docs/angular-ui-kit/reference/interfaces/_category_.json b/docs/angular-ui-kit/reference/interfaces/_category_.json
deleted file mode 100644
index 34cc0b9773..0000000000
--- a/docs/angular-ui-kit/reference/interfaces/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 1,
- "label": "Interfaces",
- "collapsible": true
-}
diff --git a/docs/angular-ui-kit/reference/reference.md b/docs/angular-ui-kit/reference/reference.md
deleted file mode 100644
index 5583566ce2..0000000000
--- a/docs/angular-ui-kit/reference/reference.md
+++ /dev/null
@@ -1,291 +0,0 @@
----
-id: reference
-title: Reference
-custom_edit_url: null
-sidebar_class_name: hideReferenceSidebarLink
----
-
-## Interfaces
-
-- [Notification](interfaces/Notification.md)
-- [PollObject](interfaces/PollObject.md)
-- [States](interfaces/States.md)
-- [UIConfig](interfaces/UIConfig.md)
-- [UserPreferences](interfaces/UserPreferences.md)
-
-## Type Aliases
-
-### DyteI18n
-
-Ƭ **DyteI18n**: (`key`: keyof [`LangDict`](reference.md#langdict) \| `string` & {}) => `string`
-
-#### Type declaration
-
-▸ (`key`): `string`
-
-i18n helper method type
-
-##### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `key` | keyof [`LangDict`](reference.md#langdict) \| `string` & {} |
-
-##### Returns
-
-`string`
-
-___
-
-### IconPack
-
-Ƭ **IconPack**: typeof [`defaultIconPack`](reference.md#defaulticonpack)
-
-Icon Pack object type.
-- Oject key denotes name of icon
-- Object value stores the SVG string
-
-___
-
-### LangDict
-
-Ƭ **LangDict**: typeof [`defaultLanguage`](reference.md#defaultlanguage)
-
-Language dictionary object type
-
-___
-
-### Size
-
-Ƭ **Size**: ``"sm"`` \| ``"md"`` \| ``"lg"`` \| ``"xl"``
-
-Screen breakpoints
-
-## Variables
-
-### defaultConfig
-
-• `Const` **defaultConfig**: [`UIConfig`](interfaces/UIConfig.md)
-
-The default UI Config
-
-___
-
-### defaultIconPack
-
-• `Const` **defaultIconPack**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `attach` | `string` |
-| `call_end` | `string` |
-| `chat` | `string` |
-| `checkmark` | `string` |
-| `chevron_down` | `string` |
-| `chevron_left` | `string` |
-| `chevron_right` | `string` |
-| `chevron_up` | `string` |
-| `clock` | `string` |
-| `copy` | `string` |
-| `disconnected` | `string` |
-| `dismiss` | `string` |
-| `download` | `string` |
-| `emoji_multiple` | `string` |
-| `full_screen_maximize` | `string` |
-| `full_screen_minimize` | `string` |
-| `image` | `string` |
-| `image_off` | `string` |
-| `join_stage` | `string` |
-| `leave_stage` | `string` |
-| `mic_off` | `string` |
-| `mic_on` | `string` |
-| `more_vertical` | `string` |
-| `participants` | `string` |
-| `people` | `string` |
-| `pin` | `string` |
-| `pin_off` | `string` |
-| `poll` | `string` |
-| `recording` | `string` |
-| `rocket` | `string` |
-| `search` | `string` |
-| `send` | `string` |
-| `settings` | `string` |
-| `share` | `string` |
-| `share_screen_person` | `string` |
-| `share_screen_start` | `string` |
-| `share_screen_stop` | `string` |
-| `speaker` | `string` |
-| `spinner` | `string` |
-| `spotlight` | `string` |
-| `stop_recording` | `string` |
-| `subtract` | `string` |
-| `vertical_scroll` | `string` |
-| `vertical_scroll_disabled` | `string` |
-| `video_off` | `string` |
-| `video_on` | `string` |
-| `wand` | `string` |
-| `warning` | `string` |
-| `wifi` | `string` |
-
-___
-
-### defaultLanguage
-
-• `Const` **defaultLanguage**: `Object`
-
-Default language dictionary
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `audio` | `string` |
-| `cancel` | `string` |
-| `chat` | `string` |
-| `connection` | `string` |
-| `dismiss` | `string` |
-| `end_meeting_for_all` | `string` |
-| `full_screen` | `string` |
-| `full_screen.exit` | `string` |
-| `leave` | `string` |
-| `leave_confirmation` | `string` |
-| `left_meeting` | `string` |
-| `mic_off` | `string` |
-| `mic_on` | `string` |
-| `page` | `string` |
-| `participants` | `string` |
-| `perm.sys_denied.message` | `string` |
-| `perm_browser_denied` | `string` |
-| `perm_denied_text` | `string` |
-| `perm_denied_title` | `string` |
-| `perm_sys_denied` | `string` |
-| `plugins` | `string` |
-| `polls` | `string` |
-| `settings` | `string` |
-| `setup_screen.join_in_as` | `string` |
-| `setup_screen.joining_as` | `string` |
-| `setup_screen.your_name` | `string` |
-| `share_screen_start` | `string` |
-| `share_screen_stop` | `string` |
-| `stage.add_to_stage` | `string` |
-| `stage.empty_host` | `string` |
-| `stage.empty_host_summary` | `string` |
-| `stage.empty_viewer` | `string` |
-| `stage.join_cancel` | `string` |
-| `stage.join_confirm` | `string` |
-| `stage.join_summary` | `string` |
-| `stage.join_title` | `string` |
-| `stage.remove_from_stage` | `string` |
-| `stage_request.accept_all` | `string` |
-| `stage_request.accept_request` | `string` |
-| `stage_request.approval_pending` | `string` |
-| `stage_request.denied` | `string` |
-| `stage_request.denied_tip` | `string` |
-| `stage_request.deny_request` | `string` |
-| `stage_request.header_title` | `string` |
-| `stage_request.leave_stage` | `string` |
-| `stage_request.leave_tip` | `string` |
-| `stage_request.pending_tip` | `string` |
-| `stage_request.request` | `string` |
-| `stage_request.request_tip` | `string` |
-| `video` | `string` |
-| `video_off` | `string` |
-| `video_on` | `string` |
-| `waitlist.accept_all` | `string` |
-| `waitlist.accept_request` | `string` |
-| `waitlist.body_text` | `string` |
-| `waitlist.deny_request` | `string` |
-| `waitlist.header_title` | `string` |
-
-## Functions
-
-### extendConfig
-
-▸ **extendConfig**(`config`, `baseConfig?`): [`UIConfig`](interfaces/UIConfig.md)
-
-Extend the default UI Config with your own
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `config` | [`UIConfig`](interfaces/UIConfig.md) | Your extended UI Config |
-| `baseConfig?` | [`UIConfig`](interfaces/UIConfig.md) | - |
-
-#### Returns
-
-[`UIConfig`](interfaces/UIConfig.md)
-
-New extended UI Config object
-
-___
-
-### generateConfig
-
-▸ **generateConfig**(`oldConfig`, `toExtend?`, `options?`): `Object`
-
-Generates a config with older theme value.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `oldConfig` | `DyteThemePresetV1` | V1 Theme object |
-| `toExtend?` | [`UIConfig`](interfaces/UIConfig.md) | UI Config object to extend the generated config |
-| `options?` | `ConfigOptions` | Options for toggling components |
-
-#### Returns
-
-`Object`
-
-| Name | Type |
-| :------ | :------ |
-| `config` | [`UIConfig`](interfaces/UIConfig.md) |
-| `data` | `ConfigData` |
-
-___
-
-### provideDyteDesignSystem
-
-▸ **provideDyteDesignSystem**(`el`, `tokens`): `void`
-
-Provides the design system new tokens to consume values from for styling the Dyte UI Kit's UI.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `el` | `HTMLElement` | The element/node you want to _provide_ Dyte's design system. |
-| `tokens` | `DesignTokens` | The design tokens you want to updated. |
-
-#### Returns
-
-`void`
-
-___
-
-### sendNotification
-
-▸ **sendNotification**(`notification`): `boolean`
-
-Send notification which will be displayed in the ` ` component.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `notification` | [`Notification`](interfaces/Notification.md) | Notification object |
-
-#### Returns
-
-`boolean`
-
-Return value of emitting the event
-
-
-
- Angular UI Kit Reference
-
-
diff --git a/docs/angular-ui-kit/release-notes.mdx b/docs/angular-ui-kit/release-notes.mdx
deleted file mode 100644
index c0880a7c47..0000000000
--- a/docs/angular-ui-kit/release-notes.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-sidebar_class_name: releaseSidebarHeading
-tags:
- - releasenotes
-description: '"Stay updated with the latest features'
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-:::danger
-
-Dyte SDKs are now in maintenance mode and will not receive any new features or bug fixes. To migrate to Cloudflare RealtimeKit SDKs, see the [migration guide](/guides/realtimekit-migration/sdk-guide?framework=angular).
-
-:::
-
-The release notes lists all new features, resolved issues, and known issues of Angular UI Kit in chronological order.
-
-
-
-
- Angular UI Kit Release Notes
-
-
diff --git a/docs/api-reference/authentication.md b/docs/api-reference/authentication.md
new file mode 100644
index 0000000000..5b0a5b142d
--- /dev/null
+++ b/docs/api-reference/authentication.md
@@ -0,0 +1,81 @@
+---
+title: Authentication
+sidebar_position: 2
+---
+
+# Authentication
+
+Human users authenticate with JWT access/refresh token pairs; machines authenticate with API keys. Both are presented the same way: `Authorization: Bearer `.
+
+## Endpoints
+
+| Method | Path | Description | Auth |
+| --- | --- | --- | --- |
+| `POST` | `/auth/register` | Create a new Organization + Owner user, returns a token pair | none |
+| `POST` | `/auth/login` | Exchange email/password for a token pair | none |
+| `POST` | `/auth/refresh` | Exchange a refresh token for a new access token | none |
+| `POST` | `/auth/logout` | Revoke the current session | Bearer |
+| `POST` | `/auth/logout-all` | Revoke every session for the current user (Deel 21 §42) | Bearer |
+| `GET` | `/auth/sessions` | List active sessions (device/IP metadata) | Bearer |
+| `DELETE` | `/auth/sessions/:id` | Revoke one session | Bearer |
+| `POST` | `/auth/api-clients` | Mint a new `ospi_.` API key | Bearer + `org:manage` |
+
+## Register
+
+```http
+POST /api/v1/auth/register
+Content-Type: application/json
+
+{
+ "organizationName": "Acme Manufacturing",
+ "email": "owner@acme.example",
+ "password": "at-least-8-characters",
+ "firstName": "Ada",
+ "lastName": "Lovelace"
+}
+```
+
+Creates the Organization, its Owner user (seeded with the `'*'` wildcard permission), and returns a token pair:
+
+```json
+{
+ "accessToken": "eyJhbGciOiJIUzI1NiIs...",
+ "refreshToken": "d1b2c3...",
+ "expiresIn": 900
+}
+```
+
+## Login / refresh
+
+```http
+POST /api/v1/auth/login
+Content-Type: application/json
+
+{ "email": "owner@acme.example", "password": "at-least-8-characters" }
+```
+
+```http
+POST /api/v1/auth/refresh
+Content-Type: application/json
+
+{ "refreshToken": "d1b2c3..." }
+```
+
+Access tokens expire in ≤15 minutes; refresh tokens back a `Session` row with an absolute 7-day cap. Revoking a session (`DELETE /auth/sessions/:id` or `POST /auth/logout[-all]`) blocks future refreshes immediately, but an already-issued access token keeps working for its own remaining TTL — a deliberate, bounded-exposure trade-off, not an oversight.
+
+## API keys (machine-to-machine)
+
+```http
+POST /api/v1/auth/api-clients
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "name": "ERP sync",
+ "scopes": ["products:write", "inventory:write"]
+}
+```
+
+`scopes` is validated against the real, enforced permission catalogue (see [Roles & Permissions](/guides/roles-and-permissions)) — `'*'` grants full org-wide access, equivalent to the Owner role. Requires `org:manage` on the caller.
+
+The resulting key is used exactly like a JWT: `Authorization: Bearer ospi_.`.
diff --git a/docs/api-reference/categories-and-attributes.md b/docs/api-reference/categories-and-attributes.md
new file mode 100644
index 0000000000..96b471862f
--- /dev/null
+++ b/docs/api-reference/categories-and-attributes.md
@@ -0,0 +1,60 @@
+---
+title: Categories & Attributes
+sidebar_position: 6
+---
+
+# Categories & Attributes
+
+## Categories
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/categories` | Create a category | `products:write` |
+| `GET` | `/categories` | List categories | — |
+| `GET` | `/categories/pending` | List `PENDING` global-category proposals | `categories:govern` |
+| `POST` | `/categories/:id/approve` | Approve a global-category proposal | `categories:govern` |
+| `POST` | `/categories/:id/reject` | Reject a global-category proposal | `categories:govern` |
+
+```http
+POST /api/v1/categories
+Authorization: Bearer
+Content-Type: application/json
+
+{ "code": "DRINKWARE", "name": "Drinkware", "scope": "organization" }
+```
+
+`scope: "organization"` (default) is private to your org and usable immediately. `scope: "global"` creates a **proposal** for the shared cross-org registry, starting `PENDING` — only usable on a product once a `categories:govern` holder approves it. `categories:govern` is cross-organization by design; see [Roles & Permissions](/api-reference/organizations-and-roles#roles--permissions).
+
+## Category attribute schemas
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/categories/:categoryId/attribute-schema` | Declare an attribute's requirement level for a category | `products:write` |
+| `DELETE` | `/categories/:categoryId/attribute-schema/:attributeDefinitionId` | Remove a schema entry | `products:write` |
+| `GET` | `/categories/:categoryId/attributes` | Get the resolved effective schema (inherited down the tree, with child overrides) | — |
+
+A schema entry is `REQUIRED`, `RECOMMENDED`, `OPTIONAL`, or `FORBIDDEN`, and can be conditional on another attribute's value. This effective schema is exactly what `POST /products/:id/validate` scores a product against — see [Products & Variants](/api-reference/products-and-variants#publication-gate).
+
+## Attribute definitions & values
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/attribute-definitions` | Define a new attribute (datatype, code, unit) | `attributes:write` |
+| `GET` | `/attribute-definitions` | List attribute definitions | — |
+| `POST` | `/products/:productId/attribute-values` | Set an attribute value on a product | `products:write` |
+| `POST` | `/variants/:variantId/attribute-values` | Set an attribute value on a variant | `products:write` |
+| `POST` | `/attribute-values/:id/verify` | Mark a value as verified as-is | `products:write` |
+
+Every `AttributeValue` carries provenance: `source`, `sourceOrganizationId`, `sourceReference`, `confidence`, and a `conflictState` (`UNVERIFIED` / `VERIFIED` / `CONFLICTED`) — [ADR-030](/architecture/adr/adr-030-attribute-value-provenance). A `VERIFIED` (or already-`CONFLICTED`) value rejects a silently differing overwrite with `409` unless the request passes `forceOverride: true`.
+
+## Classification schemes
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/classification-schemes` | Create a classification scheme | `classification:manage` |
+| `GET` | `/classification-schemes` | List schemes | — |
+| `POST` | `/classification-schemes/:schemeId/nodes` | Add a node to a scheme | `classification:manage` |
+| `GET` | `/classification-schemes/:schemeId/nodes` | List nodes in a scheme | — |
+| `POST` | `/classification-assignments` | Assign a classification node to a product | `products:write` |
+
+This is a separate tree structure from the Category → Attribute Schema linkage above, and is largely independent of it — attribute requirements are attached to `Category`, not to `ClassificationNode` (see [ADR-029](/architecture/adr/adr-029-category-attribute-schema) for why).
diff --git a/docs/api-reference/connections-and-sharing.md b/docs/api-reference/connections-and-sharing.md
new file mode 100644
index 0000000000..5b8f0a7569
--- /dev/null
+++ b/docs/api-reference/connections-and-sharing.md
@@ -0,0 +1,66 @@
+---
+title: Connections & Sharing
+sidebar_position: 9
+---
+
+# Connections & Sharing
+
+This is the entire access-control model for cross-organization data. A **Connection** is the umbrella relationship between two organizations; a **Sharing Grant** riding on an `ACTIVE` connection scopes exactly what's visible. Read [ADR-010](/architecture/adr/adr-010-sharing-scope-model) and [ADR-022](/architecture/adr/adr-022-rule-based-sharing-scopes) before connecting two real organizations.
+
+## Connections
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/connections` | Request a connection to another organization | `connections:write` |
+| `GET` | `/connections` | List the caller's connections | — |
+| `POST` | `/connections/:id/accept` | Accept an incoming request | `connections:write` |
+| `POST` | `/connections/:id/reject` | Reject an incoming request | `connections:write` |
+| `POST` | `/connections/:id/suspend` | Suspend an active connection | `connections:write` |
+| `POST` | `/connections/:id/terminate` | Terminate a connection | `connections:write` |
+
+Lifecycle: `REQUESTED → ACTIVE` (via accept) or `REQUESTED → REJECTED`, and `ACTIVE → SUSPENDED → ACTIVE` or `→ TERMINATED`.
+
+## Sharing grants
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/sharing-grants` | Create a grant on an active connection | `sharing:write` |
+| `GET` | `/sharing-grants` | List grants | — |
+| `DELETE` | `/sharing-grants/:id` | Revoke a grant | `sharing:write` |
+
+```http
+POST /api/v1/sharing-grants
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "connectionId": "cnx_...",
+ "targetType": "ALL_PRODUCTS",
+ "dataCategories": ["PRODUCT_DATA", "INVENTORY"],
+ "ruleFilter": { "attributes": [{ "code": "region", "equals": "EU" }] }
+}
+```
+
+`targetType` is `PRODUCT`, `PRODUCT_CATEGORY`, or `ALL_PRODUCTS`. `ruleFilter` ([ADR-022](/architecture/adr/adr-022-rule-based-sharing-scopes)) additionally ANDs an attribute-based rule onto that targeting — e.g. "everything tagged `region=EU`". Rules are a flat AND list only; there is no OR/negation or rule grouping yet.
+
+`SharingService.hasAccess(...)` is the single enforcement point used by every cross-organization read below.
+
+## Partner-facing reads
+
+| Method | Path | Description |
+| --- | --- | --- |
+| `GET` | `/partner/organizations/:organizationId/products` | Products another organization has shared with you |
+| `GET` | `/partner/organizations/:organizationId/products/:productId` | One shared product |
+| `GET` | `/partner/organizations/:organizationId/products/:productId/inventory` | Its inventory, filtered through `quantityDisplayMode` |
+| `GET` | `/partner/organizations/:organizationId/products/:productId/documents` | Its documents, filtered by document `visibility` |
+
+## Walkthrough: connect two organizations
+
+```http
+POST /api/v1/connections # as A, targeting B's org ID → REQUESTED
+POST /api/v1/connections/{id}/accept # as B → ACTIVE
+POST /api/v1/sharing-grants # as A: targetType ALL_PRODUCTS, dataCategories [PRODUCT_DATA, INVENTORY]
+GET /api/v1/partner/organizations/{aOrgId}/products # as B — now returns A's products
+```
+
+To also trade, continue with [Ordering & Commerce](/api-reference/ordering) — an `Offer` requires an active `ORDERING` sharing grant if the seller doesn't own the product.
diff --git a/docs/api-reference/digital-product-passport.md b/docs/api-reference/digital-product-passport.md
new file mode 100644
index 0000000000..a733e451cc
--- /dev/null
+++ b/docs/api-reference/digital-product-passport.md
@@ -0,0 +1,32 @@
+---
+title: Digital Product Passport
+sidebar_position: 12
+---
+
+# Digital Product Passport
+
+:::caution Not a compliance implementation
+This is a generic scaffold — a named, versioned list of required attribute codes, composed live from existing Attributes and Documents with no duplicated data storage. It is **not** mapped to actual EU ESPR delegated acts, and legal review of that mapping is explicitly deferred until post-MVP validation. See [ADR-006](/architecture/adr/adr-006-dpp-espr-stance).
+:::
+
+## Endpoints
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/dpp-profiles` | Define a profile (which attribute codes are required) | `dpp:manage` |
+| `GET` | `/dpp-profiles` | List profiles | — |
+| `POST` | `/dpp-records` | Create a record for a product against a profile | `products:write` |
+| `POST` | `/dpp-records/:id/validate` | Check completeness against the profile | `products:write` |
+| `POST` | `/dpp-records/:id/publish` | Publish (issues/keeps the public access token) | `products:write` |
+| `POST` | `/dpp-records/:id/suspend` | Unpublish | `products:write` |
+| `POST` | `/dpp-records/:id/rotate-token` | Rotate the public access token without deleting the record | `products:write` |
+| `GET` | `/dpp-records/:id` | Get one record (owner view) | — |
+| `GET` | `/dpp/:accessToken` | Public view (unauthenticated) | none |
+
+## Public access
+
+`GET /dpp/:accessToken` mirrors "scan a QR code, no login." Access is gated by a dedicated, rotatable 256-bit token — **deliberately not the OSPI code checksum**, which at 3 characters is far too low-entropy to serve as a security barrier ([ADR-013](/architecture/adr/adr-013-dpp-public-access-token)). The database ID is never exposed in the public URL. This endpoint is rate-limited as defense-in-depth on top of the token's entropy.
+
+```http
+GET /dpp/8f3a2c1e9b7d4f6a0e5c3b1a9d7f2e4c6a8b0d2f4e6a8c0b2d4f6a8e0c2b4d6f
+```
diff --git a/docs/api-reference/documents.md b/docs/api-reference/documents.md
new file mode 100644
index 0000000000..62b65558a8
--- /dev/null
+++ b/docs/api-reference/documents.md
@@ -0,0 +1,49 @@
+---
+title: Documents
+sidebar_position: 7
+---
+
+# Documents
+
+Document metadata — datasheets, certificates, manuals, images — attached to products, with real file storage behind a swappable abstraction ([ADR-017](/architecture/adr/adr-017-document-storage-abstraction)).
+
+## Endpoints
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/documents` | Create document metadata (reference an already-stored file) | `documents:write` |
+| `POST` | `/documents/upload` | Upload file content and create the document in one call | `documents:write` |
+| `GET` | `/documents` | List documents, filterable by `?documentType=` | — |
+| `GET` | `/documents/:id` | Get one document | — |
+| `PATCH` | `/documents/:id` | Metadata-only correction | `documents:write` |
+| `GET` | `/documents/:id/download-url` | Resolve a stored document to a fetchable reference | — |
+
+## Upload
+
+```http
+POST /api/v1/documents/upload
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "productId": "prd_...",
+ "documentType": "DATASHEET",
+ "fileName": "datasheet-v2.pdf",
+ "contentBase64": "JVBERi0xLjQK...",
+ "visibility": "PUBLIC"
+}
+```
+
+Content is currently accepted as base64-in-JSON (no `multipart`/`multer` dependency wired up in this build). Uploads are deduplicated by a real SHA-256 `checksum` — identical bytes reuse the existing `storageRef` instead of being stored twice. Storage is currently a real local-filesystem implementation — durable for a single API process, but not redundant and not shared across multiple processes; swapping in a cloud backend is a provider-binding change, not a rewrite of `DocumentsService` or any controller.
+
+## Metadata fields
+
+`documentType`, `lifecycleStatus`, `validFrom`/`validUntil`, `checksum` (SHA-256), `sortOrder`, and `certificateMetadata` ([ADR-034](/architecture/adr/adr-034-document-metadata)).
+
+## Visibility
+
+Each document carries a producer-set `visibility`:
+
+- **`PUBLIC`** — always returned, including through the unauthenticated [OSPI Code Resolver](/api-reference/search#resolver).
+- **`RESTRICTED`** — only returned once the caller's organization is the owner or holds an active `CONTENT` sharing grant.
+- **`PRIVATE`** — never returned through the resolver or partner-facing reads.
diff --git a/docs/api-reference/intro.md b/docs/api-reference/intro.md
new file mode 100644
index 0000000000..177fa44428
--- /dev/null
+++ b/docs/api-reference/intro.md
@@ -0,0 +1,88 @@
+---
+title: API Reference
+sidebar_label: Overview
+sidebar_position: 1
+slug: /
+---
+
+# OSPI Platform API
+
+This is the reference for the real, implemented **OSPI Platform API** ([`ospi-platform`](https://github.com/BrickeVD/ospi-platform)) — a NestJS/PostgreSQL REST API covering identity, organizations, products, categories, documents, inventory, cross-organization sharing, search, ordering and the Digital Product Passport scaffold.
+
+A running instance also serves this same information as interactive OpenAPI/Swagger UI at `/api/docs` (JSON at `/api/docs-json`). Every endpoint below is also documented as an interactive page — with request/response schemas and a live "Try It" console — under **Endpoints** in the sidebar, generated directly from that same OpenAPI spec (see [Endpoints overview](/api-reference/reference/ospi-platform-api)).
+
+## Base path
+
+Every route below is shown relative for brevity. The real path is prefixed with `/api/v1`:
+
+```
+POST /auth/register → POST /api/v1/auth/register
+```
+
+The only two exceptions, which stay unprefixed and unversioned: `GET /health` (infra-level monitoring convention) and the Swagger UI/JSON (`/api/docs`, `/api/docs-json`).
+
+## Authentication
+
+Every authenticated route accepts a single `Authorization: Bearer ` header, for either:
+
+- A **JWT access token**, issued by `POST /auth/login` or `POST /auth/register` (short-lived, ≤15 minutes) and renewed via `POST /auth/refresh`.
+- An **API key**, `ospi_.`, minted via `POST /auth/api-clients` for machine-to-machine use.
+
+See the [Authentication guide](/guides/authentication) for the full register → login → refresh flow, and [Roles & Permissions](/guides/roles-and-permissions) for what each permission code gates.
+
+## Response conventions
+
+**Errors** are always:
+
+```json
+{
+ "error": {
+ "code": "VALIDATION_ERROR",
+ "message": "email must be a valid email address",
+ "requestId": "b6f1c2b0-2f3e-4b9a-9b0e-1a2b3c4d5e6f"
+ }
+}
+```
+
+Stack traces are never sent to the client — see `GlobalExceptionFilter`.
+
+**List endpoints** accept standard pagination/filter/sort query parameters and return:
+
+```json
+{
+ "data": [ /* ... */ ],
+ "meta": { "page": 1, "pageSize": 20, "total": 137, "totalPages": 7 }
+}
+```
+
+| Query param | Default | Notes |
+| --- | --- | --- |
+| `page` | `1` | 1-indexed |
+| `pageSize` | `20` | max `100` |
+| `sortBy` | — | field name |
+| `sortDir` | `asc` | `asc` \| `desc` |
+
+## Idempotency
+
+`POST /products`, `POST /products/bulk`, `POST /products/:id/serialized-units/bulk`, `POST /ospi-identities`, `POST /orders`, and `POST /orders/:id/submit` accept an opt-in `Idempotency-Key` header. Replaying the same key on the same endpoint for the same organization/actor returns the original response unchanged, marked `Idempotent-Replay: true`, instead of executing a duplicate write. Keys are scoped per organization/actor/endpoint/key with a 24-hour TTL. There is no distributed lock — two genuinely concurrent requests with the same key can still both execute.
+
+## Rate limiting
+
+`POST /auth/login`, `POST /auth/register`, `POST /auth/refresh`, `GET /search/resolve/:code`, and `GET /dpp/:accessToken` are rate-limited. The limiter is in-memory and per-process, not distributed — behind more than one API process the effective limit multiplies by process count.
+
+## API sections
+
+| Section | Covers |
+| --- | --- |
+| [Authentication](/api-reference/authentication) | Register, login, refresh, sessions, API keys |
+| [Organizations & Roles](/api-reference/organizations-and-roles) | Organization profile, legal entities, users, custom roles, permission catalogue |
+| [Producers & OSPI Codes](/api-reference/producers-and-ospi-codes) | Producer registration, Producer Codes, OSPI Identity issuance & lifecycle |
+| [Products & Variants](/api-reference/products-and-variants) | Products, variants, bulk create, publication lifecycle, serialized units, translations, relationships |
+| [Categories & Attributes](/api-reference/categories-and-attributes) | Category registry, attribute definitions/values, classification schemes |
+| [Documents](/api-reference/documents) | Document upload/metadata, visibility |
+| [Inventory](/api-reference/inventory) | Locations, stock, derived availability |
+| [Connections & Sharing](/api-reference/connections-and-sharing) | Organization-to-organization connections, sharing grants, partner reads |
+| [Search & Discovery](/api-reference/search) | Full-text product search, related products, OSPI code resolver |
+| [Ordering & Commerce](/api-reference/ordering) | Offers, orders, order groups/lines |
+| [Digital Product Passport](/api-reference/digital-product-passport) | DPP profiles, records, public access |
+| [Webhooks](/api-reference/webhooks) | Event subscriptions, delivery log, retries |
diff --git a/docs/api-reference/inventory.md b/docs/api-reference/inventory.md
new file mode 100644
index 0000000000..6167234c39
--- /dev/null
+++ b/docs/api-reference/inventory.md
@@ -0,0 +1,42 @@
+---
+title: Inventory
+sidebar_position: 8
+---
+
+# Inventory
+
+Owner-scoped locations and stock records ([ADR-009](/architecture/adr/adr-009-inventory-record-shape)).
+
+## Endpoints
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/locations` | Create a location | `inventory:write` |
+| `GET` | `/locations` | List locations | — |
+| `GET` | `/locations/:id/inventory` | List inventory records at a location | — |
+| `PUT` | `/products/:productId/inventory` | Upsert a product's stock at a location | `inventory:write` |
+| `GET` | `/products/:productId/inventory` | List a product's inventory across locations | — |
+
+## Upsert stock
+
+```http
+PUT /api/v1/products/{productId}/inventory
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "locationId": "loc_...",
+ "quantityOnHand": 480,
+ "quantityReserved": 12,
+ "visibility": "PARTNER_ONLY",
+ "quantityDisplayMode": "EXACT"
+}
+```
+
+## Derived availability
+
+`availableQuantity` and `availabilityStatus` are **never stored** — they are always computed at read time from the stock quantities, via pure functions shared with the OSPI code engine's testing approach. This means availability is always consistent with the latest stock write, with no separate reconciliation step.
+
+## Partner visibility
+
+`InventoryRecord.visibility` and `quantityDisplayMode` control what a connected partner organization sees through `GET /partner/organizations/:orgId/products/:productId/inventory` (see [Connections & Sharing](/api-reference/connections-and-sharing)) — e.g. an owner can expose only an availability status ("In stock" / "Low stock" / "Out of stock") without revealing exact quantities.
diff --git a/docs/api-reference/ordering.md b/docs/api-reference/ordering.md
new file mode 100644
index 0000000000..3948ed7b74
--- /dev/null
+++ b/docs/api-reference/ordering.md
@@ -0,0 +1,53 @@
+---
+title: Ordering & Commerce
+sidebar_position: 11
+---
+
+# Ordering & Commerce
+
+An **Offer** is a seller's commercial listing for a product — sellable even without owning it, given an active `ORDERING` sharing grant from the owner. An **Order** splits per seller into one **OrderGroup** each, containing **OrderLines** ([ADR-011](/architecture/adr/adr-011-ordering-mvp-simplifications)).
+
+There is no payment integration, no automatic stock reservation, and no credit-limit/contract-term validation — accepting an order is still a manual seller decision. Offers and Orders are nonetheless real commercial records; get commercial/legal sign-off before connecting real trading partners.
+
+## Offers
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/offers` | Create an offer | `offers:write` |
+| `GET` | `/offers` | List the caller's own offers | — |
+| `GET` | `/products/:productId/offers` | List offers for a product | — |
+| `DELETE` | `/offers/:id` | Withdraw an offer | `offers:write` |
+| `POST` | `/offers/:id/buyer-minimums` | Set a buyer-specific minimum order quantity | `offers:write` |
+| `GET` | `/offers/:id/buyer-minimums` | List per-buyer minimum overrides | `offers:write` |
+| `DELETE` | `/offers/:id/buyer-minimums/:buyerOrganizationId` | Remove an override | `offers:write` |
+
+A per-buyer minimum ([ADR-021](/architecture/adr/adr-021-per-buyer-offer-minimum)) replaces the offer's default `minimumQuantity` for that one buyer; `addLine` checks the override before falling back to the default.
+
+## Orders
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/orders` | Create a draft order | `orders:write` |
+| `GET` | `/orders` | List orders | — |
+| `GET` | `/orders/:id` | Get one order | — |
+| `POST` | `/orders/:id/lines` | Add a line, referencing an offer | `orders:write` |
+| `DELETE` | `/orders/:id/lines/:lineId` | Remove a line | `orders:write` |
+| `POST` | `/orders/:id/submit` | Submit the draft, creating one `OrderGroup` per seller | `orders:write` |
+| `POST` | `/orders/:id/groups/:groupId/accept` | Seller accepts their group | `orders:write` |
+| `POST` | `/orders/:id/groups/:groupId/reject` | Seller rejects their group | `orders:write` |
+| `PUT` | `/orders/:id/groups/:groupId/status` | Move a group through `PROCESSING → FULFILLED → COMPLETE` | `orders:write` |
+
+`OrderLine.quantity` and both `minimumQuantity` fields are `Decimal`, not integers — quantities like `4.5 kg` are representable ([ADR-024](/architecture/adr/adr-024-product-identity-lifecycle-and-decimal-quantity)).
+
+## Walkthrough
+
+```http
+POST /api/v1/offers # as A, for one of its products
+POST /api/v1/orders # as B → draft
+POST /api/v1/orders/{id}/lines # as B, referencing A's offer
+POST /api/v1/orders/{id}/submit # as B → creates one OrderGroup for A
+POST /api/v1/orders/{id}/groups/{groupId}/accept # as A
+PUT /api/v1/orders/{id}/groups/{groupId}/status # as A: PROCESSING → FULFILLED → COMPLETE
+```
+
+`POST /orders` and `POST /orders/:id/submit` both support the `Idempotency-Key` header — see [API conventions](/api-reference#idempotency).
diff --git a/docs/api-reference/organizations-and-roles.md b/docs/api-reference/organizations-and-roles.md
new file mode 100644
index 0000000000..b60f7f19f3
--- /dev/null
+++ b/docs/api-reference/organizations-and-roles.md
@@ -0,0 +1,70 @@
+---
+title: Organizations & Roles
+sidebar_position: 3
+---
+
+# Organizations & Roles
+
+An Organization is the tenant. Every row elsewhere in the API is scoped to one, either directly or transitively.
+
+## Organization & legal entities
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `GET` | `/organizations/me` | Get the caller's own organization | — |
+| `PATCH` | `/organizations/:id` | Update organization profile | `org:manage` |
+| `GET` | `/organizations/me/legal-entities` | List legal entities | — |
+| `POST` | `/organizations/me/legal-entities` | Add a legal entity | `org:manage` |
+
+## Users
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `GET` | `/organizations/me/users` | List users in the caller's organization | `org:manage` |
+| `POST` | `/organizations/me/users` | Invite a second user (needed before any role beyond the sole Owner exists) | `org:manage` |
+| `GET` | `/organizations/me/roles` | List roles available in the organization | — |
+
+Every organization is created with exactly one user — its Owner, holding the `'*'` wildcard permission. `POST /organizations/me/users` is what makes a second user, and therefore custom/scoped roles, possible at all.
+
+## Roles & permissions
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `GET` | `/permissions` | The canonical, enforced permission catalogue | — |
+| `POST` | `/roles` | Create a custom role | `roles:manage` |
+| `GET` | `/roles` | List roles | — |
+| `GET` | `/users/:userId/roles` | List a user's roles | — |
+| `POST` | `/users/:userId/roles` | Assign a role to a user | `roles:manage` |
+| `DELETE` | `/users/:userId/roles/:roleId` | Revoke a role from a user | `roles:manage` |
+
+### Permission catalogue
+
+`GET /permissions` returns the flat list every `@RequirePermissions(...)` check actually enforces:
+
+```json
+[
+ "producers:write", "products:write", "orders:write", "offers:write",
+ "connections:write", "inventory:write", "org:manage", "dpp:manage",
+ "documents:write", "attributes:write", "classification:manage",
+ "sharing:write", "roles:manage", "webhooks:manage", "categories:govern"
+]
+```
+
+`'*'` is a separate wildcard — not a real resource permission — that grants every permission within the caller's own organization; it's what the seeded Owner role holds.
+
+A role can additionally be scoped to a single Category or Location (enforced for `products:write` and `inventory:write`), and two system roles — **Catalog Editor** and **Read Only** — are seeded for every organization automatically.
+
+`categories:govern` is cross-organization by design: it approves or rejects proposals for the *shared* global category registry, not the granting organization's own data. There is no separate "platform tenant" concept beyond an env-configured `PLATFORM_OPERATOR_ORG_ID` — grant it only to roles in the platform operator's own bootstrap organization.
+
+### Create a custom role
+
+```http
+POST /api/v1/roles
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "name": "Inventory Manager",
+ "permissions": ["inventory:write", "products:write"]
+}
+```
diff --git a/docs/api-reference/producers-and-ospi-codes.md b/docs/api-reference/producers-and-ospi-codes.md
new file mode 100644
index 0000000000..b3fc011c25
--- /dev/null
+++ b/docs/api-reference/producers-and-ospi-codes.md
@@ -0,0 +1,88 @@
+---
+title: Producers & OSPI Codes
+sidebar_position: 4
+---
+
+# Producers & OSPI Codes
+
+An organization registers as a **Producer**, is issued a **Producer Code** (the `AAAA` segment), and then mints **OSPI Identities** — the global, checksum-verified product/variant identifier. See [ADR-004](/architecture/adr/adr-004-ospi-code-checksum) and [ADR-008](/architecture/adr/adr-008-ospi-code-segment-widths) for how the identifier format and checksum are actually implemented.
+
+## Endpoints
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/producers` | Register a producer under the caller's organization | `producers:write` |
+| `GET` | `/producers` | List producers | — |
+| `POST` | `/producers/:producerId/codes` | Issue a Producer Code | `producers:write` |
+| `POST` | `/ospi-identities` | Mint an OSPI Identity | `products:write` |
+| `POST` | `/ospi-identities/validate` | Validate a code's checksum without minting anything | — |
+| `GET` | `/ospi-identities/:code` | Look up an identity by its full code | — |
+| `POST` | `/ospi-identities/:id/retire` | `RESERVED/REGISTERED/ACTIVE/SUSPENDED → RETIRED` | `products:write` |
+| `POST` | `/ospi-identities/:id/suspend` | `→ SUSPENDED` | `products:write` |
+| `POST` | `/ospi-identities/:id/reactivate` | `SUSPENDED → ACTIVE` | `products:write` |
+
+## Register a producer and issue a code
+
+```http
+POST /api/v1/producers
+Authorization: Bearer
+Content-Type: application/json
+
+{ "name": "Acme Manufacturing" }
+```
+
+```http
+POST /api/v1/producers/{producerId}/codes
+Authorization: Bearer
+Content-Type: application/json
+
+{ "code": "ACME" }
+```
+
+`code` is the `AAAA` segment: A–Z0–9, up to 12 characters.
+
+## Mint an OSPI Identity
+
+```http
+POST /api/v1/ospi-identities
+Authorization: Bearer
+Idempotency-Key: 6b1f...
+Content-Type: application/json
+
+{
+ "producerCodeId": "prc_...",
+ "categoryCode": "123456",
+ "companyProductId": "00012345",
+ "variantCode": "0001",
+ "serialBatch": "00000001",
+ "version": 1
+}
+```
+
+| Field | Segment | Notes |
+| --- | --- | --- |
+| `producerCodeId` | `AAAA` | The issued Producer Code |
+| `categoryCode` | `BBBBBB` | Up to 6 chars |
+| `companyProductId` | `CCCCCCCC` | Producer-supplied product identifier (Deel 4 §14), up to 8 chars |
+| `variantCode` | `DDDD` | Optional, up to 4 chars |
+| `serialBatch` | `EEEEEEEE` | Optional, up to 8 chars |
+| `version` | `V` | 1–9, default 1 |
+| — | `FFF` | Computed checksum, never supplied — see ADR-004 |
+
+Pass `reserved: true` (optionally with `reservedUntil`) to **reserve** an identity — the code exists and is held, without a product attached yet — for ERP sync, bulk import, or manufacturing workflows that need a code before the product record is fully assembled ([ADR-024](/architecture/adr/adr-024-product-identity-lifecycle-and-decimal-quantity)). Attaching it to a product later moves it straight to `ACTIVE`, no separate un-reserve step needed.
+
+In practice you usually don't call this endpoint directly — `POST /products` accepts the same fields under an `identity` block and mints the identity in the same call. Use this endpoint directly when you need to reserve a code before the product exists, or when issuing identities in bulk ahead of catalog creation.
+
+### Lifecycle
+
+```
+RESERVED → REGISTERED → ACTIVE → SUSPENDED → RETIRED
+```
+
+`SUSPENDED` and `RETIRED` are one-way past `ACTIVE` except the explicit `reactivate` action (`SUSPENDED → ACTIVE` only — `RETIRED` is terminal).
+
+## Validate and resolve a code
+
+`POST /ospi-identities/validate` checks a code's structure and checksum without touching the database — useful for client-side scan validation before calling the network at all.
+
+For looking up what a code actually identifies (product, manufacturer, variants, documents), see the public [OSPI Code Resolver](/api-reference/search#resolver) — it doesn't require authentication, matching the "scan a code, no login" use case (Deel 4 §26-27).
diff --git a/docs/api-reference/products-and-variants.md b/docs/api-reference/products-and-variants.md
new file mode 100644
index 0000000000..b714118a51
--- /dev/null
+++ b/docs/api-reference/products-and-variants.md
@@ -0,0 +1,114 @@
+---
+title: Products & Variants
+sidebar_position: 5
+---
+
+# Products & Variants
+
+## Endpoints
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/products` | Create a product (optionally minting its OSPI identity in the same call) | `products:write` |
+| `POST` | `/products/bulk` | Create up to 500 products, partial-success per item | `products:write` |
+| `GET` | `/products` | List/search the caller's products | — |
+| `GET` | `/products/:id` | Get one product | — |
+| `PATCH` | `/products/:id` | Update a product | `products:write` |
+| `POST` | `/products/:id/validate` | Completeness score against the category's attribute schema | — |
+| `POST` | `/products/:id/publish` | `→ PUBLISHED` (rejects `400` if not `readyForPublication`) | `products:write` |
+| `POST` | `/products/:id/unpublish` | Revert publication | `products:write` |
+| `POST` | `/products/:id/retire` | `→ ARCHIVED` | `products:write` |
+| `POST` | `/products/:id/recall` | `→ RECALLED` | `products:write` |
+| `POST` | `/products/:id/variants` | Add a variant (always requires its own OSPI identity) | `products:write` |
+| `GET` | `/products/:id/variants` | List variants | — |
+| `POST` | `/products/:id/serialized-units` | Register one serial/batch unit | `products:write` |
+| `GET` | `/products/:id/serialized-units` | List serialized units | — |
+| `POST` | `/products/:id/serialized-units/bulk` | Register up to 1000 units, partial-success per item | `products:write` |
+| `PUT` | `/products/:id/translations/:locale` | Set a locale's `name`/`description` | `products:write` |
+| `GET` | `/products/:id/translations` | List translations | — |
+| `DELETE` | `/products/:id/translations/:locale` | Remove a translation | `products:write` |
+| `POST` | `/products/:id/relationships` | Create a directional relationship to another product | `products:write` |
+| `GET` | `/products/:id/relationships` | List relationships | — |
+| `DELETE` | `/products/:id/relationships/:relationshipId` | Remove a relationship | `products:write` |
+
+## Create a product
+
+```http
+POST /api/v1/products
+Authorization: Bearer
+Idempotency-Key: 9c2a...
+Content-Type: application/json
+
+{
+ "name": "Stainless Steel Water Bottle 750ml",
+ "description": "Double-walled, vacuum-insulated.",
+ "categoryId": "cat_...",
+ "gtin": "04006381333931",
+ "identity": {
+ "producerCodeId": "prc_...",
+ "categoryCode": "123456",
+ "companyProductId": "00012345",
+ "version": 1
+ }
+}
+```
+
+`identity` mints a new OSPI Identity for the product in the same call — see [Producers & OSPI Codes](/api-reference/producers-and-ospi-codes). Pass `ospiIdentityId` instead to attach an identity you already reserved. `gtin` (GTIN-8/12/13/14) is checksum-validated but not confirmed against GS1's registry ([ADR-005](/architecture/adr/adr-005-gs1-relationship)).
+
+Statuses: `DRAFT → ACTIVE → PUBLISHED`, with `RECALLED`/`DISCONTINUED`/`ARCHIVED` as terminal-ish states, plus an independent `publicationState` audience field (`PRIVATE`/`PARTNER_ONLY`/`PUBLIC`/`SCHEDULED`).
+
+## Variants
+
+Every variant carries its **own** OSPI identity — `POST /products/:id/variants` always requires an `identity` block or `ospiIdentityId`, the same shape as product creation ([ADR-015](/architecture/adr/adr-015-pricing-vs-serialization)). Pricing (`Offer`) resolves against this SKU-level identity, not against individual serialized units.
+
+## Serialized units
+
+A serialized unit is a lightweight per-unit serial/batch record computed from its parent identity's segments — optional, and never required for pricing:
+
+```http
+POST /api/v1/products/{id}/serialized-units
+Authorization: Bearer
+Content-Type: application/json
+
+{ "serialBatch": "00000001" }
+```
+
+Add `"variantId": "..."` to register the unit under a specific variant instead of the base product. Only reachable by the authenticated owner today — there is no public lookup-by-serial endpoint.
+
+## Publication gate
+
+`POST /products/:id/publish` calls the same logic as `POST /products/:id/validate` and rejects with `400` if the product isn't `readyForPublication` — publication is genuinely gated on category-schema completeness, not just an advisory check:
+
+```json
+{
+ "score": 0.86,
+ "requiredCompleted": 6,
+ "errors": [],
+ "warnings": ["attribute 'care_instructions' recommended but missing"],
+ "readyForPublication": true
+}
+```
+
+## Optimistic concurrency
+
+`PATCH /products/:id` accepts an opt-in `expectedVersion` field on the update payload; a stale write returns a real `409`.
+
+## Relationships
+
+```http
+POST /api/v1/products/{id}/relationships
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "targetProductId": "prd_...",
+ "type": "REPLACEMENT_FOR",
+ "visibility": "PUBLIC"
+}
+```
+
+`type` is one of `REPLACEMENT_FOR`, `ACCESSORY_FOR`, `COMPATIBLE_WITH`, `PART_OF`, `CONTAINS`, `VARIANT_OF`, `SUPERSEDES`, `REQUIRES`. Creating a relationship only requires owning the source product — the target can belong to any organization; `PRIVATE`/`PUBLIC` visibility gates whether the other organization can read it back.
+
+## Localization
+
+`GET /products/:id?locale=fr-BE` resolves `name`/`description` through a fallback chain — exact locale → language-only prefix → base fields — resolved independently per field. The base `Product.name`/`description` never change; no `locale` query param means no behavior change.
diff --git a/docs/api-reference/reference/auth-controller-create-api-client.ParamsDetails.json b/docs/api-reference/reference/auth-controller-create-api-client.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-create-api-client.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-create-api-client.RequestSchema.json b/docs/api-reference/reference/auth-controller-create-api-client.RequestSchema.json
new file mode 100644
index 0000000000..85b4eb4226
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-create-api-client.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"scopes":{"type":"array","example":["products:write"],"description":"Real, enforced permission codes — see src/auth/permissions.ts. '*' grants full org-wide access, same as the Owner role.","items":{"type":"string","enum":["producers:write","products:write","orders:write","offers:write","connections:write","inventory:write","org:manage","dpp:manage","documents:write","attributes:write","classification:manage","sharing:write","roles:manage","webhooks:manage","categories:govern","*"]}}},"required":["name","scopes"],"title":"CreateApiClientDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-create-api-client.StatusCodes.json b/docs/api-reference/reference/auth-controller-create-api-client.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-create-api-client.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-create-api-client.api.mdx b/docs/api-reference/reference/auth-controller-create-api-client.api.mdx
new file mode 100644
index 0000000000..efe6303cd1
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-create-api-client.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-create-api-client
+title: "AuthController_createApiClient"
+description: "AuthController_createApiClient"
+sidebar_label: "AuthController_createApiClient"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmO9u2zYQwF/lwC9rC9pxEm9r9c11MiADimRJ2n0IgoKmThZbiVTJkx3PELCH2DvsPfYoe5LhKNlW4iFdgX30J1sUebw/P554txauQq/IOHuRikRMasqnzpJ3RYH+o/aoCCeVmRYGLQkpKuVViYQ+iOTuXgqPX2oM9NalK5Gs46PxmIqEfI1SaGeJFyZroaqqMDpudfQpOMtjQedYKv5HqwpFItzsE+q4j2fFyGDgt1aV2JsVyBs7F40UQbuqndK9Ut6rlZACH1RZFSiSOxaV1ppCsvSGUNxLkWLQ3lSsikjENapCAtrMeY0pVOhLE4JxFrRLMcDfv/8BARGC10eqpvxoNyMMKQzhu1ffwdwrSwGyuijA+flgaVIEpTWGICGoEkEFoBzhcmnRg3cFDoUUhrAM+5ZJgbYud8qj32gvn5ojhfNp/73Lsv6jdtaiZlN3Y8Yu0JLzq56MeVIqq+b8kFZV78HpukTb208ReTOrCXubFCoEk3Xh3S0OuWJ7tvPY7LB7vcRZ7tzn3ohWhHPnDYZk7hborZDilbhvmkb22LprgdiG/14KMsTRFtPHxJ6RE023OlTOhhaW8WjEP485+KAKk0YDIFOmwFSC8zFmHeSwMK5QhAEUzOpgLIYAvm4j+T+Rjt47//VpTOa/YrPBXrydnH28Pv/l/fnNrXhK/A2pWYFQKp0biwOPKo0DcfNI/ZAPV4khcFie3WfPa5A5D84iO690HiEzWKQhSuwcyanmOZnp8fhkNk714CQbnQzGr38YDWbfn74ZvMnG2cmP2fh4NHu9Z9TUeY9teCg3oTNmaSiHgH6BfhD4TBZuzro84Sn6c2dxX9MeXOcs8gxJmaIF67GQNnZP51934O1QHI+O9+l7xxnFziWUqsicLzv88KFi8aA9pmjJqCIcaDvQ9k20ne7Txt95xonzbSphVhOULYDbhBex630MXzgPhgJ4DK72GiEmXwmTs+vB6OT05QHLA5bfhOV4H8vb3ccW0x1pqcMA1hHggwkU86JpBxYmGA4aucitVnxtPZB4IPGbSHzzLImgnc0Koym06kcIOVMGUoTwAofzIShI6xYzhNqaLzXCQhU1HtLiAcb/DmMjBak5l9aCK02eH1DX3tBKJHdrMUPl0XPl3eyVsV8t3Uuk3HGRX7nQlvKUi0QcqcocLY7b0lZVZqDjgsDlVfRNV+lvFLlhWlvSNup0CLNZ3ZDs/vzkfKlIJOLnX2856C5U5iNMri7gM3KZ3sU5J6qiy/hIXO9aCuebsG9aADsiNpX/fn3fcIGbuYhR5+zLm6sLuCoU8c2at98jJM54cVmhhRtSNlU+hatWMFzEm/emun0JmsmtOmlDePfhqr0L8W2JF/GphKmzgQzVkf6//hyfJp0cWkm49HNlzW9RXpDAoZPdduhhym0HCVGl7n+nSpDwQXnDrQYJ022tLGGyrcklTB8V4xLONhU8b5Qa4ozEYW0NHw2Ph6MuRynNOYrjwIiUyvYczzrCji9o+YJJZWBL2COXbg8x4QMdVYUylo957Qt+18J3J1RlWJ1j7isw8VL0EbyXImdYkzuxXs9UwPe+aBoe/lKjX7VgLtgjs9jr4djnqNJ4RtaCGePDH7Pv4JbV4elFHTtFTzNxIzcrJlpjRc/Ove+dp6vLmEdnXQ+sjPlXeLXkXKGWIhHcYYluiccmjq1Foey8jjlUtDLZ8dEJO989OU7Rqk2ny656Gq7X7Yxb9xlt0wjZmUL8LBruoPwDXBfdrg==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_createApiClient
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-list-sessions.ParamsDetails.json b/docs/api-reference/reference/auth-controller-list-sessions.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-list-sessions.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-list-sessions.RequestSchema.json b/docs/api-reference/reference/auth-controller-list-sessions.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-list-sessions.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-list-sessions.StatusCodes.json b/docs/api-reference/reference/auth-controller-list-sessions.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-list-sessions.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-list-sessions.api.mdx b/docs/api-reference/reference/auth-controller-list-sessions.api.mdx
new file mode 100644
index 0000000000..0a250d75b0
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-list-sessions.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-list-sessions
+title: "AuthController_listSessions"
+description: "AuthController_listSessions"
+sidebar_label: "AuthController_listSessions"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWoL8St93o5jppkQKLpHE2ewiMgJbGFnclUuGM3LiGnqfv0SdbDKXEaQxkm7tPYajhn/Px45jcKl9hMGy9u8hUoiY151PvOPiiwHBfWOIZElnvSGlVmWBKZAykkru5VgGp8o6QVLJV4+FQ/mRIabCVKKpE3ZrCZlEelsYWmGnwAThHCPhQIzGsrS8MI4GBRU3WIRGEusC+0ir1jtGxyJqqKmwalQZfSbS3itIcSyMj3lSoEuUXXzFlcTRIWGxbzzAEH35slvoMX1gRB+tWSit8NGVVyNSvk7P76/M/P5/PbpR+FemMzaJAKE2aW4e9gCaLE3FzEO2+arQqkcisfrDPXtZg6QN4h5K80geEpcUio6jYJVLK95ZmNhofL8ZZ2jteDo97448/D3uLn05Oe6fL8fL4l+V4NFx83Atq6kPAtjycW+qC+ctyDoRhjaFHNkMo/Ep86ZyxATOV3LX53EX80tO5Vmw5+nUukmfIxhZn7PdE2tq9tr/uwGtXyJrxcLRP3ydLZN1KQ2mKpQ9lhx8+ViIPacAMHVtT0IG2A23vou1knzbpnYJTalhAW9QMZQvgc8OL2FUY4rx3cOQDWCYISL4OKQKlvkINk7Pr3vD45MMBywOW78JyvI/lze7HFrMdaZlHAucZ8NESx75o24m1JStFYx+5TY1cBQ4kHkh8F4mnb5IIqXfLwqZMrfsRQumUxIYRjrC/6oOBrG4xQ6idfagR1qao8dAWDzD+fxgbrdis5MWiTM252BOmdbC8UcndVi3QBAzyoGnmr2N8+zlUIudeXk0rjMQYzlWiBqayg/VoIJsNaGfdJqV7OT15MBNMW8Se/OjYlXi6Kd0NfvOhNKwS9ceXG6m2p8rew+TqAr7hRumnAufMVcyVdUsfC9+l53J2dQFXhWG5C8u6vZpGi6PLCh3M2LjMhAyugs/qlOEi3pWX3UH7AKmwVnVqffh0e9XeXuR+I4vkHMHUO2LLdeT133/GJ0mnwxsNl2FlnP076pEGSbbutsMAU58haYgudePOFdJwa4I1TkZTw7jywcr3CXOwi5plPC0M0bO7Gs58WpcYl0zqzLL0EKlHG/iwP+oPu65iUukqksDKE5cm9hNnYkXER9gRAUIEvEDiP+l8PnKMjzyoCmOdHMo6FPKtxeVOmcqKKyOlWz4Fjk5vrlXuicVqu10Yws+haBqZfqgxbFqU1pKKhRT4bt5olaPJIs5bJVQkapKmWAmfsXeqZL9dCvfPLP9+fvPkyS6AVyBG9e6TcZsX2ttta3Hjv6FrGqU7J1j+V828aZrvmiukiQ==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_listSessions
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-login.ParamsDetails.json b/docs/api-reference/reference/auth-controller-login.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-login.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-login.RequestSchema.json b/docs/api-reference/reference/auth-controller-login.RequestSchema.json
new file mode 100644
index 0000000000..9094a25df9
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-login.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"],"title":"LoginDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-login.StatusCodes.json b/docs/api-reference/reference/auth-controller-login.StatusCodes.json
new file mode 100644
index 0000000000..0fbae6ed8a
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-login.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-login.api.mdx b/docs/api-reference/reference/auth-controller-login.api.mdx
new file mode 100644
index 0000000000..88eeffe26a
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-login.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-login
+title: "AuthController_login"
+description: "AuthController_login"
+sidebar_label: "AuthController_login"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQgF9lwNMuQP8kcduNb14nBVK0iDfJpgcjCChxZHFLkQo5cuIafp6+R5+sGEqJ3TjY7QI92hfTFDm/34zGa+FrDIqMdxdajMWkoXLqHQVvLYZ76xfGCSlqFVSFhCGK8fxOioAPDUb66PVKjNfppwmoxZhCg1Lk3hE64keqrq3Jk4LBl+gd78W8xErxilY1irHw2RfMifUENocMRn6KlTJ251ikYNxCbNieGB990G883Mgdc+adjJ0bd1KQIctXfmXvzsiLzaa9FmvvYqt7NBzyl8aYB1Oz+WIsbpU1OvkChTIWtQQfgEqELiCwNN4qwggKsiYahzFCaCz2xf8XlRB8+Pax3GvcD48U+KSqOrn/cXJ2f3X+6fP59Y2Qrzy9JpVZhErlpXHYC6h02kjKgWX3OQ8VxqgW39CzFzUofADvkINX+YBQGLQ6JoldIC/eSO2uTH00Os5GOu8dF8Pj3ujDj8Ne9sPJae+0GBXHPxWjo2H2Yc+pqQ8B2/RQaWLnzKOhEiKGJYZeNBrB+gXb8gqkFM+tx7uW7iB1ziLPkJSxLVivaEy5e33+qgNvi+JoeLJPH9cmOmJumLysIahMjMYtXhBkPVBjSPvewTsfwFCEgNE3IUeIua9RwuTsqjc8Pnl/wPKA5XdhOdrH8mbb/lBvSdMeIzhPgE8mUmqUpt1Ymmg4aeQTt7niV82BxAOJ30Xi6VdJhNy7wpqcYmt+gpA7ZSRFCO+wv+iDAt20mCE0zjw0CEtlGzy0xQOM/x3GjRSkFjwYC9VQyef339tvzNQVUul55q59TEAoKsVYDFRtBsujAcsaPJ9tHe6G74h5EwytrhnBFp8MVcDwwiXb2m3JbvGzD5UiMRa//H7DmfSxNvcwmV3AH7gS8jl5JVGd4sCcX22n/PPnXL5M5ds8b4fxnQnduMInKLrQXV7PLmBmFRU+VKx3L9/pxLvLGh1ck3JaBQ2z4HWTE1xoHnyKrgjfQ84c1p20Pvx2O2snG559+BLXGEy9i2SoSSz//dfoZNzJoZWEy7BQzvyZ5EUJnCPZqcMAU68xSkgmdevOlCjhVgWjHK+minDhg+HnE6JgsoZ4PbUqxhdzJZz5vKkwXZk02hD3F85n6/iwf9Qfdh1H5dxxOAFMRaVSr3EqZZRthC1I8AzHv8L4UoaETzSorTKO09GE9EeqZWwuVG3YhCMhW2alaIXdSVEyjeO5WK8zFfFzsJsNbz80GFYtf0v2P+Oszu82UpSoNLM3XwtGiQs3dc7eDRvCx23DBu110Y18vjHJc6zpq2fvdgpmdpl6YNb9+6xS7xRBPXKdq0cxFkIKnwKSqiPtrYVVbtGk/idamfz5B1+yJrw=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_login
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout-all.ParamsDetails.json b/docs/api-reference/reference/auth-controller-logout-all.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout-all.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout-all.RequestSchema.json b/docs/api-reference/reference/auth-controller-logout-all.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout-all.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout-all.StatusCodes.json b/docs/api-reference/reference/auth-controller-logout-all.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout-all.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout-all.api.mdx b/docs/api-reference/reference/auth-controller-logout-all.api.mdx
new file mode 100644
index 0000000000..3f4428bf74
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout-all.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-logout-all
+title: "AuthController_logoutAll"
+description: "AuthController_logoutAll"
+sidebar_label: "AuthController_logoutAll"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu4zYQhl9lwKssQJ8St93oznVSIAUWcZNs9sIwAkoaWdylSIUcufEaep6+R5+sGEo5bAxkm3tfhaHIX//MfBqTO+Fq9Iq0sxe5SMSsoXLuLHlnDPo749auoZkxQopaeVUhoQ8iWa6k8BhqZwMGkezEdDzmPzmGzOua5UQibpXRedSGQmmDuQTngUoEj/cNBoKNdkYRBlCQNkFbDAF8Y3AopMicJbTEsqqujc6i0uhrYO2dCFmJleIRbWsUiXDpV8yIjXqOiXTnDL13/ufLMpfji1WBvLZrIQU+qKo2PPX77Ozu6vyvz+fXN0K+ivSaVGoQKpWV2uLAo8rjRHw5sPZQtFJUGIJa/+Q9e1mDwnlwFjl5lfMIhUaTh6jYJ5Jr95ZmPpkep9M8GxwX4+PB9OOv40H6y8np4LSYFse/FdPJOP24F9TceY9deajUoQ/mb00lBPQb9IOgcwTj1uylN6M95iJZdvl8jvil05UUpCn6OmfJMySlzRm5PZGudq/XX/XgdTt4z3Q82afvkw5B27WESpnC+arHDx9qlofMY46WtDLhQNuBtnfRdrJPGzdOxilTxKClDUHVAfjU8CJ2Nfo47ywcOQ+aAngMrvEZQshcjRJmZ1eD8fHJhwOWByzfheV0H8ub5x9bzJ9Jyx0GsI4AH3Sg2Bd1N7HRQXPRyEVuM8XngAOJBxLfReLpmyRC5mxhdEahsx8h5E4ZSBHCEQ7XQ1CQNx1mCI3V9w3CRpkGD23xAOP/h7GVgtSabyxCNVTy+oBZ4zVtRbLciRSVR88Xmnb1OsY37kIVUun4vlS7EHlRVIpEjFStR5vJiF816tYPVNzQJaW/OT06uGZMO8QeffTscjz9lOwHfzhfKRKJ+PPLDVfbhVrfwWxxAd9wK+RjgUuiOuZK28LFwvfpubxeXMDCKOKzMO/bq2lccXRZo4VrUjZXPoeFd3mTEVzEs3LRf2gfIGPW6l5tCJ9uF93phc83vIm/I5g7G0hTE3n995/pSdLr0FbCpV8rq79HvSCBky3716GHucsxSIiW+nFvJUi4VV4ry6O5Ilw7r/n5jMjrtCEez40K4cmuhDOXNRXGLbMm18Q9hOvRBT4eTobjvquojLsKJ5BLW6nYT6yKFWGP8EwEdBWGDokfcvn0vRE+0Kg2Slv+Ihtv+FlHy1KoWrOPiZAdnFK8YGYlRclwJUux26Uq4Gdv2pan7xv0246kDWci5fouV60UJao80rwTDEUiZlmGNQMaW6dI9rslY/9E8+Iy9q9o5jmGVyBG+f6RstsX4rtdt+LGfUPbtkL2Loj/F+2qbdv/AHtGomc=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_logoutAll
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout.ParamsDetails.json b/docs/api-reference/reference/auth-controller-logout.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout.RequestSchema.json b/docs/api-reference/reference/auth-controller-logout.RequestSchema.json
new file mode 100644
index 0000000000..891e27fa21
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"],"title":"RefreshDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout.StatusCodes.json b/docs/api-reference/reference/auth-controller-logout.StatusCodes.json
new file mode 100644
index 0000000000..0fbae6ed8a
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-logout.api.mdx b/docs/api-reference/reference/auth-controller-logout.api.mdx
new file mode 100644
index 0000000000..c54a1efb03
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-logout.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-logout
+title: "AuthController_logout"
+description: "AuthController_logout"
+sidebar_label: "AuthController_logout"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl19v4zYMwL8KoaceoPxpm21Xv+XSDuiAoVna6x6CopBtOtadLbkSlTYX5PPse+yTDZTdpG2G3g7YY/IShaZIivyJZtbCNugUaWsuc5GIcaByYg05W1Xo7iu7sIGEFI1yqkZC50Uyv5PC4UNAT59svhLJOv7UDnORkAsoRWYNoSF+pJqm0ln0MPjirWGZz0qsFa9o1aBIhE2/YBb9OI6HNPrWbOHQlzf2K5oX2p6cNgux2cgXjuevte+kIE0Vq89a+TlZsdm0m3xjjW99jIZD/srRZ043HKZIxK2qdB5jhkLpCnMJ1gGVCN3BYaltpQg9KEiD1wa9Bxcq7Iv/7fTonHXfV8tsjvvJkQKfVN3EBHwan9/PLv74fHF9I+Sbk16TSiuEWmWlNthzqPIoiM6BbffFRooavVeL7/jZyxoU1oE1yMmrrUMoNFa5jxa7RDJ179nMj0cn6SjPeifF8KQ3+vjzsJf+dHrWOytGxckvxeh4mH7cO9TEOodteajUvjvMo6YSPLolup7XOUJlFxzLG4xiPncnfhnpC6gu2OQ5ktJVC9ZrI23t3urPOvB2KI6Gp/v08SVEQ8wNk5cGglp7r81iiyD7gQZdlFsDR9aBJg8OvQ0uQ/CZbVDC+HzWG56cfjhgecDyh7Ac7WN5s2t/mO9Iyy16MJYAn7Sn2Ch1K1hqr7loZCO3meJ3yoHEA4k/ROLZuyRCZk1R6Yx8G36EkDulJ0UIR9hf9EFBHlrMEILRDwFhqaqAh7Z4gPG/w7iRgtSCB2ChApWsv//e/rfhuUYqLU/XjfXtME2lSMRANXqwPB6wscFWuT1yN2Z7zILTtLpmCFuAUlQO3ZZMjrYTyW7xq3W1IpGI3/684Vpa3+h7GE8v4SuuhHwuX0nUxEww6bPdPH/xXM238/d27pZCm8JGErp8XV1PL2FaKSqsq9nVXpGjxtFVgwauSZlcuRymzuYhI7jMedopupv3ATKGr+ms9eH322k7zvDAw5v4YsHEGk+aQgT4779Gp0lnh1YSrtxCGf0t2vMSuDCyc4cOJjZHLyGG1K27ULyEW+W0MryaKMKFdZqfj4mcTgPxelIp77fhSji3WagxbhmHXBM3FS5he/Bh/7g/7NqMyrjNcM6ZhFrFBmNULCLHCDt6YAvEqzxuLx/hEw2aSmnD9Qiu4mctWHOhGs0xHAvZkipFZ+1OipIZTOZivU6Vx8+u2mxY/BDQrVrolpyBlOs6v9tIUaLKGbj5WjA/fF9jw+zdcCSsXgWOaK95buTzjnGWYUPv6t69uCbTq9j60u7PZR1bpnDqka+3ehSJEFLYmJH2byLL1qJSZhFi2xOtTf78A02yHcQ=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_logout
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-refresh.ParamsDetails.json b/docs/api-reference/reference/auth-controller-refresh.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-refresh.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-refresh.RequestSchema.json b/docs/api-reference/reference/auth-controller-refresh.RequestSchema.json
new file mode 100644
index 0000000000..891e27fa21
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-refresh.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"],"title":"RefreshDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-refresh.StatusCodes.json b/docs/api-reference/reference/auth-controller-refresh.StatusCodes.json
new file mode 100644
index 0000000000..0fbae6ed8a
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-refresh.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-refresh.api.mdx b/docs/api-reference/reference/auth-controller-refresh.api.mdx
new file mode 100644
index 0000000000..7dbd53d77c
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-refresh.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-refresh
+title: "AuthController_refresh"
+description: "AuthController_refresh"
+sidebar_label: "AuthController_refresh"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQgF9lwFMWoH+SuO3GN6+TAilQxE2y6cEIAkoaWdyVSGU4cuI1/Dx9jz5ZMZQSJ3GR7QI92hfT1HB+P47Ga+VrJMPWu/NMjdWk4WLqHZMvS6Q7wpwwFEqr2pCpkJGCGs9vtSK8bzDwJ5+t1Hgdf1rCTI2ZGtQq9Y7RsTwydV3aNJoYfAneyV5IC6yMrHhVoxorn3zBlMUOiUNsMbRqo/1r/xXdC+nAZN1CbTb6heH5a+lbrdhyKeKX7f4pe7XZtIdC7V1obYyGQ/nKMKRka3FTjdWNKW0WfYbc2BIzDZ6AC4QucFhaXxrGAAaSJliHIQA1JfbV/xY9Enn6vljqM9xNjlb4aKo6JuDT5PTu8uyPz2dX10q/ifSKTVIiVCYtrMMeocniRjQOoruvNlpVGIJZfMfOTtYg9wTeoSSv8oSQWyyzEDV2iRTs3tOZHY6OklGW9o7y4VFv9PHnYS/56fikd5KP8qNf8tHhMPm4E9TUE2FbHi5s6IJ5sFxAQFoi9YLNEEq/EF/eYBTzuY34pacvoDoTlafIxpYtWK+VtLV7K3/ZgbdFcTQ83qVPbiE6Fm6EvKRhqGwI1i2eERQ7UCPFfe/gwBNYDkAYfEMpQkh9jRomp5e94dHxhz2Weyx/CMvRLpbX2/aH2Za0zGMA5xnw0QaOjdK2G0sbrBSNfeQ2NfJS2ZO4J/GHSDx5l0RIvctLm3Jo3Y8QSqcMbBjhAPuLPhjImhYzhMbZ+wZhacoG921xD+N/h3GjFZuFDMDKNFyI/O57+1+n5wq58DJf1z5EJAwXaqwGpraD5eFAtA220m3Q3aAdMG3I8upKMGwRStAQ0jOb4m+3pbvFr54qw2qsfvvzWqrpQ23vYDI7h6+4UvqpgAVzHXMhrF9uJ/qzp3q+ncCfJ2+trMt9ZKHL2MXV7BxmpeHcUyWmdsocJQ4uanRwxcZlhjKYkc+alOE8k3kn7+7eB0gFv7rT1offb2btQCMjjxySqwVT7wJbbiLCf/81Oh53enil4YIWxtlvUV/QIKXRnTkkmPoMg4boUrfuXAkabgxZ42Q1NYwLT1aeT5jJJg3LelqaEJ7d1XDq06bCeGTSZJalrUgJ28CH/cP+sGs0JpVGIzkXFCoTW4wzsYjiI2z5gS0RrxL5fP8YH3lQl8Y6KUhDpTxr0ZorU1tx4lDpFlb9VErBthAMx3O1Xicm4GcqNxvZvm+QVi12S8lBIpWd3260KtBkgtx8rYQgubOxafauxRURLxtxaaeBbvTTiUmaYs3vyt6+uCmzi9j+ku4PZhXbpiLzIJGYBzVWSisfU9L+VZS9tSqNWzSx9alWp3z+Aal0H20=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_refresh
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-register.ParamsDetails.json b/docs/api-reference/reference/auth-controller-register.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-register.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-register.RequestSchema.json b/docs/api-reference/reference/auth-controller-register.RequestSchema.json
new file mode 100644
index 0000000000..6ceb29e7bd
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-register.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationName":{"type":"string","description":"Name of the new organization"},"email":{"type":"string"},"password":{"type":"string","minLength":8},"firstName":{"type":"string"},"lastName":{"type":"string"}},"required":["organizationName","email","password"],"title":"RegisterDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-register.StatusCodes.json b/docs/api-reference/reference/auth-controller-register.StatusCodes.json
new file mode 100644
index 0000000000..0fbae6ed8a
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-register.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-register.api.mdx b/docs/api-reference/reference/auth-controller-register.api.mdx
new file mode 100644
index 0000000000..dd66b19db9
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-register.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-register
+title: "AuthController_register"
+description: "AuthController_register"
+sidebar_label: "AuthController_register"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl19v4zYMwL8Koac7QPnTNtvavOXSDuiwrVnb6x6CopBtOtbNllyJTpsF/jz7HvtkA2W3di/Z3Q7YY/IShaIoivyJEbfClugUaWsuEzEVs4qyuTXkbJ6je3C40p7QCSlK5VSBhM6L6fJeCoePFXr6YJONmG7DT+0wEVNyFUoRW0NoiKdUWeY6DnuMPnlrWObjDAvFI9qUKKbCRp8wJt7HsUek0fOsdStl9J9h8a+qwN4KT06blZAiQR87XbKKmArWApsCZQgGn6BvQdRSYKF0vmum5hN6/2Rdsm+PQpuf0awoE9PTWopUO0/7/amlyNW/TtayF6nl7vFe/Ot5cy8FacrZynWbjnOyoq4bY760xjfBmozH/PU2Hncq10nYAFKlc0wkWBei02YQ1trmitCDgqjy2qD34Koch+J/SyM6Z93X1WKb7M0wPquiDBH4MDt/uL747ePFze1O5m9IRTlCoeJMGxw4VEkQhM2BbQ85OwV6r1Zf2WcnapBaB9YgB6+wDiHVmCc+WGwDebmXnM5mcjQ5jiZJPDhOx8eDyen340H03cnZ4CydpMc/pJOjcXS6c6i5dQ6b9FCmfXuYJ00ZeHRrdAOvE4TcrtiXz/AK8exO3Pe0R9UFmzxHUjpvwHprpMnd5/rXLXgdipPxyS59XE/QEHPD5EUVQaG912b1iiDvAyW6ILcG3lkHmjw49LZyMYKPbYkSZufXg/HxyfsDlgcsvwnLyS6Wt135w6QjLbHowVgCfNaeQqHUjWCtveakkQ3cxor/Hg8kHkj8JhLPvkgixNakuY7JN+4HCLlSelKE8A6HqyEoSKoGM4TK6McKYa3yCg9l8QDjf4exloLUil/yQlWUsf7u//b+PqBAyiy3CqX1gQnFj2IxUqUerY9GbG7UU2+O3fYMHuPKadrcMIgNRBEqh+6VTva4Fcl28KN1hSIxFT/9fsv5tL7UDzBbXMIfuBHyJYUZURmiwbRfd83JxUtG9zUTvcQ3bUEn6LqBTtZ79nfC7rXfawG0SW3gq83C1c3iEha5otS6gp3fQSdovLsq0cANKZMol8DC2aSKCS4TfkOl7X1+DzEjXbbWhvDL3aJ5JPEzihfxdYW5NZ40VeFa/P3X5GTa2qGNhKteKLwETrdst0MHc5uglxBcasetK17CnXJaGR7NFeHKOs3zMyKno4p4PM+V96/uSji3cVVgWDKrEk1cqhiK5uDj4dFw3BYvFXPx4iwyXYUKZcs0wWUfoWMSepC9ieTrpSZ8plGZKx36vsqFrq/BdSlUqdmLIyGbG8C3qLV3L0XGbE+XYruNlMePLq9rFj9W6DYNymuOQsS5Xd7XUmSoEsZ4uRVMJVeCUIoHt+wLq+cV+7RTlmv5smIWx1jSF3Xve9dvcRWKatT230UoxsKpJz6KehJTIaSwISbhogXZVuTKrKpQUEVjkz//AAKDg8g=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_register
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-revoke-session.ParamsDetails.json b/docs/api-reference/reference/auth-controller-revoke-session.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-revoke-session.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-revoke-session.RequestSchema.json b/docs/api-reference/reference/auth-controller-revoke-session.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-revoke-session.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-revoke-session.StatusCodes.json b/docs/api-reference/reference/auth-controller-revoke-session.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-revoke-session.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/auth-controller-revoke-session.api.mdx b/docs/api-reference/reference/auth-controller-revoke-session.api.mdx
new file mode 100644
index 0000000000..8126b6c10d
--- /dev/null
+++ b/docs/api-reference/reference/auth-controller-revoke-session.api.mdx
@@ -0,0 +1,69 @@
+---
+id: auth-controller-revoke-session
+title: "AuthController_revokeSession"
+description: "AuthController_revokeSession"
+sidebar_label: "AuthController_revokeSession"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1OKzcQx19lNFcgOR9A2h72LgUqUfUIChx6gRBy1pOsD7v2Ys+m0Gifp+/RJ6vGuxAOqTjlPldx/DH+e/ybiScr9DUFzda7U4MZThsujrzj4MuSwl2gpb+nS4rReocKax10RUwhYnazQqcrwgytQYWBHhobyGDGoSGF1mGGteYCFca8oEpjtkJ+qmVF5GDdAtv2VhbG2rtIUcYn47F8GIp5sLXIwgyvdWlN0ghzbUsyCnwALghkU4oMS+tLzRRBw6yJ1lGMEJqShqgw947JsZjVdV3aPFkafY1ie7Wpzc++Us5y2CC+YdspoxB8+P603BvaPKhCetRVXUrXz9Pju4uT37+cXF6henPSS9azkqDSeWEdDQJpkzrS5iC2h9gqrChGvfjOPhteg7kP4B2J8yofCOaWShOTxd6RwsB7Ns3eZH82Mflgfz7eH0w+/TgezH44OBwczifz/Z/mk73x7NPGoY58CNRdDxc29of503IBkcKSwiBaQ1D6hWhpX6N00/lzfeLXSm8VsuWk60RMHhNrWx6z3zDS3d3b+Rc9eN0KWTMZ723S99nGaN1CQaXLuQ9Vjx891mIe8kCGHFtdxi1tW9o+RNvBJm2SgAWnXLOANmsYqg7Al4SXsKsppH7vYMcHsBwhUPRNyAli7mtSMD2+GIz3D3a3WG6x/BCWk00sr9Y/tmTWpBlPEZxnoEcbOeVF23UsbbRyaewTt7mW98SWxC2JHyLx8F0SIfduXtqcYyc/QSiZMrJmgh0aLoagwTQdZgSNsw8NwVKXDW3T4hbG/w9jq5D1Qqoe1A0XMj9S3gTLT6kSmpEOFDC7uZWSZvMn/Z2aqiIuvNRehkpiSlUWF5jhSNd2tNwbyYaj2M2Po5U1rZRUyTsi6JWUS+G1Y+1ZUA+xHKzvUn3jFx8qzZjhr39cybX7WNs7mJ6fwj09oXq+6YK5Tk6zbu4TAb2fzi7PT+G81CyPYlm3cblpxs5ZTQ4uWTujg4Hz4E2TM5ymR/O8j7hdyAW6urc2hM/X590zRh46skgCCo68i2y5SeD+8/fkIOvt8JOCs7DQzv6V7EUF4nXVb0cBjryhqCBJ6tu9lKjgWgernbSONNPCByvjU+ZgZw1L+6jUMb7IVXDs86aitGTaGMuSTOQ+uoOPh3vDcZ9edC7pRRxY+8iVTomlL5xFI6zRgA4NWLPxjT9fgo/pkUd1qa2T8GxCKWMdNDeoayta9lB1pAodHTqoMLMpNAofWeauVjMd6Uso21a6HxoKTx1RS/HITO75ZoXGRmkbzOa6jLQh6yWL4s5FH1m7sCboW7l9p3bCWMrEmCEqFOjSXwntbauwIG1SPK36gWmeU82vlmzkawm8l1g6Pvnt5Ork2Qdr172JgbTBfyparboZV/6eXNu+CGT5Lhrb9l9/mebR
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+AuthController_revokeSession
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-approve.ParamsDetails.json b/docs/api-reference/reference/categories-controller-approve.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-approve.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-approve.RequestSchema.json b/docs/api-reference/reference/categories-controller-approve.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-approve.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-approve.StatusCodes.json b/docs/api-reference/reference/categories-controller-approve.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-approve.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-approve.api.mdx b/docs/api-reference/reference/categories-controller-approve.api.mdx
new file mode 100644
index 0000000000..9853da4472
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-approve.api.mdx
@@ -0,0 +1,69 @@
+---
+id: categories-controller-approve
+title: "CategoriesController_approve"
+description: "CategoriesController_approve"
+sidebar_label: "CategoriesController_approve"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbBImmTTgxEEtDiyuSuRXHLkJjX0PH2PPlkxlGJn40W2uftkmtIM/5z5zZj0RjiPQZFx9kKLTMwU4dIFg3HmLAVXlhgelPfBrVFI4VVQFRKGKLL5RlhVociE0UKKgF9rE1CLjEKNUhgrMuEVrYQUMV9hpUS2EfTk2SJSMHYpmuaeDaN3NmLk5+PhiD80xjwYz7JEJkQjxWQ43H9wp0qjk3golClRS3ABaIXAajASrI0rFWEEBYs6GosxQqhL7AspcmcJLbFb5X1p8uRp8Dmy782+aLf4jDlxFAIHjUwrGUNw4cev5U7jfgSkwEdV+ZKnfp2ePVyf//Hp/OZWyFc7vSG1KBEqla+MxV5ApdNEWhzYd5+jVGGMavmDdfaiBoUL4Cxy8CoXEAqDpY7JYxdIhuMtn3o0GS8mOu+Ni+G4N/nw87C3+OnktHdaTIrxL8VkNFx82NvUzIWAbXpoZWK3mb8MrSBiWGPoRaMRSrdkLc1LxuZtPHc7fqn0XgoylHSds8szJGXKM3J7TtrcvX7/uiOytWgSfd/B8qOJ0dilhEqVhQtVhx8+enYPeUCNlowq44G2A23vou1kn7ZpTSvGKVfEoC1qgqoFcNvwEnYeQ5p3Fo5cAEMRAkZXhxwh5s6jhOnZdW84Pjk+YHnA8l1YTvaxvN392KLekaYdRrCOAB9NpNQXTTuxNtFw0sglbnPFR4wDiQcS30Xi6ZskQu5sUZqcYis/QcidMpIihCPsL/ugQNctZgi1NV9rhLUqazy0xQOM/x/GRgpSy5hW3d6d2CpiXgdDT+mitEAVMIhsfs83nlc7ffvKVSGtHF/NvIuJHL5SZWKgvBmsR4PdooON0c1gZ9iGiZW9UHPD4LbQPWvqaOYddlOyG/zmQqVIZOL3P285/y568wDTqwv4gk9CPqd8ReRT9IwtXEKhC9jlzdUFXJWK+HTMdntZTm8cXXq0cEPKahU0XAWn65zgIp2ei670jiFn+nznrQ8f767a8wyfeNiIKwtmzkYyVCeC//1ncpJ1fuhJwmVYKmv+Tv6iBD5RyW45DDBzGqOEJKkbd1KihDsVjLI82qVLwpQomEVNPJ6VKsatXAlnLq8rTCbTWhvirsL5aDc+7I/6w67PqJz7DAeQU1yp1GG6q/VuNdjRAbskfxPObRESPtLAl8pYLtM6lPysBWculDcsZcSr74iVIkvX+GfX91KsGLhsLjabhYr4KZRNw9NfawxPLVVrjsqCcz3fCG0ij7XIClVG3NO2bani6Lors2PYUfSt5m5SWeYstWX+H0AKBi/94dDcN1KsUOlUVpvuwTTP0dMLk73mzfW3Lamry9ROVc2R2UbvVRUk99/Vs9m0b9y6L2ibZiuP+DsrbJr/AJPz850=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+CategoriesController_approve
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-create.ParamsDetails.json b/docs/api-reference/reference/categories-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-create.RequestSchema.json b/docs/api-reference/reference/categories-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..01871f6724
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string"},"scope":{"type":"string","description":"'organization' (default): private to your org, usable immediately, no review. 'global': a PROPOSAL for the shared cross-org registry (ADR-020) — created PENDING, only usable once a `categories:govern` holder approves it via POST /categories/:id/approve.","enum":["organization","global"]}},"required":["code","name"],"title":"CreateCategoryDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-create.StatusCodes.json b/docs/api-reference/reference/categories-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-create.api.mdx b/docs/api-reference/reference/categories-controller-create.api.mdx
new file mode 100644
index 0000000000..9c72b11362
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: categories-controller-create
+title: "CategoriesController_create"
+description: "CategoriesController_create"
+sidebar_label: "CategoriesController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4IttgJJlW23jfVNst3DRxKrlpA+GkVDLkcSES27IWdmqsEAP0Tv0Hj1KT1IMd2XJkZE2RR/1pBX/5u+bWc4uhS8xKDLeXWqRiTNFOPXBYDzzjoK3FsO7PKAiFFKUKqgCCUMU2e2dFAE/VRjppdcLkS3TXxNQi4xChVLk3hE64ilVltbkSc7hh+gdj8V8hoXiJ1qUKDLhxx8wJ5YTWCsyGHk29xo3VkUKxk1FLYVTxfMTpQroiA16ZjLmvnxmmxQaYx5MyTqKTOz5MFXO/Jp03oN9jRNVWTrIoAxmrgiBPCx8FcCHqYQqqrFFMEWB2ihCu5DgPAScG7zvwt7U+rGyexkoGF5fDa9Gg59g4gPQDCHOVEANefAxdnyYQsCpiRQWsD84v+70jnsH8Ndvv0MTBw3Di9fnl69/kOCdXawke5cjKHifP0Ywm/o5BvceZt5qDKDKMvg5RjAEc6NgeDW6gcP1+sPM6MN2UVdIga4qRHYrNh0hpGgsEXd1LTciftuEqQ3KnRRkyLJ7z5LSLVeLc/KirputsfQuNiE+7h3xz9MIcLD6vd72xFtljU7qwEQZi1pC68kWSJgbbxVhBAXjKhqHMUKobDLrf6ISQ/Dhv8IrBT6ookwOejk4f3d98fObi9HNFoQjSrEtVD4zDjsBlU4DSTjw2V32UoExquk/yNnyWuLPO2TnFT4gTAxaHdOJrSOfS6HNM/VR/3jc13nneNI77vRffNvrjL85Oe2cTvqT4+8m/aPe+MWWUWc+BGzCQzMTW2PuDc0gYphj6ESjEayfsi7PU7ayeFPTDegu+MhzJGVsQ9zTQ5rYfb7+uiVyzWj/OSxfmRiNm0oolJ34ULT44UNpmixGjY6MsnFH2462r6LtZJu2QUUzxonLtJYwrgiKBsDHgpewKzGkce9g3wcwFCFg9FXIEdIbT0LzLjk52GG5w/KrsOxvY3mzftmiXpOmPUZwngAfTKRUF00zMDfRcNDIJ25zxTfLHYk7Er+KxNMvkgi5dxNrcoqN+glCrpSR+L6+j91pFxToqsEMoXLmU4UwV7bCXVncwfjvYaylIDWNSepjA8W7IuZVMLQQ2e1SjFEFDNwr13dbln6x0y6QZp4b8tLHBI6imcjEoSrN4fxoo2kTLJId07bkK/kjRrXBbKVFyy/b1A7J9uF7HwpFIhM//nLDEfexNO9gMLyEj7gQchXkGVGZ/MX5cL3u/S9WMV8hvcahadHX/9ed+Xqsbcif9pm1FMZNfEKsDcTVaHgJQ6uIb92s3RY9acX+VYkORqScVkHDMHhd5QSX6VY+aVP6AHKmumxP68Krt8PmnsQ3Kd7EGQtn3kUyVKXM+POP/knWnkMLCVcb+kYJfFOTrTgMcOY1RglJpfa5VSVKeKuCUY6f1hhIGBAFM66In8+sivFRXQnnPq8KTFsGlTbE1Yqj3hje6x51e239UjnXLw4Ts1OoVLnaOKylwZo6eKTuiTcfc5vwgQ5Lq0yKShUszzVA3gpVGtbkiIU/SYQZg5vdiuVyrCK+CbauefhThWHRoDpnJ4w5tLd3tRQzVDoly1IwdVwLUjHu3LAavNxWrM5WYa7lascgz7GkL66928gt/gDCOdB+vioadoO659Kh7vkThBQ+uSMlUhpbCqvctEolVTRnsq9Vxf549NlnCZasaqeUW2xouFw2K278R3R1LWRrCvF/Ud/Vdf03bqW/Uw==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+CategoriesController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list-pending.ParamsDetails.json b/docs/api-reference/reference/categories-controller-list-pending.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list-pending.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list-pending.RequestSchema.json b/docs/api-reference/reference/categories-controller-list-pending.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list-pending.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list-pending.StatusCodes.json b/docs/api-reference/reference/categories-controller-list-pending.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list-pending.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list-pending.api.mdx b/docs/api-reference/reference/categories-controller-list-pending.api.mdx
new file mode 100644
index 0000000000..7d56367c8e
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list-pending.api.mdx
@@ -0,0 +1,69 @@
+---
+id: categories-controller-list-pending
+title: "CategoriesController_listPending"
+description: "CategoriesController_listPending"
+sidebar_label: "CategoriesController_listPending"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWoD/jthvdXCctUmARN8mmh8AIKGpkc1ciFXLkjWvoefoefbJiKMVO42LT3H0KQ5H/+fpxTG6Fq9ArMs5eZiIRM0W4dN5gmDlL3hUF+ofCBJqjzYxdCikq5VWJhD6I5H4hhcdQORswiGQrxsMh/8kwaG8qlhWJEI0Uk//6cKcKk0XjkCtTYCbBeaAVgsfHGgPB2rhCEQZQkNbBWAwBfF1gX0ihnSW0xLKqqgqjo9LgS2DtrQh6haXiEW0qFIlw6RfUxBF4DppM6zJ67/zby7TL8MWqQL5NBz6psip46ufp+cP1xe+fL25uhXwV6Q2ptEAolV4Ziz2PKosT0Tiwdp+zVGIIavmGnYOsQe48OIucvNJ5hNxgkYWo2CWSi/s9zWw0GaeTTPfG+XDcm3z8cdhLfzg9653lk3z8Uz4ZDdOPB0HNnPfYlodWJnTBfDO0goB+jb4XTIZQuCX70jljPGYiuW/zuY/4pacLKchQ9OuCJc+RlCnOyR2ItLV7vf66I7Ld0UT6Rof0fTIhGLuUUKoid77s8MOniuVBe8zQklFFONJ2pO1dtJ0e0jatacU4aUUMWloTlC2Au4YXsavQx3ln4cR5MBTAY3C11whBuwolTM+ve8Px6Ycjlkcs34Xl5BDL2/2PLWZ70jKHAawjwCcTKPZF006sTTBcNHKRW634inAk8Ujiu0g8+y6JoJ3NC6MptO5HCLlTBlKEcIL9ZR8UZHWLGUJtzWONsFZFjce2eITx/8PYSEFqGaLV3duHdwXUtTe0Ecn9VqSoPHp+7zSLg0jffjKVSCvHz6slRngUrUQiBqoyg/VosLc7qHZb2iR1T6xnX24Y2xa5Z486ljm+bkp2g1+cLxWJRPz2xy1X34XKPMB0fglfcSPkc8FXRFXMnbG5iyB06bq6mV/CvFDEd2Ped1DjuOLkqkILN6RspnwGc++yWhNcxrtz3h28D6CZvapT68Onu3l7m+H7Dm/icwUzZwMZqiO/f/81OU06HdpIuPJLZc2fUS9I4PuU7Myhh5nLMEiILnXjzpUg4U55oyyP9sWSMCXyJq2Jx7NChbBzV8K503WJccu0zgxxT+F6tIEP+6P+sOsySnOX4QRWLlCpYn+xKlZkbw32bACzAXs4/pXT3TkkfKJBVShj+aTWvuBvLTj3QlWG/RmxC3topXjGZyHFygXipdttqgJ+9kXT8PRjjX7TQrXmpKRc6vtFI8UKVRYR3wrmIxFTrbFiXGNXFclhI+WzsEP71wvubKpmD3dRvEIyqneflN280N5u2xW37ivaphGyc4L4f9Esmqb5B9uIuAE=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+CategoriesController_listPending
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list.ParamsDetails.json b/docs/api-reference/reference/categories-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list.RequestSchema.json b/docs/api-reference/reference/categories-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list.StatusCodes.json b/docs/api-reference/reference/categories-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-list.api.mdx b/docs/api-reference/reference/categories-controller-list.api.mdx
new file mode 100644
index 0000000000..e7bf8d36e9
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: categories-controller-list
+title: "CategoriesController_list"
+description: "CategoriesController_list"
+sidebar_label: "CategoriesController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWoB3bcduNbq6TFimwSBpn00MQBJQ0srhLkQo5cuMaep6+R5+sGEqxs3GRbe4+haHI/3z9OCY3wtXoFWlnL3KRiLkiXDqvMcydJe+MQf9gdCAhRa28qpDQB5Hc3UvhMdTOBgwi2YjJaMR/cgyZ1zXriUSIVorpf324VUbn0SoUShvMJTgPVCJ4fGwwEKy0M4owgIK0CdpiCOAbg0MhReYsoSWWVXVtdBaVjr8E1t6IkJVYKR7RukaRCJd+wSxG4Dla0p3L6L3z31+WuRxfrArktV0KKfBJVbXhqZ9nZw/X579/Pl/cCPkq0gWp1CBUKiu1xYFHlceJaBxYe8hZqjAEtfyOnb2sQeE8OIucvMp5hEKjyUNU7BPJVX1LMx9PJ+k0zwaTYjQZTD/+OBqkP5ycDk6LaTH5qZiOR+nHvaDmznvsykOlDn0wf2oqIaBfoR8EnSMYt2Rfeme0x1wkd10+dxG/9PReCtIU/TpnyTMkpc0ZuT2Rrnav11/3RHY72kjfeJ++TzoEbZcSKmUK56seP3yqWR4yjzla0sqEA20H2t5F28k+bbOGSsYpU8SgpQ1B1QG4bXgRuxp9nHcWjpwHTQE8Btf4DCFkrkYJs7PrwWhy8uGA5QHLd2E53cfyZvdji/mOtNxhAOsI8EkHin1RdxMrHTQXjVzkNlN8NziQeCDxXSSevkkiZM4WRmcUOvcjhNwpAylCOMLhcggK8qbDDKGx+rFBWCnT4KEtHmD8/zC2UpBahmh1++jhXQGzxmtai+RuI1JUHj2/d9r7vUjfeCtVSKXjB9USu6cTlSIRx6rWx6vx8QuDbI+z0r+pno0vmNOOsWcXeng5oH5K9oNfnK8UiUT89scNl9uFWj/A7OoCvuJayOcKl0R1TJa2hYuV7/Nzubi6gCujiC/DvG+vqHHF0WWNFhakbK58Dlfe5U1GcBEvy0V/0j5AxrDVvdoQPt1eddcXvuDwJj5IMHc2kKYmAvvP39OTpNehtYRLv1RW/xX1ggS+QMneHHqYuxyDhOhSP+5dCRJuldfK8mhXHQkzIq/Thng8NyqErbsSzlzWVBi3zJpcEzcRrkcX+Gg4Ho76tqIybiucwNoFqlRsKFbFiuyswQ4G6GH4JpfbA0f4RMe1UdrykWy84W8dKHdC1Zr9GLPpb+gsXSBesNmkKuBnb9qWpx8b9OsOoRWnIOXC3t23UpSo8kjwRjANiZhlGdbsVmyaItnvk4z6FuBfz7lxqYb92vr+CsCo3n9Sdv1Ce7PpVty4r2jbVsjeCeL/RXvftu2/ojKpKQ==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+CategoriesController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-reject.ParamsDetails.json b/docs/api-reference/reference/categories-controller-reject.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-reject.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-reject.RequestSchema.json b/docs/api-reference/reference/categories-controller-reject.RequestSchema.json
new file mode 100644
index 0000000000..a7ab6b7f9d
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-reject.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string"}},"title":"RejectCategoryDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-reject.StatusCodes.json b/docs/api-reference/reference/categories-controller-reject.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-reject.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/categories-controller-reject.api.mdx b/docs/api-reference/reference/categories-controller-reject.api.mdx
new file mode 100644
index 0000000000..71709bfe65
--- /dev/null
+++ b/docs/api-reference/reference/categories-controller-reject.api.mdx
@@ -0,0 +1,69 @@
+---
+id: categories-controller-reject
+title: "CategoriesController_reject"
+description: "CategoriesController_reject"
+sidebar_label: "CategoriesController_reject"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1uGzcQgF9lwJMDUD+21TbZmyK7gAsEdm3HPRhGMFqOJCa75IacdawI+zx9jz5ZMdy11rECpwF61Mk0lzOcn48jDjfKVxSQrXdnRmVqhkxLHyzFmXccfFFQ+BDoI+WstKowYElMIarsdqMclqQyZY3SKtDn2gYyKuNQk1bWqUxVyCulVcxXVKLKNorXlUhEDtYtVdPctYIU+a03a1nxXE/uHZNj+YRVVdg82Tr6GL2TuR3Vfv5oaxDP2FJs1WIn8dwErdhyIVOXyc0uAusT9qpp5HugWHkXW0VH40P5YyjmwVZii8qUarSajMe7H26wsCZZDAu0BRkNPgCvCDq34d76ApkiIMzraB3FCKEuaKj+N98pBB9+vCz3hnYDpBU9YFmlAL2dnny4PP3z/enVtdLPPL1inBcEJeYr62gQCE2aSJuD6B5KlEqKEZc/2GcnarDwAbwjCV7pA8HCUmFi0tgFUuh9Sac5nBzNJyYfHC3GR4PJ61/Hg/kvx28GbxaTxdFvi8nheP56x6mZD4Ha9PDKxs6ZL5ZXECncUxhEawgKvxRbmqen4LaNZ+/xU0vveuhOReUJMdqiJe5bJW3unq+/7IjsGZ18D8t3NkbrlhpKLBY+lB1+9FCJesgDGXJssYh72va0/RRtx7u0TWteCU45soA2rxnKFsBtwUvYVRTSvHdw4ANYjhAo+jrkBDH3FWmYnlwOxkfHr/ZY7rH8KSwnu1he9z+2ZHrSjKcIzjPQg42c6qJtJ+5ttJI09onbHOUOtCdxT+JPkfjmRRIh925R2Jxja36CUCplZGSCAxouh4Bg6hYzgtrZzzXBPRY17cviHsb/DqM0OLiMaddtcydSkfI6WF6nVm5OGCio7PZOerJnnr7YE5bEKy+tY+Vj2yPySmVqhJUd3R+O+j1HG2ua0VauDZLY9cSWK8G2Re7Roo5l8a+b0t3gdx9KZJWpP/66luz7WNkPML04g0+0Vvox4SvmKsVOzsZl322ePua/7w63XaH0rwufqOlie351cQYXBbJcpGWTHSDSioPzihxcMTqDwcBF8KbOGc7SRXvRndJXkAuoVadtCO9uLtqrj1yOREhiBDPvIluuE+z//D05zjo9vNZwHpbo7NekL2qQy5futqMAM28oakgmdePOlKjhBoNFJ6M+sxqmzMHOa5bxrMAYt+ZqOPF5XVISmdbGshQgSV7r+Hh4OBx3JQlzKUkSbcGhxFSMuneCfjfoQYItEN9Ec3tcmR54VBVonWSlDoV8axm7VVhZseRQNu/Z1irrniSS5jutVoJmdqs2mzlGeh+KppHpzzWFdQvgvcRkLpm+3Shjo4yNyhZYRNoxbVt71cFldx5fQQ/ctyZ3k+gEyVS/5cFAK2E0vZ00d41WK0KTzt+m+zBr9xhci3gvuFPrG/0oMc1zqvjFtXdPjuvFearU8+7dpUwVXgX8IpHDL62RPvncvqDI3EYV6JZ1qtKq1Sm5xlrysc3Zs3OavPpuGDabdsW1/0SuabZRYflfAtM0/wJkIWOY
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+CategoriesController_reject
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-add-node.ParamsDetails.json b/docs/api-reference/reference/classification-controller-add-node.ParamsDetails.json
new file mode 100644
index 0000000000..77db864e83
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-add-node.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"schemeId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-add-node.RequestSchema.json b/docs/api-reference/reference/classification-controller-add-node.RequestSchema.json
new file mode 100644
index 0000000000..46ac99bd80
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-add-node.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string"}},"required":["code","name"],"title":"CreateClassificationNodeDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-add-node.StatusCodes.json b/docs/api-reference/reference/classification-controller-add-node.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-add-node.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-add-node.api.mdx b/docs/api-reference/reference/classification-controller-add-node.api.mdx
new file mode 100644
index 0000000000..08f582ba04
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-add-node.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-add-node
+title: "ClassificationController_addNode"
+description: "ClassificationController_addNode"
+sidebar_label: "ClassificationController_addNode"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtuGzcQQH9lwCcHoC621TbZN0V2ARdI7dhO+mAYwWg5kpjskhty1pcK+z39j35ZMdyVJVlG0hR91JNWvAzncmaWs0vlKwrI1rszozI1KTBGO7N5Gpp4x8EXBYVPaMzv3pDSqsKAJTGFqLKbpXJYkspUzBdU0plRWgX6WttARmUcatLKOpWpCnmhdLsMVbZU/FilfRysm6umuW03UuS33jzKiudycu+YHMsUVlXR6Tj4HL2TsR3RfvqZchaNgxjJlqLM5mLGrgK6s+SFiQoDORb/7Kq9ae5NK7uTdKsVWy5k9SQQMm37Vrx5wl41TSskVt7FVsOj4aH8GIp5sJUsVpkSRUbD4e7ERyysSSJhhrYgo8EH4AVB50+4s75ApggI0zpaRzFCqAvqq//NqRSCD//V91rRA5ZVctXb8cmny9P3H06vrpV+ZukV47QgKDFfWEe9QGjSQDocRHZfvFRSjDj/zjk7XoOZD+AdifNKHwhmlgoTk8TOkS8RsCnTHI6OpiOT945mw6Pe6PXPw970p+M3vTez0ezol9nocDh9vWPUxIdAbXh4YWNnzL3lBUQKdxR60RqCws9Fl5d5W1m8qekGfqci8oQYbdESty2kjd3z9ZcdkWtGRy9h+c7GaN1cQ4nFzIeyw48eKhEPeSBDji0WcU/bnrYfou14l7ZxzQvBKUcW0KY1Q9kC+FTwEnYVhTTuHRz4AJYjBIq+DjlBzH1FGsYnl73h0fGrPZZ7LH8Iy9Eultfrly2ZNWnGUwTnGejBRk510bYDdzZaCRr7xG2Ocsfak7gn8YdIfPNNEiH3blbYnGOrfoJQKmVkZIID6s/7gGDqFjOC2tmvNcEdFjXty+Iexn8PY6MV4zymU7eaHNkZKa+D5cfULU4JAwWV3dxKw/fM2u/3niXxwkufWvmYCJKuMlMDrOzg7nCwfXiv7UnjYLlqTpuB84ai9KHJfaLxhoZX7XoJ5ErPjnKxvBvS3cOvPpTIKlO//XEtXPhY2U8wvjiDL/So9AqFBXOVvCpZc7lucE9XZKzAX0Oz6qhX/9ft50ZPat3MJ+K6uJxfXZzBRYEsl3BRYwemtOLgvCIHV4zOYDBwEbypc4azdElfOe4V5AJ51Unrw7uPF+21SS5WskkSGCbeRbZcp0T5+6/RcdbJ4UcN52GOzv6Z5EUNcnHT3XEUYCJh0JBU6p47VaKGjxgsOnmaINPcByvzY+ZgpzXL8zYpGk58XpeUtoxrY1mKl4S3NXzYP+wPu3KGuZQziYcQVGIqZJ3Dt6XCGkBAY6AjcMunTwnP9MCDqkDrJDZ1KGSuhfNGYWVFn0NR4UVAlVbZxveTltFbrRYCeXajlsspRvoQiqaR4a81hceW3Dtx1VQAuFkqY6M8G5XNsIi0o+tTOVcHl12Kv4I1qds2dIPohOX0SpBvEFoJ3Btfe5rbRqsFoUlJveymJ+1JvWsRst6+8xJp9GrHOM+p4m+uvd1I/4vz9AqYdl+KyjaDAt5LmcP7VlWfLE/pnMaWqkA3r1P5V61MAQFrCdNTKJ+lebLqRWcsl+2Ka/+FXNM8+Yblvzimaf4BWqCl4A==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_addNode
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-assign.ParamsDetails.json b/docs/api-reference/reference/classification-controller-assign.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-assign.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-assign.RequestSchema.json b/docs/api-reference/reference/classification-controller-assign.RequestSchema.json
new file mode 100644
index 0000000000..c4aac3f7f1
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-assign.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string"},"classificationNodeId":{"type":"string"}},"required":["productId","classificationNodeId"],"title":"AssignClassificationDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-assign.StatusCodes.json b/docs/api-reference/reference/classification-controller-assign.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-assign.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-assign.api.mdx b/docs/api-reference/reference/classification-controller-assign.api.mdx
new file mode 100644
index 0000000000..dbb0d8a30c
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-assign.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-assign
+title: "ClassificationController_assign"
+description: "ClassificationController_assign"
+sidebar_label: "ClassificationController_assign"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmFFvIjcQx7/KyE85yRAgtL3wxpFUSqVrckkufUAo8noH8N2uvbFnSSjaz9Pv0U9WjXcJENJLI/WRJ7y2d/yfmZ8He1fCFegVGWcvUjEQo0yFYKZGx66Rs+RdlqG/5+6ZFVIUyqscCX0Qg/FECo8PJQb65NKlGKzio/GYigH5EqXQzhJa4iFVFFlj+PhbcJb7gp5jrrhFywLFQLjkG2ridTwrI4OBRwvv0lITa3yeGsgbOxOVFHpH9e8uxVcnVnJL3njL5r9YmEhBhjI2MYzu70bnjJyoqtpqKJwNtdRep8s/KQbtTcETxUCwyn6nsz9wpzKTRnMwVSbDVILzQHOEJrCwMC5ThAEUJGUwFkMAX2bYFv9bdNF759+epl2K+2GVAp9UXsQwfRqe3V+ff/l6fnMr5AtPb0glGUKu9NxYbHlUaeyIiwPbbnOUcgxBzd5YZy9qMHUenEUOXu48wtRgloZosQnka0hs20y7/V7ST3WrN+30Wv2PP3dayU8np63TaX/a+2Xa73aSj3tOjZz3WKeH5iY0zjwamkNAv0DfCiZFyNyMtbwAMMZz4/G20i30ztnkGZIyWU3crpE6dy/nXzdEbhjtv4blZxOCsTMJucqmzucNfvhUsHnQHlO0ZFQWDrQdaHsXbSf7tA1LmjNOWhGDlpQEeQ3gc8GL2BXoY7+zcOQ8GArgMbjSa4SgXYEShmfXrU7v5MMBywOW78Kyv4/l7ebPFtMNaanDANYR4JMJFOuiqTsWJhhOGrnIrVZ8QjqQeCDxXSSe/pBE0M5OM6Mp1PIjhFwpAylCOML2rA0K0rLGDKG05qFEWKisxENZPMD432GspCA1C3HVnQsOvxlQl97QUgzGK5Gg8uj53ldN9rx98+aYI80dXzILFyJAiuZiII5VYY4X3ePdtVv1azlaCoJlcMCaK+da0w0jXOO3VtZwzb42XbJp/Op8rkgMxG9/3DIJLhTmHoZXF/Adl0Kukz8nKmIceZ9cb+6252sWdu6iG1Zev4Ju3VGNnboIWZOKy5urC7jKFPG5m3Xs8RNnHF0WaOGGlE2VT+GqXhsu4rl8vdwH0Mx10Vhrw+e7q/qkxGcpfon3LIycDWSojHvj77/6J4PGDi0lXPqZsubPaC9I4LOabJZDDyOXYpAQJTXtRkqQcKe8UZZbI0U4c97w+JDIm6Qkbu/CIeHM6TKmlhdKDXG94vzWjnfa3XanqWBKcwXjhDA1uYq1y6qY4V2rsGEOnpnbiejzDid8ouMiU8ZyZkqfxbRGHMdCFYbVdPeSuoPkRIo5YzwYi9UqUQG/+qyquPuhRL+sQV1wYBJO93hSSTFHlcbtsxLMHFeIWKJbtyyLp2cly9sr15VcvzHUGgv64dzJ1k67uozFNmk+zuSxSAuvHrmgqEf+MCGFi+GJ2yj2rUSm7KyMhVbUNjn+quT4PMfwxfaKXjVDyi63FK5W9Yxb9x1tVQnZuEL8LKpJVVX/AKCpYqg=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_assign
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-attribute-definition.ParamsDetails.json b/docs/api-reference/reference/classification-controller-create-attribute-definition.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-attribute-definition.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-attribute-definition.RequestSchema.json b/docs/api-reference/reference/classification-controller-create-attribute-definition.RequestSchema.json
new file mode 100644
index 0000000000..9108667c9f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-attribute-definition.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"dataType":{"type":"string","enum":["STRING","TEXT","INTEGER","DECIMAL","BOOLEAN","DATE","DATETIME","ENUM","MEASUREMENT","REFERENCE","URL","EMAIL"]},"enumValues":{"description":"Required when dataType = ENUM","type":"array","items":{"type":"string"}},"unitCode":{"type":"string","description":"Default unit code, used when dataType = MEASUREMENT"}},"required":["code","name","dataType"],"title":"CreateAttributeDefinitionDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-attribute-definition.StatusCodes.json b/docs/api-reference/reference/classification-controller-create-attribute-definition.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-attribute-definition.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-attribute-definition.api.mdx b/docs/api-reference/reference/classification-controller-create-attribute-definition.api.mdx
new file mode 100644
index 0000000000..f2f5cf98c2
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-attribute-definition.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-create-attribute-definition
+title: "ClassificationController_createAttributeDefinition"
+description: "ClassificationController_createAttributeDefinition"
+sidebar_label: "ClassificationController_createAttributeDefinition"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9vIjcQwL+KNU93kklIQts7pD5wsHeiOpIUSFoJoZPZHcB3u/aePZuEov08/R79ZNV4l0ACTXunPvKUZWyP58/PE4/XYHN0irQ1/QTa0E2V93qu4yDqWkPOpim6T7FDRdghcnpWEPZwro3mOSAhV05lSOg8tCdTCQ6/FujpnU1W0F6Hn9phAm1yBUqIrSE0xEMqz9N6r9PP3hqW+XiJmeIvWuUIbbCzzxgT7+PYWNLoeTS2Ce7M8uS0WUApwajs8ECiSI2D8PmgBDRFBu0JjMbD/uUHkDCOfh+DhP7lOPoQDUFCL+r2B52PIOHd1dXHqHPJss44qv+M+wP+jC5vBiBhEHVGN8NoEF2ykmH0PhpGl12ecDNkFdGg0/8I07La+FalReVUgj52Og+BbcOwjpy4X6IRG/PFz6LepXZCOadWIEETZv6A56WEwmjqHgyYfLZnD+eqSEnwCsExlqLwB0zY9ZB32GZ5UqWmTsRO2KcSSFPKm3f/CaceWSjLSqHPrfFVXM6bZ/vh4Zy2ms39gVuV6iRQJeZKp5hIYZ2gJYoaTXGnbaoIvVBiVnht0HvhihRP4H/jE52z7nsxloAPKstDrN51ep+G0a830Wi8l60RqVmKIlPxUhtsOFRJEITNQ/pOOEoZeq8W/7LPXtTE3DphDXLwMutQzDWmiQ8a60By0XhJZ3LWOp+1krhxPm+eN1pvfmw2Zj9cvG28nbfm5z/NW2fN2Zs9p7rWOazSQ0vta2fuNS2FR3eHruF1giK1C7blMHsbj3ct3eEvYpU9JKXTirinSqrcPZ8/rIncMto6hOVAe6/NQopMpXPrsho/fMjDWY4dJmhIq9QfaTvS9k20XezT1iloyTjFihi0WUEiqwB8LHgBuxxdkFsjXlknNHnh0NvCxSh8bHOUotMbNprnF6+PWB6x/CYsW/tYjrf/bDHZkpZY9MJYEvigPYW6qCvBnfaak0Y2cBsrvnYeSTyS+E0kvn2RRBFbM091TL4yP0DIldKTIhSv8GRxIpRIigoz5Evw1wLFHd/Pj2XxCON/h7GUQGrhw65Pempe6TEunKYVtCdrmKFy6LhzLqd73n5PO54hLS0387n1gSlFS2jDqcr16d3ZqdosaiSPqzywURy+uoXfWDhioCsYN3bWlLPntUjWH++tyxRBG375bcxcWJ/rT6Jz3RdfcLVtV5dEeYgqn5rh9q0g2pCxAX8LTdXS77Ssj538tmHfbaQnm6nT3dZ35ylAm7kNdNY5vBpd98V1qogv7GzyHnhhxqurHI0YkTKJcom4djYpYhL9cKHfpOm1iPlA5LW2EzG4va6uWHwJ40V82EXXGk+ainCo/vqzddGu9dBKiiu3UEb/EfR5KfiSJ+vt0Al2x0sRTKq/a1O8FLfKaWX4q6sIF9ZpHn9EheVPqJKiZ+Miw7CkUySauNAxCpXjzZOzk2Zd+lTMpY9zx2xlKhS9OjlPtYotrKKCdWuCeILrkzA/1gvCBzrNU6UNp6twKY9VJE9A5ZpNPAMJh2meSlgy/O0JrNcz5fHGpWXJ4q8FulXF+B0Hasbpn/BDzBJVEs7hGhhXLjWh1jcCaDw9LcJry/O6X8rNik4cY04vzp3unM/rq1C1Z/U7WVZB6tQ9VyZ1zy8cEmxeucQPaSxbQ6rMoggVGyqdnA9VcGgew/fsZAavNq9FZrVj4XpdzRjbL2jKEmTtCvFvKKdlWf4NJhLjOQ==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_createAttributeDefinition
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-scheme.ParamsDetails.json b/docs/api-reference/reference/classification-controller-create-scheme.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-scheme.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-scheme.RequestSchema.json b/docs/api-reference/reference/classification-controller-create-scheme.RequestSchema.json
new file mode 100644
index 0000000000..bd1386b8b3
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-scheme.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["code","name"],"title":"CreateClassificationSchemeDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-scheme.StatusCodes.json b/docs/api-reference/reference/classification-controller-create-scheme.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-scheme.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-create-scheme.api.mdx b/docs/api-reference/reference/classification-controller-create-scheme.api.mdx
new file mode 100644
index 0000000000..685baba9ca
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-create-scheme.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-create-scheme
+title: "ClassificationController_createScheme"
+description: "ClassificationController_createScheme"
+sidebar_label: "ClassificationController_createScheme"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmFFvIjcQx7/KyE930kKA0PbCG0dSKZVOoSGXPiAUDbsD+G7X3tizJBTt5+n36CerxrsECCi9VH3kCa/HOx7/5+fB3rWyOTlkbc11onpqkKL3eqbj0DWwhp1NU3IPsSNkGsULykhFKkeHGTE5r3rjSaQcPRbk+bNNVqq3Do/aUaJ67AqKVGwNk2ExYZ6ntfuzb94a6fPiFqXFq5xUT9npN4pZ5nESH2vyYo1tQjujPDtt5qqMlMHsuCEhHzudy2xH7GW0E+m4cl87m0SKNacyehCWvq9MJcQlW1WWlRufW+OrMDuttvzsza0kmm6rdWi4x1QnwSnMUKeURGAd8IKgFhWW2qbI5AFhWnhtyHtwRUpN9b8pS85Z918TECl6xiwPYn3uXz7cXv3+9Wp0p17Jr0aM05Qgw3ihDTUcYRI6wuQgvpuiUkbe4/xf5jlQDWbWgTUk4mXWEcw0pYkPHmshhfC3fCbtbmfaTeJGZ9bqNLqffm41pj+dXzQuZt1Z55dZt92afjpY1MA6R1V6eKF9vZgnzQvw5JbkGl4nBKmdSyzHiduseDfSHQCvxOUlMeq0Im7fSZW71+NvayK3jHaPYflFe6/NPIIM05l1WY0fPefiHmJHCRnWmPoTbSfa3kXb+SFt/YIXglOMLKBNC4asAvCl4AXscnKh3xr4YB1o9uDI28LFBD62OUXQv7xttDrnH09YnrB8F5bdQyzvtn+2lGxJSyx5MJaBnrXnUBd11bHUXkvS2AZuY5Qz0onEE4nvIvHiTRIhtmaW6ph9FX6AUCqlZ2SCD9ScNwEhKSrMCAqjHwuCJaYFncriCcYfh7GMFOPch1n3rjnypqe4cJpXqjdeqymhIyd3vnJysNofvDtmxAsrl83c+oAR8kL11Bnm+mzZPtuPoBEoJa8kEJGsvnBuohrV5t42tppsWW3dFdWNX63LkFVP/fbHnbBgfa4foD+8hu+0UtEm/QvmPCgpO+V2e7O92tCwgX0LSnUB3T7vK7O9j2ozswG0Oh03o+E1DFNkOXtLJAfvhhEfbnIyMGI0CboEhs4mRcxwHc7mG6k+Qixs57W3Jny5H1anJTlPyUuyb2FgjWfNRdgff//VPe/VfngVwY2bo9F/Bn8+AjmvRfV05GBgE/IRhJDqdh2Kj+AenUYjrQEyza3TYu8zOz0tWNr7gERwaeMio/BKv0g0S82SDFcLbzXbzVZdxTCWKiYpEWYyDPWr1nzfK2y5g4o7eAHv+McApmc+y1PURhJUuFRsFZNjhbmWoNoSx3EuJ5FaCMe9sVqvp+jpq0vLUrofC3KritalaDOVjI8nZaQWhEnYRWsl4EmhCJW6cSchyfC0kNAOqnYZbd7oxzHl/ObYyc5WG96Emjutv89kFb4On6Su4JN8n4iUDdKEvRT61ipFMy9CvVWVT0kBFqLNi36v9lhYVW1Cs9qJcL2uRtzZ72TKUkX1UlieVTkpy/IfgbZihw==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_createScheme
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.ParamsDetails.json b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.ParamsDetails.json
new file mode 100644
index 0000000000..03597ce12f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"categoryId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.RequestSchema.json b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.StatusCodes.json b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.api.mdx b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.api.mdx
new file mode 100644
index 0000000000..c024932fd9
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-get-effective-attribute-schema.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-get-effective-attribute-schema
+title: "ClassificationController_getEffectiveAttributeSchema"
+description: "ClassificationController_getEffectiveAttributeSchema"
+sidebar_label: "ClassificationController_getEffectiveAttributeSchema"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM9u4zYQxl9lwFMC0H/jthvdXCctUmCRNMmmhyAIKHFkc1ciFXLkxjX0PH2PPlkxlGLH8WK36dmnKBQ5/PjxxzFHa+Eq9IqMsxdaJGJWqBBMbrLYNHOWvCsK9I9zpPM8x4zMEqdE3qQ14U22wFIJKSrlVYmEPojkfi2sKlEkIlOEc+dXF1pI4fGpNh61SMjXKIWxIhGVooWQIrRxkrWgVcUjA3lj56JpHnhgqJwNGPj9eDjkPxpD5k3FGkUiRCPF5Gsv7lRhdFwJ5MoUqCU4D7RAYDUYCJbGFYowgIK0DsZiCODrAvtCisxZQkscVlVV0Xky+Bw49npftEs/Y0bshmdTybSS0Xvnv98tcxr3HZACn1VZFdz08/Ts8fr890/nN7dCvlnpDam0QChVtjAWex6Vjg1xcuDYfXapxBDU/Dvz7LkGufPgLLJ5pfMIucFChxixM5Lh+VZMPZqM04nOeuN8OO5NPvw47KU/nJz2TvNJPv4pn4yG6Ye9Rc2c99huDy1M6Bbzp6EFBPRL9L1gNELh5qylec3YfevndsWvlT5IQYairnMOeYakTHFGbi9Iu3dv+193RLYjmkjfaJ++jyYEY+cSSlXkzpcdfvhccXjIPGq0ZFQRDrQdaHsXbSf7tE1rWjBOnHS1hLQmKFsANwkvYlehj+3OwpHzYCiAx+BqnyGEzFUoYXp23RuOT44PWB6wfBeWk30sb7c/tqi3pGmHAawjwGcTKOZF0zYsTTC8aeQit5ni68eBxAOJ7yLx9JskQuZsXpiMQis/QsiZMpAihCPsz/ugQNctZgi1NU81wlIVNR7S4gHG/w5jIwWpeYiz7tRWPDJgVntDq1g0pag8epHcP3DV82a1/68sK5EWjsu6OUaouNpKxEBVZrAcDbryzGAYrLelWjNQL3ECl2bRTNb/Sm+coEXzRXXHPPvQNcnu4RfnS0UiEb/9ccuUuFCZR5heXcAXXAn5AsaCqIoeG5u7CExn6+XN1QVcFYr4Ds3j9liIPY4uK7RwQ8pq5TVceafrjOAi3rFfnDuGjBmtumh9+Hh31d56+F7Eg/j8wczZQIbqyPk/f09Oki4OrSRc+rmy5q8YL0jge5fspkMPM6cxSIiSuudOSpBwp7xRlp9mG+8lbPaN23c2WsKZy+oS45BprQ1x7uH9aBc+7I/6wy4bqYyzERtYuUClinmoK8R3o8KWH5gjwQagrRLYILTj9OYUEz7ToCqUsXzOa1/wuxave6EqwypHLGyzTCFFsvM94BVlD1IsXCAeu16nKuAnXzQNNz/V6Fcte0v2LmUi7tdCm8DPWiS5KgLuydykZ3F03R3ZY9iytiu/a1SWaYwpnr8pSMF47nzEaB4aKRaodDym667DNMuwoldD934Q+DxvjuKv55yhVc1ebfx8c2Ri9K/KWq/bHrfuC9qm2agk/p8FNs2/Nokgzg==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_getEffectiveAttributeSchema
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-attribute-definitions.ParamsDetails.json b/docs/api-reference/reference/classification-controller-list-attribute-definitions.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-attribute-definitions.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-attribute-definitions.RequestSchema.json b/docs/api-reference/reference/classification-controller-list-attribute-definitions.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-attribute-definitions.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-attribute-definitions.StatusCodes.json b/docs/api-reference/reference/classification-controller-list-attribute-definitions.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-attribute-definitions.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-attribute-definitions.api.mdx b/docs/api-reference/reference/classification-controller-list-attribute-definitions.api.mdx
new file mode 100644
index 0000000000..dcd6499ab4
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-attribute-definitions.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-list-attribute-definitions
+title: "ClassificationController_listAttributeDefinitions"
+description: "ClassificationController_listAttributeDefinitions"
+sidebar_label: "ClassificationController_listAttributeDefinitions"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQgF9lwFMWoB3bcduNbq6dFimw2DTJpofACMbSyOauRCrkyI1r6Hn6Hn2yYijlx/Fit+nZJ9NDznB+Po7IrXIVeWTj7HmmEjUtMASTmzSKps6yd0VB/q4wgSfM3ixqphnlxhpZEZRWFXosickHldzOtfIUKmcDBZVs1WgwkJ+MQupNJSoqUarRavy1iRssTBa3hhxNQZkG54FXBJ7uawoMa+MKZAqAsKiDsRQC+LqgvtIqdZbJspjFqiq6II4/B7G9VSFdUYky4k1FKlFu8ZlSlgi8ZIFN6zJ57/z3l6UuoxerAntjl0oresCyKkT082R2d3n2+6ezq2ulX0V6xbgoCEpMV8ZSzxNmURA3B7HdlyyVFAIuv7PPXtYgdx6cJUle6TxBbqjIQrTYJVKq/S2b2XA8WoyztDfKB6Pe+P2Pg97ih5PT3mk+zkc/5ePhYPF+L6ip857a8vDKhC6YPw2vIJBfk+8FkxEUbim+dM4YT5lKbtt8Pkf80tO5Vmw4+nUmJmfEaIoZuz0jbe1er7/siGw1mkjfcJ++DyYEY5caSixy58sOP3qoxDyknjKybLAIB9oOtL2JtpN92iY1rwSnFFlAW9QMZQvgU8OL2FXko9xZOHIeDAfwFFztU4KQuoo0TGaXvcHo5N0BywOWb8JyvI/l9fPHlrJn0jJHAaxjoAcTOPZF0wrWJhgpGrvIbYpyXziQeCDxTSSefpNESJ3NC5NyaN2PEEqnDIxMcET9ZR8QsrrFjKC25r4mWGNR06EtHmD87zA2WjEuQ9x15zEkmoHS2hveqOR2qxaEnry8eZr5XrT/4x1VEq+cPMKWFIlCXqlEHWNljtfDY3xU6mU7Wm3yuqfXo39XgnOL4qOXHeMSdyfS3eAX50tklajf/rgWKlyozB1MLs7hC22UfgRhxVzFnBqbuwhIl8aPVxfncFEgy51Z9PZqH1ccfazIwhWjzdBncOFdVqcM5/FO/Zipd5AKk1VnrQ8fbi7aW47cg0RJzhtMnQ1suI5c//P3+CTp7PBGw0e/RGv+ivaCBrln6W478jB1GQUN0aVu3LkSNNygN2hlNEWmpfNG5p/qJfKdwmqYubQuKapM6syw9BqpRxv4oD/sD7rug6l0H0lg5QKXGPuOxViRXavwzAsIL88OwC4xO1l+OrFMD3xcFWisnOnaFzLX0nSrsDLi4VBp9XWi5lqtXGBZu90uMNAnXzSNiO9r8puWs7XkaSHVv503Wq0Is3gStkqQSdQkTakSiGMDVsl+z5Uj8wT8r2fSBLEWF5/CeEVptN5Nod28sL3dtiuu3ReyTaN05wTLf9XMm6b5F8Os0X8=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_listAttributeDefinitions
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-nodes.ParamsDetails.json b/docs/api-reference/reference/classification-controller-list-nodes.ParamsDetails.json
new file mode 100644
index 0000000000..77db864e83
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-nodes.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"schemeId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-nodes.RequestSchema.json b/docs/api-reference/reference/classification-controller-list-nodes.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-nodes.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-nodes.StatusCodes.json b/docs/api-reference/reference/classification-controller-list-nodes.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-nodes.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-nodes.api.mdx b/docs/api-reference/reference/classification-controller-list-nodes.api.mdx
new file mode 100644
index 0000000000..6704542fbe
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-nodes.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-list-nodes
+title: "ClassificationController_listNodes"
+description: "ClassificationController_listNodes"
+sidebar_label: "ClassificationController_listNodes"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1SIzcQx1+lSyeokj9xkmVujiEpUrWBAEsOFEXJox5buzPSIPV4IVPzPHmPPFmqNYOxMbW73H2yrI/Wv1s/tdWuhSvRKzLOnmmRiFmuQjCZSWPXzFnyLs/R3+cm0J9OYxBSlMqrAgl9EMltLawqUCQipEss8EwLKTw+VMajFgn5CqUwViSiVLQUsp2mRFILeirjOvLGLkTT3PHCUDobMPD4eDjkD40h9aZkPSIRopFi8tbAjcqNjqohUyZHLcF5oCUCq8FAsDIuV4QBFMyrYCyGAL7KsS+kSJ0ltMRmVVnmnf+Dz4Ft17ui3fwzpsSx8BxAMq1k9N75709LncbdCEiBj6ooc+76dXpyf3n616fTq2shX3l6RWqeIxQqXRqLPY9Kx464ObDtPkepwBDU4jv77EQNMufBWeTgFc4jZAZzHaLFLpAMyrds6tFkPJ/otDfOhuPe5MPPw978p6Pj3nE2yca/ZJPRcP5hx6mZ8x7b46GlCZ0zXw0tIaBfoe8FoxFyt2AtzSZjt208XzzeVHonBRmKuk7Z5AmSMvkJuR0j7dm9nn/ZEdmuaCJ9o136PpoQjF1IKFSeOV90+OFjyeYh9ajRklF52NO2p+1dtB3t0jataMk4pYoYtHlFULQArhNexK5EH/udhQPnwVAAj8FVPkUIqStRwvTksjccHx3usdxj+S4sJ7tYXr/82KJ+IU07DGAdAT6aQDEvmrZjZYLhQyMXuU0VPzX2JO5JfBeJx98kEVJns9ykFFr5EULOlIEUIRxgf9EHBbpqMUOorHmoEFYqr3CfFvcw/jiMjRSkFiHuulVH8cqAaeUNPcWSaY7KoxfJ7R1XPa+8/ZESrEBaOi7YFhgR4toqEQNVmsFqNNjevddWZmFQP5dozcB2dtr4seQNiVftfD7JZ6Ed5ux61yW7xm/OF4pEIv74+5rBcKE09zC9OIMv+CTkMwtLojKG1djMRUa6SJ5fXZzBRa6In828buf444yD8xItXJGyWnkNF97pKiU4i8/qZ08PIWUsy85aHz7eXLQPHX4K8SK+cjBzNpChKqL937+To6SzQ08Szv1CWfNPtBck8FNLdtuhhxnHTUKU1LU7KUHCjfJGWW7NFOHCecPjUyJv5hVxe/tsJZy4tCowLplW2hCnGz6P1vFhf9QfdglIpZyAOIClC1SomHq6ynvbKrwgA4wMPDOzFdX1JSV8pEGZK2P5Glc+57GWp1uhSsOKRiziTaaEFMlG4d9idSfF0gViA3U9VwE/+bxpuPuhQv/UwrbiYM0ZgdtaaBO4rUWSqTzgjtZ1ChYHl921PIQXuLZ96DqVZfxiGuf/DaRgHjf+pmjuGimWqHS8iHU3PE1TLGlj4U7K5xu7vn6/n3IOVhWHax3SVzckWn9TVF23M67dF7RNs9ZI/J0FNs3/stgMoQ==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_listNodes
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-schemes.ParamsDetails.json b/docs/api-reference/reference/classification-controller-list-schemes.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-schemes.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-schemes.RequestSchema.json b/docs/api-reference/reference/classification-controller-list-schemes.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-schemes.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-schemes.StatusCodes.json b/docs/api-reference/reference/classification-controller-list-schemes.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-schemes.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-list-schemes.api.mdx b/docs/api-reference/reference/classification-controller-list-schemes.api.mdx
new file mode 100644
index 0000000000..c32c011a58
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-list-schemes.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-list-schemes
+title: "ClassificationController_listSchemes"
+description: "ClassificationController_listSchemes"
+sidebar_label: "ClassificationController_listSchemes"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u2zgQx19lwFMKyI7teHcb3bxOdpEFimSTND0ERkBJI4utRCqckTdeQ8+z77FPVgylxElctM3dJ9P8GP5n5scRuVGuRq/ZOHuWqVjNS01kcpOGrrmz7F1Zor8rDfFVWmCFpCJVa68rZPSk4ttFpDxS7SwhqXijJqOR/GRIqTe12FGxUm2kpt8auNGlycJukGtTYhaB88AFgsf7BolhZVypGQk0JA0Zi0TgmxKHKlKps4yWxayu67LXffiZxPZGkSjW0uJ1jSpWLvmMKYsHXhxn00lG753/8bTUZfhsFrE3dqkihQ+6qkvp+n12cnd5+vfH06trFb3y9Ip1UiJUOi2MxYFHnYWOsDmI7aFEqUIivfzBPjtRg9x5cBYleJXzCLnBMqNgsQ+kJPh7NrPxdJJMs3QwyUeTwfT9r6NB8svR8eA4n+aT3/LpeJS833Fq7rzHLj1cGOqd+cdwAYR+hX5AJkMo3VK09GKMx0zFt108tx4/V7qIFBsOuk7F5AmyNuUJux0jXe5ez7/siexWtIG+8S59HwyRscsIKl3mzlc9fvhQi3lIPWZo2eiS9rTtaXsTbUe7tM0aLgSnVLOAljQMVQfgU8EL2NXoQ7+zcOA8GCbwSK7xKQKlrsYIZieXg9Hk6N0eyz2Wb8Jyuovl9fZji9mWtMwhgXUM+GCIQ100XcfKkJGksQvcplquCHsS9yS+icTj75IIqbN5aVKmTn6AUColsWaEAxwuh6AhazrMEBpr7huElS4b3JfFPYw/D2MbKdZLCru+eP/ISsK08YbXKr7dqAS1Ry9vnnax4+3PPZ0q5MLJU2uJASLNhYrVoa7N4Wp8+HL/AT0t6wLWP7ceNT1ajbfKeq7F174r6ht/OF9pVrH669O1kOCoNncwuziDL7hW0WPyC+Y6xNHY3AUo+tCdX12cwUWpWe7Jsm4n32HGwXmNFq5Y20z7DC68y5qU4Szcox8dewepcFj31obw4eaiu9nI3UcWyRmDubPEhpvA8v//TY/i3g6vIzj3S23Nv8EeRSB3q6jfDj3MXYYUQZDUt3spFMGN9kZbac0149J5I+MzZm+ShqX9MpkRnLi0qTAsmTWZYakvko/O8dFwPBz1FUenUnEkgLUjrnSoNVaHjLy0CltGQBiBLSQv4vp0Lhkf+LAutbFychtfylgH0K3StRFNY5HxbYgWkSocsUzebBJN+NGXbSvd9w36dYfWSkKTSMJvF22kCtRZAH6jhJJYzdIUawE31FkV75ZWORlPkP95KrVON6LxyY9XYAbr/ZC262e2N5tuxrX7grZtVdSLYPmv2kXbtl8Bt2fBrw==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_listSchemes
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.ParamsDetails.json b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.ParamsDetails.json
new file mode 100644
index 0000000000..279380e6c7
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"categoryId","required":true,"in":"path","schema":{"type":"string"}},{"name":"attributeDefinitionId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.RequestSchema.json b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.StatusCodes.json b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.api.mdx b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.api.mdx
new file mode 100644
index 0000000000..31efeb6a2f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-remove-category-attribute-schema.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-remove-category-attribute-schema
+title: "ClassificationController_removeCategoryAttributeSchema"
+description: "ClassificationController_removeCategoryAttributeSchema"
+sidebar_label: "ClassificationController_removeCategoryAttributeSchema"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQgF9lwFMC0L9x241urp0CKbpImmTTQxAEtDiyuSuRCjly4xp6nr5Hn6wYSrHjONht9tCTT5ZH5HB+Po44XAtXoldknD3XIhGTXIVgMpNG0cRZ8i7P0T94LNwSJ4pw7vxqTOTNrCK8ThdYKCFFqbwqkNAHkdythVUFikSk7fhzLaTw+FgZj1ok5CuUwliRiFLRQkgRGj3JWtCq5JmBvLFzUddyo0w9LzrFzFjT2vy9eu95YiidDRj4/bDf5x+NIfWmZOUiEaKWYvTWi1uVGx1jBJkyOWoJzgMtENgaDARL43JFGEDBrArGYgjgqxy7QorUWUJLrFaVZd5Gu/c5sO71vtFu9hlT4ih7TheZxmT03vlvD0udxv0ISIFPqihzFv08nj5cnf3+6ez6RshXnl6TmuUIhUoXxmLHo9JREBcH1t3lKBUYgpp/Y529qEHmPDiLHLzCeYTMYK5D1NgGkrH8mk49GA1nI512hll/2Bl9+LHfmf1wcto5zUbZ8KdsNOjPPuw5NXHeY5MeWpjQOvOnoQUE9Ev0nWA0Qu7mbEv9krG7Jp5bj19aei8FGYp2nbHKKZIy+ZTcnpImd6/HX7VENjPqSN9gn76PJgRj5xIKlWfOFy1++FSyekg9arRkVB4OtB1oexdtJ/u0jStaME5czLWEWUVQNABuCl7ErkQf5c7CkfNgKIDH4CqfIoTUlShhPL3q9IcnxwcsD1i+C8vRPpY3248t6i1p2mEA6wjwyQSKddE0gqUJhpNGLnKbKj7YHEg8kPguEk+/SiKkzma5SSk05kcIuVIGUoRwhN15FxToqsEMobLmsUJYqrzCQ1k8wPjfYaylIDUPcdWdro1nBkwrb2gVm7EZKo9eJHf33PW88vZ7G74CaeG4ZdSYI2FsAWkhEtFTpektB7229zMYeuttH1j3Nm1cp2G5t36zsau5e4vxZhdfuBQtaOh9dqzdFhyqViTbh1+cLxSJRPz6xw2D5EJpHmB8eQ5fcCXkMzsLojKmwdjMRabayF9cX57DZa6Ij9k8bw+XOOLookQL16SsVl7DpXe6SgnO4zH8ObjHkDLGZautCx9vL5uDER+deBJvUZg4G8hQFbfCP3+PTpJWD60kXPi5suavqC9I4KOZbJdDDxOnMUiIJrXPrSlBwq3yRll+mmwyI2GTWJbvsCBh6tKqwDhlXGlDXJ44H43j/e6g228Llkq5YHEASxeoULFUtW37rlbYIgYNYs/mrLa2wIaynVhvtjrhE/XKXBnLxaDyOb9r8LsTqjRs54BN2zgqpEh2LiNeU8gD3r5guJdi4QKx6vV6pgJ+8nlds/ixQr9q4FxycGeMzN1aaBP4WYskU3nAPS82JV4cXbXb/hi2MO561wqVZVzjZ4LvJaRgfncuWPim5H9c+e1g1fe1FAtUOtabdTt2nKZY0gste182LkybijI9++3s5oyTVHFKN2l/tbfjAm8auV43I27cF7R1vbGZ+D/bWNf/Ap+ciJI=
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_removeCategoryAttributeSchema
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-category-attribute-schema.ParamsDetails.json b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.ParamsDetails.json
new file mode 100644
index 0000000000..03597ce12f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"categoryId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-category-attribute-schema.RequestSchema.json b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.RequestSchema.json
new file mode 100644
index 0000000000..4b41380b26
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attributeDefinitionId":{"type":"string"},"requirement":{"type":"string","enum":["REQUIRED","RECOMMENDED","OPTIONAL","FORBIDDEN"]},"conditionOnAttributeDefinitionId":{"type":"string","description":"Deel 11 §32: this rule only applies when the product's value for this OTHER attribute equals conditionOnValue."},"conditionOnValue":{"type":"object","description":"Required together with conditionOnAttributeDefinitionId."}},"required":["attributeDefinitionId","requirement"],"title":"SetCategoryAttributeSchemaDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-category-attribute-schema.StatusCodes.json b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-category-attribute-schema.api.mdx b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.api.mdx
new file mode 100644
index 0000000000..c3deaddc60
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-category-attribute-schema.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-set-category-attribute-schema
+title: "ClassificationController_setCategoryAttributeSchema"
+description: "ClassificationController_setCategoryAttributeSchema"
+sidebar_label: "ClassificationController_setCategoryAttributeSchema"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1y2zYQgF9lB5c6M9SfrbYJb4qkTNWpI1VW3IPGk4HIlYSUBGhgKVvV8HnyHnmyzoLUn+XESadHnUSBwGJ/vl0QuxEmQytJGT2IRSi6iXROzVXkh7pGkzVJgvajQ+pKwoWx6w6RVbOc8CZaYipFIDJpZYqE1olwuhFapihCEVXzB7EIhMX7XFmMRUg2x0AoLUKRSVqKQLhSTrgRtM54pSOr9EIUxV25EB29NfGaZzyVExlNqIlfySxLKsUbn5zRPHYi2sw+YUSss2XLSaHza7c29XCutNr640SjnSFptenx+0CgzlMRTsW4/+eHwbjfE4EY97vD6+v++57/NxxNBsP3nT9EIN4Nx28HvV7/vbgrvCWx33ioO9+nTSBidJFVGU8QoeghJtBqwZfPV5ch0FI5sHmCYHSyBu8ddPCwRA20RMisifOIfnKwkkmOMDe2XDOc/NYfw84jgPe5TBwc6HfLC+riWGk/+Jynj5UcVwEEMgukJVp4ULSEl6yvi6I4pGj6lZAdB+guEKQoYXVuvgpwj4woilK8y4x2JRKXzRb/HGvPNrebzdMXtzJRsWcP5lIlGAfg/YlQAQwrZRJJ6EDCLHdKoyvDUxf/G8VorbEvT4tMjM+y+yjTzDvrbaf3kQnu30xOAnhDcpYgpDJaKo01izL2A35zYNmejBSdk4sX9jnxmqfQaGTnpcYizBUmsatvMw8dPZ8Je5lxq305a8dR7XLevKy1X//SrM1+vnpTezNvzy9/nbdbzdnrE6O6xlosw+NzoDTGk+nQrtDWnIoRErNwpyR6f+4tPtT0AMA+i+whSZWUxB0LKWP3dP64InLPaPs5LK+Vc0ovAkhlMjc2rfDDx8ynWmQxRk1KJu5M25m2H6Lt6pS2Tk5LxokP+DiAWU6QlgDuCp7HLkPrx42GC2NBkQOLzuQ2QnCRyTCATm9ca15evTpjecbyh7Bsn2I52R+2GO9Jiw060IYAH5UjXxdVObBSTnHQyHhuI8lfumcSzyT+EIlvvkkif9jOExWRK9X3EHKldCQJ4QLrizpIiPMSM4Rcq/scy2/yc1k8w/j9MBaBILlwftejazyvdBjlVtHaX9BnKC1aEU7v+Ib9xNr/1AFIkZaGGwiZcR4qvtmHoiEz1Vi1GlUrQKFrbPZtgaKxu8PV3FZS6VK24kBrv08J6Fb3inz2RjUUVA/vjE0liVD8/teEWTEuUx+hMxrA37gWwRaPJVHmPc2ZNN53GfpbWr7aFdiTddQMOLzzv3yZ3wt55g7Naik9N57mKubDm9EARokk/sBnc05A9TMuhhlquCGpY2ljGJW3fBj4C8A2rK8g4gTKKml1uL4dlZ9k/NHGi7g4QNdoR4pyn4RfPrevwkoOrQMY2oXU6h8vzwXAH4VBtR1a6JoYXQBepeq5UsUFcCutkpqfujswAtg5isePKAygZ6Kcvew3ihVxYWRMSsOb9Va9WZVKGVHlQEYxlb5IVh2pY6mwhxsc0laX9V4R2PF95OhdhSF8pEaWSKW5BuU24Xcl+lMhM8VKtlivnZUiEOFRX+wkA+4CseQcCqdis5lJhx9sUhQ8fJ+jXZd5sWIHzhiL6UbEyvFzLMK5TByeKLs7QMTFtvnyCvZ5cGxENSg1Z8qqxFGIQHDqHLX0Cu5ZLVHGvpBsqgndcq/ahMXsBZwcXEWwXdGJIszom3PvDurLaOiPnVnVDkz9cSWsfOBslA+lssbb7suFH9uIROpF7o8cUcpkQGTOkdpF80kZ8VY9647NppwxMX+jLoqdd4j/s2OK4l//5WBt
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_setCategoryAttributeSchema
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-product-attribute-value.ParamsDetails.json b/docs/api-reference/reference/classification-controller-set-product-attribute-value.ParamsDetails.json
new file mode 100644
index 0000000000..91b3148849
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-product-attribute-value.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"productId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-product-attribute-value.RequestSchema.json b/docs/api-reference/reference/classification-controller-set-product-attribute-value.RequestSchema.json
new file mode 100644
index 0000000000..5d29326c91
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-product-attribute-value.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attributeDefinitionId":{"type":"string"},"value":{"type":"object","description":"Value shape depends on the attribute's dataType"},"source":{"type":"string","enum":["MANUFACTURER","SUPPLIER","IMPORT","USER","API","CALCULATED","INFERRED"]},"sourceOrganizationId":{"type":"string","description":"Which organization supplied this value (field-level federation, Deel 11 §75). Defaults to the caller's own organization."},"sourceReference":{"type":"string","description":"A document id/URL/system name to look up more detail — e.g. a certificate or ERP record."},"confidence":{"type":"number","description":"0..1"},"forceOverride":{"type":"boolean"}},"required":["attributeDefinitionId","value"],"title":"SetAttributeValueDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-product-attribute-value.StatusCodes.json b/docs/api-reference/reference/classification-controller-set-product-attribute-value.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-product-attribute-value.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-product-attribute-value.api.mdx b/docs/api-reference/reference/classification-controller-set-product-attribute-value.api.mdx
new file mode 100644
index 0000000000..1d9a03f73e
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-product-attribute-value.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-set-product-attribute-value
+title: "ClassificationController_setProductAttributeValue"
+description: "ClassificationController_setProductAttributeValue"
+sidebar_label: "ClassificationController_setProductAttributeValue"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4EttYPVnK02iN0VSABV2rOrHeRCMgFrOSkx2yQ3Jla0KC/QQvUPukaP0JMVwV/9O0hR91JNW/BnODL8ZkrNmOkXDndSqL1iLdWJurYxk6Js6Wjmj4xjNB4tuYLTIQtd2zshZ5vCexxmygKXc8AQdGsta0zVTPEHWYmkxui9YwAx+zqRBwVrOZBgwqWgAdwsWMBsuMOGstWZuldJE64xUc5bnD8VEtO6NFisacSwn1MqhctTF0zQuta59tFpR24loPfuIoSOVDZntJFo/d2NRFyOp5MYZJxoFbOlNfkagQBsamdJU1mLeM2AXPEUQmKISFrQCt0DYrvWLBcEdH5OgPGBWZybE00UDhipLWGvKbtvvJm/bnfFk2BuygI0mg8FN33/2bwd3wzEL2GTk/7cHfRawTvumM7lpj3tdGvLubW847HXZw3atOzPnSv7Bv2XusVHvFzJcgN6bBTYjr6MAt5AWvHPgIpIYi0qMS4whQlHSFUAXMYZGA75+efnisgpdjHgWOwtOe8eEnDj7xYJ+VAerVHfuGWKEBtXzfjrUtg1Ch1mCyoEUtcnwpmZX1mEChCetGWv9CbIUEm1okxyXMfz951+A1XkVOISEh48DBG2gNxyAwVAb4dUJtYqkONJEZckMzYkm9Wq1QXMiTU5fojFS7E+baR0jVyzP9wNl+g0qNww+BMxJF5OAER7FZNdplueFPJtqZQvMr+oN+jnUjjRr1uunHfc8lqLY5ojLGEVAfqCdKoMSllLH3KEFDrPMSoXWgslirLL/LTLRGG1+PCzU4vnQeeJJ6n30pt39MOz9PumNxicbNHJ8FiMkPFxIhRWDXPgGvziQbL/nCVrL5z9Y58RrEGkDWnmIPGo+PKyXWDry+eDbyRSN5tWsKcLKVVS/qjRf/VqvzF5cv668jprR1cuo2ajPXp0Y1dHGYLE9PjgLYx6lW4BFs0RTsVIgxHpOuhyh5/25s3hf0z3ueiSy6yOnIO5QSLF3x+OHJZE7RpvPYXkrrZVqHkDC40ibpMQPn1ISD6FBgcpJHtszbWfafoq261Pa2plbEE6U7UUAs8xBUgC4TXgeuxSNb9cKLrQB6SwYLI4msKFOMYB2d1ipX11fnrE8Y/lTWDZPsRzvDlsUO9KERgtKO8AnaZ3Pi7JoWEoradMOrlRnEs8k/hSJr79LItDdN5ahs4X6HkLKlNbRXfmivD+LrMAMIVPyc4bF6+CcFs8w/nsY84A5Prd+1YO6BM20GGZGupWvOcyQGzSsNX2gqsGRtf+hpJGgW2iqh6TaeqSoVtFiNZ7K2rJRK2sbtrbeVjny2va9VvGoW6pteG+SAXsKj4jvgs2N2iX0/jVYNAXlx1ttEu5Yi/32fkyYaJvKD9Ae9OETrliwIWPhXOqdTEE03BVNehtQvlnk2EG1qW3sFSOOaw7PFw52Ik5e6buu/Rdz/eQxTOWcnOpCkfa8l1TcjQZ9GMTc0RMAirLG4eb6ERd3KSoYOa4ENwLKTYW+fyJsNv4SQgqxtJRWhdv7QXFpo2sdTaL0AR2trJMu82H69UvzulXKcasA9i23AdC1MSiXQwMdLdAG4FUqv0tVbAD33Eiu6KvDHc61kdS/BY/aDzgNoFvWL/xCQjpKnUTTpqrQqNbLZMpDSqa0/YRrwn0aLctwh1Jhhz9YdFtXbfWATQQcuHmbgRw+uVoac6koR2Umpr4iOKaMp5JUbBQp2NvNAtbaLwSexMhDwBYUYq0pW69n3OLExHlOzZ8zNKsicpbkuxkRMV0zIS19C9aKeGzxRNPt6cIuhmXGuYRdpBxaUDZytdoFAGMBo+DaL2HmVDZbIBc+yazL/k6xVMXX8HbzTw61PNjMaIchpu67Yx/2ss/gzh9Js7L8mfijjBn+SGmXPxa6am+6zye+bc1iruaZP45YIZPQ4Bnt0q7qdJhnvFXPemO9LkaM9SdUeb51jqP/5Jg8/wfWPauU
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_setProductAttributeValue
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-variant-attribute-value.ParamsDetails.json b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.ParamsDetails.json
new file mode 100644
index 0000000000..9f7ebe14e2
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"variantId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-variant-attribute-value.RequestSchema.json b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.RequestSchema.json
new file mode 100644
index 0000000000..5d29326c91
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attributeDefinitionId":{"type":"string"},"value":{"type":"object","description":"Value shape depends on the attribute's dataType"},"source":{"type":"string","enum":["MANUFACTURER","SUPPLIER","IMPORT","USER","API","CALCULATED","INFERRED"]},"sourceOrganizationId":{"type":"string","description":"Which organization supplied this value (field-level federation, Deel 11 §75). Defaults to the caller's own organization."},"sourceReference":{"type":"string","description":"A document id/URL/system name to look up more detail — e.g. a certificate or ERP record."},"confidence":{"type":"number","description":"0..1"},"forceOverride":{"type":"boolean"}},"required":["attributeDefinitionId","value"],"title":"SetAttributeValueDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-variant-attribute-value.StatusCodes.json b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-set-variant-attribute-value.api.mdx b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.api.mdx
new file mode 100644
index 0000000000..d04ee4b034
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-set-variant-attribute-value.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-set-variant-attribute-value
+title: "ClassificationController_setVariantAttributeValue"
+description: "ClassificationController_setVariantAttributeValue"
+sidebar_label: "ClassificationController_setVariantAttributeValue"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4EttYPVnK02iN0VSABd2rOrHeTCMgFrOSkx2yQ3Jla0KC/QQvUPukaP0JMVwV1r9OElT9FFPWvFnODP8ZkjOmukUDXdSqyvBOqwXc2tlJEPf1NPKGR3HaD5YdHfcSK5c1zkjZ5nDOx5nyAKWcsMTdGgs69yvmeIJsg5bFqOvBAuYwc+ZNChYx5kMAyYV67CUuwULmA0XmHDWWTO3SmmidUaqOcvzh2IiWvdGixWNOJQTauVQOeriaRqXWjc+Wq2o7Ui0nn3E0JHKhsx2Eq2fu7Goj5FUcuOMI40CtvQmPyNQoA2NTGkq6zDvGbALniIITFEJC1qBWyBs1/rFguCOT0hQHjCrMxPi8aIBQ5UlrHPPbrrvpm+7vcl0NBixgI2nw+H1lf+8uhnejiYsYNOx/98dXrGA9brXvel1dzLo05B3bwej0aDPHrZr3Zo5V/IP/i1zD416v5DhAvTOLLAZeR0FuIW04J0DZ5HEWNRiXGIMEYqSrgD6iDG0WvD1y8sX53XoY8Sz2Flw2jsm5MTZLxb0o9pbpV65Z4QRGlTP+2lf2y4IHWYJKgdSNKaj64ZdWYcJEJ60Zqz1J8hSSLShTXJcxvD3n38B1ud14BASHj4OELSBwWgIBkNthFcn1CqS4kATlSUzNEeaNOv1Fs2JNDl9icZIsTttpnWMXLE83w2U+29QuWHwIWBOupgEjPEgJvtOszwv5NlUK1tgftFs0c++dqRZu9k87rjjsRTFNkdcxigC8gPtVBmUsJQ65g4tcJhlViq0FkwWY539b5GJxmjz42GhFs+HzhNPUu+jN93+h9Hg9+lgPDnaoLHjsxgh4eFCKqwZ5MI3+MWBZPs9T9BaPv/BOkdeg0gb0MpD5FHz4WG9xNKRzwdfJVO02heztghrF1HzotZ+9WuzNntx+br2OmpHFy+jdqs5e3VkVE8bg8X2+OAsjHmUbgEWzRJNzUqBEOs56XKAnvdnZfGupjvcDUhk30dOQdy+kGLvDsePSiIrRtvPYXkjrZVqHkDC40ibpMQPn1ISD6FBgcpJHtsTbSfafoq2y2PauplbEE6U7UUAs8xBUgC4TXgeuxSNb9cKzrQB6SwYLI4msKFOMYBuf1RrXlyen7A8YflTWLaPsZxUhy2KijSh0YLSDvBJWufzoiwaltJK2rS9K9WJxBOJP0Xi6++SCHT3jWXobKG+h5AypXV0Vz4r788iKzBDyJT8nGHxOjilxROM/x7GPGCOz61fda8uQTMthpmRbuVrDjPkBg3r3D9Q1eDA2v9Q0kjQLTTVQ1JtPVJUq+iwBk9lY9lqlLUN21hvqxx5Y/teq3nULdU2vDfJgB2Fx8R3weZG7RJ6/xosmoLy4602CXesw357PyFMtE3lB+gOr+ATrliwIWPhXOqdTEE0qoomgw0o3yxyVFBtahs7xYjDmsPzhYNKxNErverafTE3jx7DVM7JqS4Uac97ScXteHgFw5g7egJAUdbY31w/4uw2RQVjx5XgRsDQaJGFDq78E2Gz8ecQUoilpbQ63NwNi0sbXetoEqUP6GllnXSZD9OvX9qXnVKOWwWwa7kNgK6NQbkcGuhpgTYAr1L5XapiAyhJswH0uMO5NpL6t+BR+x6nAfTL+oVfSEhHqZNo2lQVWvVmmUx5SMmUtp9wTbhPo2UZbl8qVPiDRbfRqtIDNhGw5+ZtBnL45BppzKWiHJWZmPqK4LhnPJWkYsuzVFjLAtbZLQQexchDwBYUYp17tl7PuMWpifOcmj9naFZF5HgJMyLifs2EtPQtWCfiscUjTbenCzsblRnnHKpI2begbORqVQUAYwGj4NotYeZUNlsgFz7JrMv+XrFUzdfwqvlHh1oebGZ0wxBT992xDzvZZ3jrj6RZWf5M/FHGDH+ktMsfC121N93nE9+2ZjFX88wfR6yQSWjwjHapqjrt5xlv1bPeWK+LERP9CVWeb53j6D85Js//Abd9qyg=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_setVariantAttributeValue
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-verify-attribute-value.ParamsDetails.json b/docs/api-reference/reference/classification-controller-verify-attribute-value.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-verify-attribute-value.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-verify-attribute-value.RequestSchema.json b/docs/api-reference/reference/classification-controller-verify-attribute-value.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-verify-attribute-value.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-verify-attribute-value.StatusCodes.json b/docs/api-reference/reference/classification-controller-verify-attribute-value.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-verify-attribute-value.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/classification-controller-verify-attribute-value.api.mdx b/docs/api-reference/reference/classification-controller-verify-attribute-value.api.mdx
new file mode 100644
index 0000000000..2608d946ba
--- /dev/null
+++ b/docs/api-reference/reference/classification-controller-verify-attribute-value.api.mdx
@@ -0,0 +1,69 @@
+---
+id: classification-controller-verify-attribute-value
+title: "ClassificationController_verifyAttributeValue"
+description: "ClassificationController_verifyAttributeValue"
+sidebar_label: "ClassificationController_verifyAttributeValue"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2SzByMIaHFkc1ciFXLkJhX0PH2PPtliKMVO4sVuc/fJ9JAc/jn8ccxxLVyJXpFx9kKLRMxyFYLJTBpNM2fJuzxHf79Bb7KnKZE3y4rwVuUVCilK5VWBhD6IZFELqwoUiTBaSOHxoTIetUjIVyiFsSIRpaK1kCKkayyUSGpBTyXPCOSNXYmmueOJoXQ2YOD+8XDEHxpD6k3JokQiRCPFZDjc77hVudFROmTK5KglOA+0RmA1GAg2xuWKMICCZRWMxRDAVzn2hRSps4SW2K0qy7wLwuBLYN/1vmi3/IIpcRQ8R5FMKxm9d/7nw1KncT8CUuCjKsqcTb9Pz+6vzv/6dH59I+SbnV6TWuYIhUrXxmLPo9LREBcH9t3nKBUYglr9ZJ29qEHmPDiLHLzCeYTMYK5D9NgFkmn5kU89moyXE532xtlw3Jt8+HXYW/5ycto7zSbZ+LdsMhouP+xtaua8x/Z4aG1Ct5m/Da0hoN+g7wWjEXK3Yi3NS8YWbTx3O36p9E4KMhR1nbPLMyRl8jNye07as3s7/qojsp3RRPq+g+VHE4KxKwmFyjPniw4/fCzZPaQeNVoyKg8H2g60vYu2k33aphWtGadUEYO2rAiKFsBtwovYleij3Vk4ch4MBfAYXOVThJC6EiVMz656w/HJ8QHLA5bvwnKyj+XN7scW9Y407TCAdQT4aALFvGhaw8YEw4dGLnKbKn5vHEg8kPguEk9/SCKkzma5SSm08iOEnCkDKUI4wv6qDwp01WKGUFnzUCFs+Jl7SIsHGP8/jI0UpFYhrvqqmOKZAdPKG3qKxdISlUcvksUdVz1vdvvOOqxAWjsu4EoXIk5cZyVioEoz2IwG6nl8LxIdBrXRzaD1xeVYDCBrfqHxmpFucXxW2nHOe+9Msmv84XyhSCTiz883TIYLpbmH6fwCviKv0MGwJipjXI3NXISkC+Xl9fwC5rkifjfzvL3zjyOOLku0cE3KauU1zL3TVUpwEd/Vz9E6hpS5LDtvffh4O29fOvwW4kl852DmbCBDVWT7v38nJ0nnh54kXPqVsuaf6C9I4LeW7JZDDzOnMUiIkrp2JyVIuFXeKMutmSJcOW+4f3tibH91uBLOXFoVGKdMK22I8w2fR7vxYX/UH3YZSKWcgTiAfM6FirmnK7pfe4UdM9Ce804CPFPzKsLbG0v4SIMyV8byna58zn0tUAuhSsPqRkKKt1AJKZJY+Xdc3UmxZhqThajrpQr4yedNw+aHCv1TS9uGo7VkBha10CZwW4skU3nAPYHbJCyOrrqLeQw7ul4L74zKMn9RIf9zIAUDGf+iaO4aKdaodLyEddcxTVMs6cWUvXTPt3V73+aXMQGrisOzDeGb2xHdf1dPXbcjbtxXtE2zlUf8nRU2zTesbw5l
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ClassificationController_verifyAttributeValue
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-accept.ParamsDetails.json b/docs/api-reference/reference/connections-controller-accept.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-accept.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-accept.RequestSchema.json b/docs/api-reference/reference/connections-controller-accept.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-accept.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-accept.StatusCodes.json b/docs/api-reference/reference/connections-controller-accept.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-accept.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-accept.api.mdx b/docs/api-reference/reference/connections-controller-accept.api.mdx
new file mode 100644
index 0000000000..7d0d0d04a5
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-accept.api.mdx
@@ -0,0 +1,69 @@
+---
+id: connections-controller-accept
+title: "ConnectionsController_accept"
+description: "ConnectionsController_accept"
+sidebar_label: "ConnectionsController_accept"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEEtDiyuCuRWnLkJhX0PH2PPlkxlOJk40W2uftkitQM/5z5cUyqEa5Cr8g4e6FFIhbOWkz5MSycJe+KAv29SlOsSEhRKa9KJPRBJKtGWFWiSITRQgqPX2vjUYuEfI1SGCsSUSnKhRQhzbFUImkEPVZsEcgbuxFte8eGoXI2YODx6XjCPxpD6k3FOkQiRCvFbDzeH7hVhdFRPGTKFKglOA+UI7AaDARb4wpFGEDBug7GYgjg6wKHQorUWUJL7FZVVWHS6Gn0ObDvZl+0W3/GNEbBc9DIdJLRe+d//FrqNO5HQAp8UGVVcNev87P7q/M/Pp1f3wj5aqXXpNYFQqnS3FgceFQ6dsTJgX0POUolhqA2P5hnL2qQOQ/OIgevdB4hM1joED32gWQ43vKpJ7PpeqbTwTQbTwezDz+PB+ufTk4Hp9ksm/6SzSbj9Ye9RS2c99ilh3IT+sX8ZSiHgH6LfhCMRijchrW0LxlbdfF8XvFLpXdSkKGo65xdniEpU5yR23PS5e71+1c9kZ1FG+n7DpYfTQjGbiSUqsicL3v88KFi95B61GjJqCIcaDvQ9i7aTvZpm9eUM06pIgZtXROUHYC7ghexq9DHfmfhyHkwFMBjcLVPEULqKpQwP7sajKcnxwcsD1i+C8vZPpY3z3+2qJ9J0w4DWEeADyZQrIum69iaYDhp5CK3qeITxoHEA4nvIvH0TRIhdTYrTEqhkx8h5EoZSBHCEQ43Q1Cg6w4zhNqarzXCVhU1HsriAcb/D2MrBalN6Gbd3Z3YLGBae0OP8aa0RuXRi2R1x1ee10t9885VIuWO72aVC90djHKRiJGqzGg7Gb2YddQY3Y52hl2cWNoLNddMbkfdk6YeZ15i3yX7xm/Ol4pEIn7/84YBcKEy9zBfXsAXfBTyKec5URXDZ2zmIgt9xC6vlxewLBTx8Zjt9tIc3zi6rNDCNSmrldew9E7XKcFFPD5n/d47hpTxq3pvQ/h4u+wONHzkYSPeWrBwNpChOiL87z+zk6T3Q48SLv1GWfN39Bck8JFK9tOhh4XTGCRESX27lxIk3CpvlOXWQhFunDc8PifyZl0TtxeFCmEnV8KZS+sSo8m81oa4rHA+uoWPh5PhuC80KuVCwwHkFJcqlpj+bv0CDnimA3ZJ/iacu11I+ECjqlDG8j6tfcFjHTgroSrDUibd7DtkpUjiRb53fSdFzsAlK9E0axXwky/alru/1ugfO6q2HJU153rVCG0Ct7VIMlUE3NO2q6ni6KrfZ8fwTNG3mvtOZZmzWJf5Q4AUDF784tDetVLkqHTcVk0/MH+Ky5PJXvXm/bfbUsvLWE9VzZHZRe/VLojuv6unabo3btwXtG27k0f8zArb9j9wcfPK
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ConnectionsController_accept
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-list.ParamsDetails.json b/docs/api-reference/reference/connections-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-list.RequestSchema.json b/docs/api-reference/reference/connections-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-list.StatusCodes.json b/docs/api-reference/reference/connections-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-list.api.mdx b/docs/api-reference/reference/connections-controller-list.api.mdx
new file mode 100644
index 0000000000..5b4b99fe0b
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: connections-controller-list
+title: "ConnectionsController_list"
+description: "ConnectionsController_list"
+sidebar_label: "ConnectionsController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWkB3bcduNbq6TFimwSBpn00MQBBQ1srhLkQo58sY19Dx9jz5ZMZTiuHGRbe4+maLI/3z9NCY3wtXoJWlnL3KRirmzFhU/hrmz5J0x6B+MDiQSUUsvKyT0QaR394nwGGpnAwaRbsRkNOKfHIPyumYFkQrRJmL6Xy9updF5NAuF1AbzBJwHKhE8PjYYCFbaGUkYQELWBG0xBPCNwaFIhHKW0BLLyro2WkWl4y+BtTciqBIrySNa1yhS4bIvqGIEnsMl3bmM3jv//WXK5bizKpDXdikSgU+yqg1P/Tw7e7g+//3z+eJGJK8iXZDMDEIlVaktDjzKPE5E48DaQ85ShSHI5Xfs7GUNCufBWeTkVc4jFBpNHqJin0gu61ua+Xg6yaa5GkyK0WQw/fjjaJD9cHI6OC2mxeSnYjoeZR/3gpo777ErD5U69MF801RCQL9CPwg6RzBuyb70zmiPuUjvuny+RLzr6X0iSFP065wlz5CkNmfk9kS62r1ef90T2e1oI33jffo+6RC0XSZQSVM4X/X44VPN8qA85mhJSxMOtB1oexdtJ/u0zRoqGScliUHLGoKqA3Db8CJ2Nfo47ywcOQ+aAngMrvEKIShXYwKzs+vBaHLy4YDlAct3YTndx/Lm5c8W8xfScocBrCPAJx0o9kXdTax00Fw0cpFbJflscCDxQOK7SDx9k0RQzhZGKwqd+xFC7pSBJCEc4XA5BAl502GG0Fj92CCspGnw0BYPMP5/GNtEkFyGzur21sPbAqrGa1qL9G4jMpQePV942vv9UN+4LVVIpeM71RK7yxOVIhXHstbHq/Hxrkm2yInpr1XP5heMaofZsxM9vxxTP5X0g1+crySJVPz2xw1X3IVaP8Ds6gK+4lokz0UuieqYL20LF4vfp+hycXUBV0YSn4d5315d44qjyxotLEjaXPocrrzLG0VwEc/LRf+xfQDFvNW92hA+3V51Jxg+4/Am/pZg7mwgTU1k9u+/pidpr0PrBC79Ulr9Z9QLCfAZKunNoYe5yzEkEF3qx70rIYFb6bW0PJpLwqXzmt/PiLzOGuLx3MgQtu4mcOZUU2HcMmtyTdxHuB5d4KPheDjqO4tU3Fk4gbULVMnYU6yMFdmhAV5wgB6HfyVz+9ERPtFxbaS2/Fk23vC7DpU7IWvNjow727uEli4Qr9hsMhnwszdty9OPDfp1B9GKk5Bxae/u20SUKPNI8UYwD6mYKYU1+xU7p0j3myXjvmX413PuXrJhx7bOv0IwqvevpF3vaG823Yob9xVt24qkd4L4WbT3bdv+A8M7rBc=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ConnectionsController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-reject.ParamsDetails.json b/docs/api-reference/reference/connections-controller-reject.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-reject.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-reject.RequestSchema.json b/docs/api-reference/reference/connections-controller-reject.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-reject.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-reject.StatusCodes.json b/docs/api-reference/reference/connections-controller-reject.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-reject.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-reject.api.mdx b/docs/api-reference/reference/connections-controller-reject.api.mdx
new file mode 100644
index 0000000000..bc4b2a4cc1
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-reject.api.mdx
@@ -0,0 +1,69 @@
+---
+id: connections-controller-reject
+title: "ConnectionsController_reject"
+description: "ConnectionsController_reject"
+sidebar_label: "ConnectionsController_reject"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2SzByMIaHFkcVciFXLkJjX0PH2PPtliKMXxxotsc/fJFKkZ/jnz45jURrgKvSLj7IUWiZg5azHlxzBzlrwrCvT3Hr9gSkKKSnlVIqEPIllshFUlikQYLaTw+FAbj1ok5GuUwliRiEpRLqQIaY6lEslG0FPFFoG8sSvRNHdsGCpnAwYeHw9H/KMxpN5UrEMkQjRSTIbD/YFbVRgdxUOmTIFagvNAOQKrwUCwNq5QhAEULOtgLIYAvi6wL6RInSW0xG5VVRUmjZ4GXwL73uyLdsvnKHgOGplWMnrv/M9fS53G/QhIgY+qrAru+n16dn91/ten8+sbIV+t9JrUskAoVZobiz2PSseOODmw7z5HqcQQ1Oon8+xFDTLnwVnk4JXOI2QGCx2ixy6QDMdbPvVoMl5OdNobZ8Nxb/Lh12Fv+cvJae80m2Tj37LJaLj8sLeomfMe2/RQbkK3mL8N5RDQr9H3gtEIhVuxlmaXsUUbz5cV7yq9k4IMRV3n7PIMSZnijNyekzZ3r9+/6ohsLZpI3w+w/GhCMHYloVRF5nzZ4YePFbuH1KNGS0YV4UDbgbZ30XayT9u0ppxxShUxaMuaoGwB3Ba8iF2FPvY7C0fOg6EAHoOrfYoQUlehhOnZVW84Pjk+YHnA8l1YTvaxvHn5s0X9Qpp2GMA6Anw0gWJdNG3H2gTDSSMXuU0VnzAOJB5IfBeJp2+SCKmzWWFSCq38CCFXykCKEI6wv+qDAl23mCHU1jzUCGtV1HgoiwcY/z+MjRSkVqGddXt3YrOAae0NPcWb0hKVRy+SxR1feV4v9c07V4mUO76bVS60dzDKRSIGqjKD9WiwM+tgY3Qz2Bq2cWJpO2qumdyWumdNHc68xK5Ldo0/nC8ViUT8+fmGAXChMvcwnV/AV3wS8jnnOVEVw2ds5iILXcQur+cXMC8U8fGY7fbSHN84uqzQwjUpq5XXMPdO1ynBRTw+Z93eO4aU8as6b334eDtvDzR85GEjXjbMnA1kqI4I//fv5CTp/NCThEu/Utb8E/0FCXykkt106GHmNAYJUVLX7qQECbfKG2W5NVOEK+cNj0+JvFnWxO1ZoULYypVw5tK6xGgyrbUhLiucj3bhw/6oP+wKjUq50HAAOcWliiWmu1vvwAEvdMA2yd+Fc7sLCR9pUBXKWN6ntS94rAVnIVRlWMqonX2LrBRJd5GPru+kyBm4ZCE2m6UK+MkXTcPdDzX6p5aqNUdlyblebIQ2gdtaJJkqAu5p29ZUcXTV7bNjeKHoe81dp7LMWazL/CFACgYvfnFo7hopclQ6bqtNNzBNU6xox2SvevP+226p+WWsp6rmyGyj92oXRPc/1LPZtG/cuK9om2Yrj/iZFTbNN9cP9As=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ConnectionsController_reject
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-request.ParamsDetails.json b/docs/api-reference/reference/connections-controller-request.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-request.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-request.RequestSchema.json b/docs/api-reference/reference/connections-controller-request.RequestSchema.json
new file mode 100644
index 0000000000..50b7af11ff
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-request.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targetOrganizationId":{"type":"string","description":"Organization ID to connect with"},"type":{"type":"string","enum":["BUSINESS","DATA","API","SUPPLY","DISTRIBUTION","SERVICE","ORDERING","INTEGRATION"]},"capabilities":{"example":["product.read","inventory.read","order.create"],"description":"Capabilities requested (Deel 15 §10). Each side authorizes independently.","type":"array","items":{"type":"string"}}},"required":["targetOrganizationId","type"],"title":"RequestConnectionDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-request.StatusCodes.json b/docs/api-reference/reference/connections-controller-request.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-request.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-request.api.mdx b/docs/api-reference/reference/connections-controller-request.api.mdx
new file mode 100644
index 0000000000..b4ab051333
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-request.api.mdx
@@ -0,0 +1,69 @@
+---
+id: connections-controller-request
+title: "ConnectionsController_request"
+description: "ConnectionsController_request"
+sidebar_label: "ConnectionsController_request"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9vGjkQwL/KyE+pZAgk9K7ljQBXcbomHJCcTlFUmd2Bdbtrb+1ZGor28/R79JOdxrsEEnLtRbpHnti1vfP358HjjbA5OkXamlEsuqJvjcGIX33fGnI2TdF9cPi5QE9Cilw5lSGh86J7eydFPXNh47XobsKrdhiLLrkCpYisITTEUyrPUx0FTacfvTU85qMEM8VPtM5RdIWdf8Qo6HFsF2n0YVa5JdKVWyqjvz4Y+/CVJ6fNUkgRo4+cznmB6Ir99TAaAFmIKvfgi6ZElLIWcCgITZGJ7q24uJ6OLofTqZBi0Jv1hBS98UhIMb0ej//4m0dH09lkdHE9G11d8vhwcjPqD4UUV5PBcDK6fCekGF3Ohu8mvbDkrpQiUrma61RvvcN7leUpsr7c2biIqOlQxUIKbVZoyLr1dsC6GF0zcqgIxd1Th/t7gqHODMZwMkBMof0avn9rt141YaiiBLyOEVRBiXX6K3rQJsYcTYyG0nVTbEMjlHNqzaYQZv4wVGVZyr2s3z6fqlranRSkiT0Vk8q6HW4DsiwsSPO5Nb6KzVmrzT+P/eTMdVqtw4kbleq4yvdC6RRjCdYBJbiNBqy0TRWhBwXzwmuD3oMrUmSP/ydY0Tnrfr4ssvHz6G1pEBe9wYfJ8M/r4XR2wPaU1DxFyFSUaIMNxiMMBOXAspscpQy9V8uf6DmIGiysA2uQg5dZh7DQmMY+SKwD+fz+28mM252zeSeOGmeL1lmj8+aXVmP++vxt4+2iszj7ddFpt+ZvDpzqW+ewSg8l2tfO8F4Fj26FrhGoTe2SbXkCXojnzuN9S/e4G7LIAZLSaUXcYyFV7p6un9RE7hjtPIfle+29NksJmUoX1mU1fnifs3iIHPLu0ir1R9qOtL2ItvND2noFJYxTpIhBmxcEWQXgQ8EL2OXowrg1cGIdaOK/Bm8LFyH4yOYooTeYNFpn56+OWB6xfBGWnUMsZ7s/W4x3pMUWPRhLgPfaU6iLuhpYaa85aWQDt5HiE+eRxCOJLyLx7Q9J5HP/ItUR+cr8ACFXSk+KEE6wuWyCgrioMEMojP5cIKxUWuCxLB5h/O8wclOplr7S+tBL82ceo8JpWovu7UbMUTl03EOXh23cT3rwDCmx3Kzntu7JKRFdcapyfbpqn+6rZa0cnLpb35owZVwr1LaG1AyzX/WQrB9+sy5TJLri979mnHXrc/0BeuMRfML1rlFMiPIQM94Tk921wHCb939r43eI1JL2mu7HrfJL++OSVyxsUF3n7Go6HsE4VcQHdKia+Se3Brzi5CpHA1NSJlYuhnGlFkbhAL+od/8riHgD5LW0Jry/GVdHKj508Ue8uaFvjSdNRdhE3791zru1HFpL2A+Gl8CHOlmrQwd9G6OXEEyqn2tTvIQb5bQy/NRXhEvrNM/3iJyeF8TP/VR5/2CuhIGNigzDJ70i1sSFjeGoHG81281WXepUxKWOs8mMZSoUOaMCHnt4wo5P2PH5KJ4PhYDwnk7zVGnDpaJwKc9V6N4KlWu2pV2p3981CTPevRWbzVx5vHZpWfLw5wLduoJ6xXGYh/sTzniCKg47ayOYz2Avl+7GjO3g5WkRLjaelvFSbr/oRRHm9MO1d3vbcHwVivC8vgPLQvEWTn3hQqO+8IWFFDavXOJLMh7biFSZZREKsKhkcrj5RmYvaE+2YvBqezFj1nsWbjbVipn9hKYshaxdIX4X5V1Zlv8AIH7V9Q==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ConnectionsController_request
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-suspend.ParamsDetails.json b/docs/api-reference/reference/connections-controller-suspend.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-suspend.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-suspend.RequestSchema.json b/docs/api-reference/reference/connections-controller-suspend.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-suspend.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-suspend.StatusCodes.json b/docs/api-reference/reference/connections-controller-suspend.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-suspend.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-suspend.api.mdx b/docs/api-reference/reference/connections-controller-suspend.api.mdx
new file mode 100644
index 0000000000..400d0cbceb
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-suspend.api.mdx
@@ -0,0 +1,69 @@
+---
+id: connections-controller-suspend
+title: "ConnectionsController_suspend"
+description: "ConnectionsController_suspend"
+sidebar_label: "ConnectionsController_suspend"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEEtDiyuSuRWnLkJhX0PH2PPlkxlGJ740W2uftkitQM/xz+ZkyqFq5Er8g4e6VFImbOWkz5McycJe/yHP1jqEKJVgspSuVVgYQ+iGRRC6sKFIkwPOTxa2U8apGQr1AKY0UiSkVrIUVI11gokdSCnku2COSNXYmmeWDDUDobMPD4eDjiH40h9aZkISIRopFiMhweDtyr3OioHjJlctQSnAdaI7AaDAQb43JFGEDBsgrGYgjgqxz7QorUWUJL7FaVZW7S6GnwObDv+lC0W37GlDgKnqNGppWM3jv/49dSp/EwAlLgkyrKnLt+nV483lz+8eny9k7IVyu9JbXMEQqVro3FnkelY0ecHNh3n6NUYAhq9YN5DqIGmfPgLHLwCucRMoO5DtFjF0im4y2fejQZLyc67Y2z4bg3+fDzsLf86ey8d55NsvEv2WQ0XH44WNTMeY/t9tDahG4xfxlaQ0C/Qd8LRiPkbsVamn3GFm08dyveV/ogBRmKui7Z5QWSMvkFuQMn7d69fv+mI7K1aCJ938HyownB2JWEQuWZ80WHHz6V7B5SjxotGZWHI21H2t5F29khbdOK1oxTqohBW1YERQvgtuBF7Er0sd9ZOHEeDAXwGFzlU4SQuhIlTC9uesPx2ekRyyOW78Jycojl3e7PFvWONO0wgHUE+GQCxbpo2o6NCYY3jVzkNlV8xDiSeCTxXSSev0kipM5muUkptPIjhFwpAylCOMH+qg8KdNVihlBZ87VC2Ki8wmNZPML4/2FspCC1Cu2s28sTmwVMK2/oOd6Ulqg8epEsHvjK83qpb1+6CqS149tZ6UJkhy9ViRio0gw2o8HetIPa6Gaws2wjxeL29Nwyuy13L6o6oHmRXZfsGr85XygSifj9zztGwIXSPMJ0fgVf8FnIl11fE5UxgMZmLtLQxez6dn4F81wRH5DZ7mCj4xsn1yVauCVltfIa5t7pKiW4igforMu+U0gZwLLz1oeP9/P2SMOHHjbi5IKZs4EMVRHif/+ZnCWdH3qWcO1Xypq/o78ggQ9VspsOPcycxiAhSuranZQg4V55oyy3Zopw5bzh8SmRN8uKuD3LVQhbuRIuXFoVGE2mlTbEhYX3o134sD/qD7tSo1IuNRxA3uNCxSLT3a738IAdH7Db5W/iuU1EwicalLkyllO18jmPtegshCoNaxm102+plSKJd/kX3w9SrJm5ZCHqeqkCfvJ503D31wr9c8vVhuOy5N1e1EKbwG0tkkzlAQ/EbeuqOLnpcu0Udhx9K7rrVJZJi7WZPwZIwejFrw7NQyPFGpWOqVV3A9M0xZL2TA4qOOfgNqvm17GmqopDsw3fqzyI7r+rp67bN+7cF7RNs5VH/MwKm+Y/jsX2pA==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ConnectionsController_suspend
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-terminate.ParamsDetails.json b/docs/api-reference/reference/connections-controller-terminate.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-terminate.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-terminate.RequestSchema.json b/docs/api-reference/reference/connections-controller-terminate.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-terminate.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-terminate.StatusCodes.json b/docs/api-reference/reference/connections-controller-terminate.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-terminate.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/connections-controller-terminate.api.mdx b/docs/api-reference/reference/connections-controller-terminate.api.mdx
new file mode 100644
index 0000000000..a163940f55
--- /dev/null
+++ b/docs/api-reference/reference/connections-controller-terminate.api.mdx
@@ -0,0 +1,69 @@
+---
+id: connections-controller-terminate
+title: "ConnectionsController_terminate"
+description: "ConnectionsController_terminate"
+sidebar_label: "ConnectionsController_terminate"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEEtDiyuSuRCjlykwp6nr5Hn6wYSmt748WmuftkihSHf878ZkyqFq5Er8g4e6VFImbOWkz5McycJe/yHP0joS+MVYRCilJ5VSChDyJZ1MKqAkUijBZSeHyqjEctEvIVSmGsSESpaC2kCOkaCyWSWtBLyTMCeWNXomkeeGIonQ0YeHw8HPGPxpB6U7IUkQjRSDEZDg8H7lVudNQPmTI5agnOA60RWA0Ggo1xuSIMoGBZBWMxBPBVjn0hReosoSU2q8oyN2m0NPgc2HZ9KNotP2NK7AXPfiPTSkbvnX/7tdRpPPSAFPisijLnrl+nF483l398ury9E/LVTm9JLXOEQqVrY7HnUenYERcHtt1nLxUYglq9sc6B1yBzHpxFdl7hPEJmMNchWuwcyXz8yKYeTcbLiU5742w47k0+/DzsLX86O++dZ5Ns/Es2GQ2XHw42NXPeYxseWpvQbeYvQ2sI6Dfoe8FohNytWEuzz9ii9edux/tKH6QgQ1HXJZu8QFImvyB3YKSN3ev3bzoi2xlNpO87WH40IRi7klCoPHO+6PDD55LNQ+pRoyWj8nCk7Ujbu2g7O6RtWtGacUoVMWjLiqBoAdwWvIhdyeU6BPb3ifNgKIDH4CqfIoTUlShhenHTG47PTo9YHrF8F5aTQyzvdn+2qHekaYcBrCPAZxMo1kXTdmxMMBw0cpHbVPEh40jikcR3kXj+QxIhdTbLTUqhlR8h5EoZSBHCCfZXfVCgqxYzhMqapwpho/IKj2XxCOP/h7GRgtQqtKtur088LWBaeUMv8aa0ROXRi2TxwFee11t969pVIK0d39BKFyI9fK1KxECVZrAZDfYWHtRGN4P9ua23WOCeplvmt2Xvq7IOat5o1yW7xm/OF4pEIn7/844xcKE0jzCdX8EXfBHya+TXRGV0orGZi0R0fru+nV/BPFfEh2SedxDs+MbJdYkWbklZrbyGuXe6Sgmu4iE66zLwFFKGsOys9eHj/bw91vDBhydxgsHM2UCGqgjyv/9MzpLODr1IuPYrZc3f0V6QwAcr2S2HHmZOY5AQJXXtTkqQcK+8UZZbM0W4ct7w+JTIm2VF3J7lKoStXAkXLq0KjFOmlTbExYXj0W582B/1h125USmXG3YgR7lQsdB0N+w9RGDHCOzH+RuPbtOR8JkGZa6M5YStfM5jLT4LoUrDakatgC27UiTxRr+z/iDFmslLFqKulyrgJ583DXc/VehfWrY27JslR3xRC20Ct7VIMpUHPJC3ra/i5KbLuVPYsfSt7K5TWaYt1mj+KCAF4xe/PjQPjRRrVDqmWN0NTNMUS9qbclDJORe3uTW/jrVVVeycrQNf5UI0/109dd2+cee+oG2arTziZ1bYNP8B5n76hw==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ConnectionsController_terminate
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-create.ParamsDetails.json b/docs/api-reference/reference/documents-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-create.RequestSchema.json b/docs/api-reference/reference/documents-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..f955704f04
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["PRIMARY_IMAGE","GALLERY_IMAGE","TECHNICAL_DRAWING","DATASHEET","MANUAL","CERTIFICATE","DECLARATION","SAFETY_DOCUMENT","INSTALLATION_GUIDE","VIDEO","OTHER"],"default":"OTHER"},"validFrom":{"type":"string","description":"Deel 7 §52 — essential for certificates, meaningful for any document type."},"validUntil":{"type":"string"},"sortOrder":{"type":"number"},"certificateMetadata":{"type":"object","description":"Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."},"name":{"type":"string"},"mimeType":{"type":"string"},"storageRef":{"type":"string","description":"Opaque reference to the actual file in object storage."},"productId":{"type":"string"},"visibility":{"type":"string","enum":["PUBLIC","RESTRICTED","PRIVATE"],"default":"PRIVATE"},"checksum":{"type":"string","description":"SHA-256 hex, if known — this endpoint has no bytes to compute one from itself."}},"required":["name","mimeType","storageRef"],"title":"CreateDocumentDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-create.StatusCodes.json b/docs/api-reference/reference/documents-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-create.api.mdx b/docs/api-reference/reference/documents-controller-create.api.mdx
new file mode 100644
index 0000000000..0e3d8329e2
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: documents-controller-create
+title: "DocumentsController_create"
+description: "DocumentsController_create"
+sidebar_label: "DocumentsController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWN1u27gSfpUBr7oA7TiOu219U6i22vogiXNsJ4uFEQS0NLK5lUiVpJJ4DQHnIc479D36KOdJFkPJtlJ72y1wLnMnDcn5/WbImQ3TORrhpFajmPXZUEdFhsrZgVbO6DRFcxcZFA4ZZ7kwIkOHxrL+/JYzg58LtO6djtesv/G/0mDM+s4UyFmklUPlaEnkeSojL+bkD6sV0Wy0wkzQl1vnyPpML/7AyJEcQ0o5iZZW41qlmd+1222dkWrJOENVZKw/Z1eT0UUw+f1udBF8CBlnH4Lz87DxPwsHHy9Hg+D8bjgJfhtdfmCcDYNZMP0YhjPG2UVweR2cM84G4WQ2ej8aBDM6NgwH58EkmI3Gl4yzafA+nP1+NxwPri/CSzo2upzOgvNzv+Huw/VoSIduRsNwzDgbzz6GE3bLWYyJKFLH+jWp5OxepDJ+b3R2zKgYbWRkTg6jqCCm8Aq+fnnZhf/957+A1qJyUqSQaAMR+Soh96LlkKFQUi2ToloUag1bDwJJae9kXysn00PhJWdWGzc2MZrGqiqyBRpabci7QCdi4Y5G8YgJp2fw9Uv3Vav72puxaXC69OzfcpDWFo2PsVkKJf+sEbolx4F7y8FGOse3ZRvGKl03DX9YoYImbkBaaITV+0CJ7AieSs4ymeFxsJFrnDZiiRNMfhy2cS4+FwgGEzSoIgSnwa0QROQKip1MEaSCymNQc/a65UbHReQoJY/ocC+tXMhUuvV38+H63flowDibhNPZZDSYhUPGKUtuCNhPMLklUnBXGH2yxT8A5fRj0Oq+/BVW+MhBJvBJ6Qfl4+pW0gKqONdSOVgJC0rDYu3QkgcineWFQ9AKITE6A+kspkmblSVv1JB5FaBGOJ44/5YzJ11K+g18fdpWrqHTrCwrXjbXylZVpNs59cXkiQlkcK/TOVy4ofzwmINEyBRjDtr42NU1D+6lTinhQMCisFKhtWCKFNvs/1b40Bhtfrwt0vHxuvgostw76F0wvJuE/74Op7PDKDqxSBEyEa2kwpZBEXuCFw7E2wMyQ2vF8gdyDrzmKxDFWRvItEFIJKax9RxrRx6DeJNnfNrrLnpx1OomnW6r9/rXTmvx8uxN603SS7qvkt5pZ/H6wKiBNgar8FRY9MY8SLcCi+YeTcvKGCHVS3sIO+/PvcVNTRugC4nlEJ2QaYW4p0yq2H27f1Ijco/R3jFYXkhrpVpyyESaaJPV8MPHnNhDZDCuyr99Rtsz2n4KbWeHaAsKtyI40S0cc1gUDrIKgLuC52GXo/F0reCFNlS1waDVhYmwuok5BMNJq9M9++UZls+w/ClY9g5hOdtfthjvkRZrpOeEA3yU1vm6KCuCfxWlu0dWJKh5eUbiMxJ/ColvvotEiLRKUhk5W6nvQUiV0jrhEF5ge9kGAXFRwQyhUJJagHuRFvhcFp/B+M/BWHLmxJImLbsJiKVDFqPC+NZvvmELFIa69PlteXvQcX9vlJOhW2ka+OTaetgIt2J9diJyeXJ/erKXSALJK/XIZyt9SjitMLbVoQYvGVSTeP3xXptMUJ/5r99mFG5tc3kHwdUIPuGa8W2EV87l3lmUDJP9bCncBvzbWVA9S3kyStnjpDnj2FMbo43O340ydsOB/bH9TKDBqjEK2FMbrXtDl0bHvuu2m812o7uXKtEe9zU6xtOrEVylwlErQF47nDPQjhfjHBVMnVCxMDFcVWrAyLcKSV1nfoGIUi2vubXh4uaqerzR844O+VHEQCvrpCt8un790jvr13zcmkNzImM50POR1+LQwEDHNIXyKtXftSqWw40wUij6GgiHS20krQfOGbko/PRqkAprd+py2IGYBMXSUQklNFaGd9qn7U5dVEVERZXgQ5DOhC+ndRh3XGCfC7DLhSfO3NUbh4/uJE+FVBSUwvhJWZUmcyZySYqc0ulmcq4om/pzttkshMVrk5YlkT8XaNZVAt2TCxYU2PltydkKhcfifMMoF6g8+fuhVU88/MXB+od3Rcm3J4Iowtx9d+9tI+Gvxr7SL+qhbeZvCGbEA1Uz8UBTEc6094ZPb0/bsFSoZeGrPKt4kqdFQe7YueybtPdW1UtCrRsabjbVjpn+hKosGa9NcfTPytuyLP8CQAO4lw==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DocumentsController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-find-one.ParamsDetails.json b/docs/api-reference/reference/documents-controller-find-one.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-find-one.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-find-one.RequestSchema.json b/docs/api-reference/reference/documents-controller-find-one.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-find-one.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-find-one.StatusCodes.json b/docs/api-reference/reference/documents-controller-find-one.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-find-one.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-find-one.api.mdx b/docs/api-reference/reference/documents-controller-find-one.api.mdx
new file mode 100644
index 0000000000..7dd2e07e44
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-find-one.api.mdx
@@ -0,0 +1,69 @@
+---
+id: documents-controller-find-one
+title: "DocumentsController_findOne"
+description: "DocumentsController_findOne"
+sidebar_label: "DocumentsController_findOne"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtu4zYQhl9lwKsEoI9x243uXCctUmCRNMmmF0EQ0OLI4q5EKuTIm1TQ8/Q99skWQynOwYtsc+8r0zwMf858HHPcCFehV2ScPdEiEUcurUu0FBbOkndFgf42M1afWhRSVMqrEgl9EMl1I6wqUSTCaCGFx7vaeNQiIV+jFMaKRFSKciFFSHMslUgaQQ8VrwjkjV2Jtr3hhaFyNmDg8el4zB8aQ+pNxapEIkQrxexHA1eqMDpqh0yZArUE54FyBFaDgWBtXKEIAyhY1sFYDAF8XeBQSJE6S2iJzaqqKkwaLY0+B7bdbIt2y8+YEnvBs8/IdJLRe+d/Pi11Grc9IAXeq7IquOv3+dHt+fHfn44vLoV8ddILUssCoVRpbiwOPCodO+LmwLaH7KUSQ1Crn+yz5TXInAdnkZ1XOo+QGSx0iBZ7RzIbb9nUk9l0OdPpYJqNp4PZh1/Hg+UvB4eDw2yWTX/LZpPx8sPWoRbOe+zCQ7kJ/WG+GsohoF+jHwSjEQq3Yi3tc8auO38+nfi50hspyFDUdcwmj5CUKY7IbRnpYvd6/nlPZLeijfRNtun7aEIwdiWhVEXmfNnjh/cVm4fUo0ZLRhVhR9uOtnfRdrBN27ymnHFKFTFoy5qg7ADcJLyIXYU+9jsLe86DoQAeg6t9ihBSV6GE+dH5YDw92N9hucPyXVjOtrG8fPqxRf1EmnYYwDoCvDeBYl40XcfaBMNBIxe5TRU/MXYk7kh8F4mHb5IIqbNZYVIKnfwIIWfKQIoQ9nC4GoICXXeYIdTW3NUIa1XUuEuLOxj/P4ytFKRWXA4J/Vg68aKAae0NPcQ6aYnKoxfJ9Q0XPC8P+nbBVSLljuuyFUZsuJ5KxEhVZrSejDY7jhqjWy60omtYzTMJFwxrB9qjkJ5gPlXfJfvGH86XikQi/vrnkmPuQmVuYX52Al/wQcjHMOdEVfSYsZmL4e+ddHpxdgJnhSJ+EfO6rcjGGXunFVq4IGW18hrOvNN1SnASX8xZf932IWXiqt7aED5enXVvGH7l8CK+TbBwNpChOlL77b/ZQdLboQcJp36lrPk32gsS+BUl++3Qw8JpDBKipL7dSwkSrpQ3ynJroQhXzhsenxN5s6yJ24tChbCRK2ETS95IG+JMwvHoDj4eTobjPreolHMLO7BygUoVs0pfTm+swBMSwEhAx8QLd24uHuE9japCGctXs/YFj3W8XAtVGZYy4dUbSqVITLwQuQvEs5pmqQJ+8kXbcvddjf6hQ2nNrlhygK8boU3gthZJpoqAW4I2uVPsnff3aR+e0HkptO9UluGK+ZcLfimYtvjPQnvTSpGj0vECNf3APE2xomdLtrI037TN7fnzmNOmqtkbG4+9Ij9a/6GcpulmXLovaNt2o474Owts2+/FHemR
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DocumentsController_findOne
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-get-download-url.ParamsDetails.json b/docs/api-reference/reference/documents-controller-get-download-url.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-get-download-url.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-get-download-url.RequestSchema.json b/docs/api-reference/reference/documents-controller-get-download-url.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-get-download-url.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-get-download-url.StatusCodes.json b/docs/api-reference/reference/documents-controller-get-download-url.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-get-download-url.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-get-download-url.api.mdx b/docs/api-reference/reference/documents-controller-get-download-url.api.mdx
new file mode 100644
index 0000000000..86a7ff0e88
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-get-download-url.api.mdx
@@ -0,0 +1,69 @@
+---
+id: documents-controller-get-download-url
+title: "DocumentsController_getDownloadUrl"
+description: "DocumentsController_getDownloadUrl"
+sidebar_label: "DocumentsController_getDownloadUrl"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtu4zYQhl9lwKsEoI9x243uXDstUmCRbE69CIKAFkc2dyVSIUfeuIKep+/RJyuGUpyDF7ube1+ZpjTDn8NvxhzXwpXoFRlnT7VIxNylVYGWwsxZ8i7P0d8vkebuq82d0tc+F1KUyqsCCX0QyW0trCpQJMJoIYXHh8p41CIhX6EUxopElIpWQoqQrrBQIqkFbUq2COSNXYqmuWPDUDobMPDz8XDIHxpD6k3J4kQiRCPF5FsPblRudNwCZMrkqCU4D7RCYDUYCNbG5YowgIJFFYzFEMBXOfaFFKmzhJbYrSrL3KTR0+BzYN/1rmi3+IwpcRQ8h45MKxm9d/7Hr6VO424EpMBHVZQ5T/0+nd9fnHy6Prm8EvLNTi9JLXKEQqUrY7HnUek4ERcH9t3nKBUYglr+YJ2dqEHmPDiLHLzCeYTMYK5D9NgFkhH5nk89mowXE532xtlw3Jt8+HXYW/xydNw7zibZ+LdsMhouPuxsaua8x/Z4aGVCt5mvhlYQ0K/R94LRCLlbspbmJWO3bTyfd/xS6Z0UZCjqOmGXcyRl8jm5HSft2b19/6IjsrVoIn2jXfo+mhCMXUooVJ45X3T44WPJ7iH1qNGSUXnY07an7V20He3SNq1oxTilihi0RUVQtABuC17ErkQf552FA+fBUACPwVU+RQipK1HCdH7RG46PDvdY7rF8F5aTXSyvnn9sUT+Tph0GsI4AH02gWBdNO7E2wfChkYvcpopvGnsS9yS+i8Tj75IIqbNZblIKrfwIIVfKQIoQDrC/7IMCXbWYIVTWPFQIa5VXuC+Lexh/HsZGClJLboeEfuqg2ChgWnlDm9gnLVB59CK5veOG5/VGf6rvKpBWjru0JUZ6uK1KxECVZrAeDbYLD2qjm4HuTHtVtG3DxQpfyLpkgFv4nsR1VPNOuynZDf5wvlAkEvHX31fMgQuluYfp+Sl8wY2QT0e/IipjFI3NXESiC9zZ5fkpnOeK+JbMdjunHd84OCvRwiUpq5XXcO6drlKC03iLzroUPISUKSw7b334eHPe3mv45sNGnGEwczaQoSqS/N+/k6Ok80MbCWd+qaz5J/oLEvhmJbvl0MPMaQwSoqRu3EkJEm6UN8ryaKYIl84bfj4l8mZREY9nuQphK1fC9nx5IW2IqwufR7vxYX/UH3b1RqVcbziApQtUqFhpuhZ76wWeMYElEjxxAi0or8K6TUrCRxqUuTKW05axSOoOoluhSsOSRmy9JViKJHb1r1i6k2LlArFRXS9UwGufNw1PP1ToNy1ha47Qgs/9thbaBB5rkWQqD7ijb1tmxcFFl3qH8EzUa93dpLLMXCzV/N+AFAxh/BOiuWukWKHSMdfq7sE0TbGkFyY7BZ2Tcpthf55whVUVB2cbwDcJEb1/U05dt29cuS9om2arjvg7C2ya/wE2q/y4
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DocumentsController_getDownloadUrl
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-list.ParamsDetails.json b/docs/api-reference/reference/documents-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..0b6d460cdb
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"productId","required":true,"in":"query","schema":{"type":"string"}},{"name":"documentType","required":true,"in":"query","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-list.RequestSchema.json b/docs/api-reference/reference/documents-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-list.StatusCodes.json b/docs/api-reference/reference/documents-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-list.api.mdx b/docs/api-reference/reference/documents-controller-list.api.mdx
new file mode 100644
index 0000000000..2fc510755a
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: documents-controller-list
+title: "DocumentsController_list"
+description: "DocumentsController_list"
+sidebar_label: "DocumentsController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1O60YQgF9ltFcgOSEJaXvwXRpoRaUjKHDoBUJo4x0ne469a3bGlDTy8/Q9+mTVrH2SQCpOqdS7XMXen/n9drLjlfIVBs3Wu3OjUnXqs7pExzT1joMvCgwPhSVWiap00CUyBlLp3Uo5XaJKVRW8qTM+NypRAR9rG9ColEONibJOpeqxxrBUiaJsgaVW6UrxspKdxMG6uWqaZC3MdNpvZMV/lncvO6nyjpBkfjQYyI9ByoKtxFWVKtUkavxPE7e6sCYGBHJtCzQJ+AC8QBBzkBierC80I4GGWU3WIRGEusC+SlTmHaNjEaurqrBZlHT0mUT2atdoP/uMWYxukESwbU3GEHz49rLMG9yNQKLwWZdVIUM/Tk4frs5+/XR2faOSV55es54VCKXOFtZhL6A2cSAqB5HdlyiVSKTn39CzEzXIfQDvUIJX+oCQWywMRYldIAW4t2Sa4Xg0G5usN8oHo974w/eD3uy745PeST7ORz/k4+Fg9mHHqakPAdv08MJS58zvlhdAGJ4w9MgahMLPxZZmG7K7Np4bj7ctvU8UW452nYnIU2Rti1P2O0La3L1ef9UR2e5oIn3DXfo+WiLr5gmUush9KDv88LkS8ZAFNOjY6oL2tO1pexdtx7u0TWpeCE6ZZgFtVjOULYDrghexqzDEce/gwAewTBCQfB0yBMp8hQlMTq96g9Hx4R7LPZbvwnK8i+XN5s8WzYY045HAeQZ8tsSxLtp24MmSlaSxj9xmWu4texL3JL6LxJM3SYTMu7ywGVNrfoRQKiWxZoQD7M/7oMHULWYItbOPNcKTLmrcl8U9jP8exiZRrOfSZq07IpJNhFkdLC9j/zVDHTCo9O5eGp6Xjr7RxZXICy+d3hzbpo4XKlVHurJHT8OjjTrRJiERK7ZUXwukLWBfDejIFW+6oaR7+MmHUrNK1S+/3UiuPVX2ASaX5/AFpYXr0rtgrmKkrMt9THsXnIvry3O4LDTLTVj27WQ0rji4qNDBNWtndDBw2XakcB5vynl3zA4hE9KqTlofPt5etncXud3IJjlFMPWO2HIdaf3rz/Fx2snhZQIXYa6d/SPKowTk9pR06jDA1BukBKJJ3XNnCiVwq4PVTp6mmnHug5X5CXOws5rleVpoorW5CaxzKIqMZakgko/W8UF/2B90NUVnUlMkgJUnLnWsJl1HvZYCGxSgQ+FFKNeHjfGZj6pCWyfHsQ6FzLWY3CldWTFjKLu3yVx4YplfrWaa8FMomkaG215daDWWpH4Ylea6INxRvq6N6uCqOy+HsEHkpVFCz8svD7HItl39/6Lr1YeJjbp7eQlW9MWjmKgFahPP5arbO8kyrHhr107xFynrc/nzmVRjXUvA10l5dbCi9G5Ku+WW7NWqXXHjv6BrGvXVAZZ31dw3TfM3djEmZA==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DocumentsController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-update-metadata.ParamsDetails.json b/docs/api-reference/reference/documents-controller-update-metadata.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-update-metadata.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-update-metadata.RequestSchema.json b/docs/api-reference/reference/documents-controller-update-metadata.RequestSchema.json
new file mode 100644
index 0000000000..934374e478
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-update-metadata.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["PRIMARY_IMAGE","GALLERY_IMAGE","TECHNICAL_DRAWING","DATASHEET","MANUAL","CERTIFICATE","DECLARATION","SAFETY_DOCUMENT","INSTALLATION_GUIDE","VIDEO","OTHER"],"default":"OTHER"},"validFrom":{"type":"string","description":"Deel 7 §52 — essential for certificates, meaningful for any document type."},"validUntil":{"type":"string"},"sortOrder":{"type":"number"},"certificateMetadata":{"type":"object","description":"Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."},"lifecycleStatus":{"type":"string","enum":["ACTIVE","SUPERSEDED","ARCHIVED"]}},"title":"UpdateDocumentMetadataDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-update-metadata.StatusCodes.json b/docs/api-reference/reference/documents-controller-update-metadata.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-update-metadata.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-update-metadata.api.mdx b/docs/api-reference/reference/documents-controller-update-metadata.api.mdx
new file mode 100644
index 0000000000..dd4a015902
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-update-metadata.api.mdx
@@ -0,0 +1,69 @@
+---
+id: documents-controller-update-metadata
+title: "DocumentsController_updateMetadata"
+description: "DocumentsController_updateMetadata"
+sidebar_label: "DocumentsController_updateMetadata"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmGtu2zgQgK9C8FcK0I7juNvWfwrVVhIvktjrR4oiMAJaHNtsJVIlqSReQ8AeYu/Qe/Qoe5LFUPIjsTdtgf3pfxIfw3l8MxJnSXUKhjupVUfQJm3rKEtAOdvSyhkdx2DuslRwB1fguOCOU0ZTbngCDoylzdslVTwB2qRSUEYNfM2kAUGbzmTAqFS0SVPu5pRRG80h4bS5pG6R4g7rjFQzmufjYiNY90GLBa54LifSyoFyOMXTNJaRV/n4s9UKx3ZE68lniBzqatBAJ8HirCjNG/pVzxVhFFSW0OYt7fU7V0H/013nKjgPKaPnweVluPU+DFsX151WcHnX7gcfO9fnlNF2MAwGF2E4pIxeBdej4JIy2gr7w85ZpxUMcVs7bF0G/WDY6V5TRgfBWTj8dNfutkZX4TVu61wPhsHlpV9wdz7qtHHTTacddimj3eFF2KdjRgVMeRY72iyHckbveSzFmdHJPqME2MjIFB2GEQaIyRvy/dvrOvnnr78JWAvKSR6TqTYkQl9N0b1gGUmAK6lm06yY5GpBVh4keEp1ffZIORnvCS2jVhvXNQLM1qzKkgkYnN06bw3YnijuMeHklHz/Vn9Tqb/1Ziy3JF178e8ZkdZmWw9dM+NK/lnSvhoWgXvPiI10Cu/zKumqeLFt+MMcFNnmhkhLtsLqfRDLKUSLKIaB4y6zL6EVtIadG4zrYNQL+4OwHbYpo0G/ddG5Cdt0nOeMOuli3DzymbfKyZWD2k7TPMd1BmyqlS3YrtdqHvEnrkLlGvsmbjBq3hNkymUMghFtiJsDKTOR3EsdIwaEk0lmpQJricliqNL/LR3BGG1+vCzSYn+2PvIk9Y76ELTv+uEfo3Aw3KFl4PgkBpLwaC4VVAxw4Qf84QRl+xAmYC2f/eCcHa/5vNAK0HmJNkCmEmJhvcTSkVhXX5IpThr1SUNElfq0Vq803v5Wq0xen76rvJs2pvU308ZJbfJ2x6iWNgaK8Li5tKUxD9LNiQVzD6ZipQAS6xnqkm8X5tvCnxuLtzUdb+ALUWQbHJdxQdxTIUXsnq/vl0RuGG3UTnbpu5LWSjVjJOHxVJukxA8eUxRPIgOiKEr2QNuBtl+i7XSXtiBzc8QJvw2CkUnmSFIAuC54HrsUjB/XihxpQ6SzxIDVmYmg+D4wErT7lVr99NUBywOWv4RlYxfL4eZjC2JDmtBgidKOwKO0ztdFWQzcSysxaE57biOOv+cHEg8k/hKJ714kkURaTWMZOVuo7yHESmkdd0COoDqrEk5EVmAGJFPyawbknscZHMriAcafhxEvOnyGPYT1vdziJgtRZqRb+ObCBLjBu+PtOB/v3AN/plmRgJtrUXQhornvXrg5bdJjnsrj+5Pj9dHHSylybFN4H6FaW7oMkNqCuJVGJcpoXjnEyoczbRKO9/PfPw4x+Nqm8o4EvQ75AgvKVvGeO5d612Fq9Df9j3AV/uf9ivK+/+S6v6Fm+x6+Gd26ftf+67q97wK7uqfm2MOZao9pGczuoNchvZg7/HNHs3YI9CuOuikoMnBcCW4E6RktssiRjv+zn5Zl4RWJMDPSUlqVXN30in8t/BvDTZj1pKWVddJlPru+f2ucNks5bsHI9rXeMoJ/e6w8DgxpaYGtDK9S+VyqYhm54UZyhU8t7mCmjcT5wDkjJ5lvgbRibu1aXUbWzOFBQjqseIhLYXitelKtlTWQR1gDMb6pti7hvvqVvbK1FLJBlxToki12n3h1XSccPLrjNOZSYXQy4/suBdW3lKcSNTrB3eukYrQpff7OtXW4armccAsjE+c5Dn/NwCwK4O/RIxOM8+2SCmnxWdDmlMcWdhRal3p61C/T/xXZAP5U0XKQq0UBa4ZvlFHMCd89zMc5o3PgHtbbZTnRKs6o+BTYbNz5tORstSOIIkjdi2vHW3WhFwxbF5i7Zesx8V8UavgDVj/+UGipvdG+APixJY25mmX+q0ALoRhqnmEY1qF6Vhi8WXv9sFwWK4b6C6g8X7vF4Tt6Js//BVHjZP8=
+sidebar_class_name: "patch api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DocumentsController_updateMetadata
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-upload.ParamsDetails.json b/docs/api-reference/reference/documents-controller-upload.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-upload.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-upload.RequestSchema.json b/docs/api-reference/reference/documents-controller-upload.RequestSchema.json
new file mode 100644
index 0000000000..2b656a3def
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-upload.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["PRIMARY_IMAGE","GALLERY_IMAGE","TECHNICAL_DRAWING","DATASHEET","MANUAL","CERTIFICATE","DECLARATION","SAFETY_DOCUMENT","INSTALLATION_GUIDE","VIDEO","OTHER"],"default":"OTHER"},"validFrom":{"type":"string","description":"Deel 7 §52 — essential for certificates, meaningful for any document type."},"validUntil":{"type":"string"},"sortOrder":{"type":"number"},"certificateMetadata":{"type":"object","description":"Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."},"name":{"type":"string"},"filename":{"type":"string","description":"Original filename — used only to derive a file extension; never used as the on-disk name."},"mimeType":{"type":"string"},"contentBase64":{"type":"string","description":"File content, base64-encoded."},"productId":{"type":"string"},"visibility":{"type":"string","enum":["PUBLIC","RESTRICTED","PRIVATE"],"default":"PRIVATE"}},"required":["name","filename","mimeType","contentBase64"],"title":"UploadDocumentDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-upload.StatusCodes.json b/docs/api-reference/reference/documents-controller-upload.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-upload.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/documents-controller-upload.api.mdx b/docs/api-reference/reference/documents-controller-upload.api.mdx
new file mode 100644
index 0000000000..8386710cc9
--- /dev/null
+++ b/docs/api-reference/reference/documents-controller-upload.api.mdx
@@ -0,0 +1,69 @@
+---
+id: documents-controller-upload
+title: "DocumentsController_upload"
+description: "DocumentsController_upload"
+sidebar_label: "DocumentsController_upload"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWN1u27gSfpUBr7oAnTiOu229F4VqK60PkjjHdrJYGEZAS2ObrUSqJOXGawg4D7Hv0Pfoo+yTLIaSbSX2aU+Bc5k7aUjO7zdDzmyYztAIJ7Xqx6zDejrKU1TOdrVyRicJmvs8S7SIGWeZMCJFh8ayzmTKmcHPOVr3Tsdr1tn4X2kwZh1ncuQs0sqhcrQksiyRkRdz+tFqRTQbLTEV9OXWGbIO07OPGDmSY0gpJ9HSalypNPa7drutM1ItGGeo8pR1Juxm2L8Khn/c96+C9yHj7H1weRnW/sdh98N1vxtc3veGwe/96/eMs14wDkYfwnDMOLsKrm+DS8ZZNxyO+xf9bjCmY72wexkMg3F/cM04GwUX4fiP+96ge3sVXtOx/vVoHFxe+g3372/7PTp01++FA8bZYPwhHLIpZzHORZ441qlIBWcrkcj4wuj0mFEx2sjIjBxGUUFM4BV8+/qyBX//5y9Aa1E5KRKYawMR+WpO7kXLIUWhpFrM83JRqDVsPQgk5WQn+1Y5mRwKLziz2riBidHUVlWeztDQak3eFToRC3c0ikdMODuHb19brxqt196MTY3TtWf/loO0Nq99DMxCKPlnhdAtOQ7cWw420hm+LU5goJJ13fAvS1RQxw1IC7Wweh8okR7BU8HZXCZ4fPGpUQMjF1JRGKoj3qzcYgyaVHIaYjRyhSD8FsAHh8pKrX4DhSs05V5hwS0RtGrE0n4CYuQ1TGWKx1Ff7LLrnbD4a/vHql6Q+OoMh5k/1UAV6RhjLywzOs4jR1XgiLSVtHImE+nW303B23eX/S7jbBiOxsN+dxz2GKfEvKNcepQGW2JR8FrhmJRRqcWg5oWnNk85c9IlpMmtL1Hb4tVzmhVFydlmWtmykLSaZ76ePPILGdduNg8X7ihFPOxgLmSCMQdtfJyqsgcrqRPKORAwy61UaC2YPMET9n+rfWiMNj/eRlE8GpcHkWbeQe+C3v0w/PdtOBofQGPkxCxBSEW0lAobBkXsCV44EO8SjWitWPxAzoHXfBHSCsl5qTYIc4lJbD3HypHHIFfnGZ+1W7N2HDVa82ar0X79a7Mxe3n+pvFm3p63Xs3bZ83Z6wOjutoYLMPjltJWxnyRbgkWzQpNw8oYIdEL0uUJCL0/9xbXNa2BLiSWPXRCJiXiHjMpY/d0/7BC5B6j7WOwvJLWSrXgkIpkrk1awQ8fMmIPkcG4vAHsM9qe0fZTaDs/RFuQuyXBiS7imMMsd5CWANwVPA+7DI2nawUvtAHpLBi0OjcRlpcxh6A3bDRb5788w/IZlj8Fy/YhLMf7yxbjPdJijRaUdoAP0jpfF2VJ8K+UBOndRbiNBPUvz0h8RuJPIfHNd5FIj+h5IiNnS/U9CKlSWiccwgs8WZyAgDgvYYaQK/k5R1iJJMfnsvgMxv8djAVnTixo2LIbglg6ZDHKjW/FJhs2Q2GoUZ9Mi+lB0/29aU6Kbqlp5pNp62Ej3JJ12KnI5Onq7HQn8XR3onRONfzZKjEiuJZQ26pSYZjsqki8+rjQJhXU/v3r9zFFXdtM3kNw04dPuGZ8G+ilc5n3GeXEcD9lCrdxfzoVqqYqj4Yqe7jUpx17am3I0fxvQ43dmGB/bD8d2NP2jfqe9qQ/3y/UGu2airX+et8bcybVXPsMqHAyGN304SYRjpoCctzhTIJ2vBhkqGDkhIqFieGmFAl93zTMq4rzC0SUdFnF7QSu7m7KZxw99OgQFRToamWddLlP3G9f2+edio9bc6iPZywHekjyShwa6OqYRlJepeq7UsVyuBNGCkVfXeFwoY2k9cA5I2e5H2V1E2HtTl0OOziToFg6KqYEyNLw5snZSbNyvIiovBKCCNyp8IW1itqOC+yzAnYYf+TMXeVx+OBOs0RIRUHJjR+blQkzYSKTpMgZnd6lKWcVyylnS0qwzoRtNjR3uTVJURD5c45mXSbTinwxowhPpgVnSxQel5MNo7ygiuXB1KjmIP4uYZ3D66Pg2xNBFGHmvrt3WqsBNwNf/GfVKDf1lwYz4gsVOPGFBiWcae8Wn+qetmGJUIvcF35W8iSXi5z8svPdkxLgraqWhFrXNNxsyh1j/QlVUTBemeLonxXToij+AT/Jv8I=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DocumentsController_upload
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-profile.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-create-profile.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-profile.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-profile.RequestSchema.json b/docs/api-reference/reference/dpp-controller-create-profile.RequestSchema.json
new file mode 100644
index 0000000000..d009db479f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-profile.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"version":{"type":"string","example":"1.0"},"description":{"type":"string"},"requiredAttributeCodes":{"description":"AttributeDefinition codes required for VALID status","type":"array","items":{"type":"string"}}},"required":["code","name","version","requiredAttributeCodes"],"title":"CreateDppProfileDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-profile.StatusCodes.json b/docs/api-reference/reference/dpp-controller-create-profile.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-profile.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-profile.api.mdx b/docs/api-reference/reference/dpp-controller-create-profile.api.mdx
new file mode 100644
index 0000000000..e08902f195
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-profile.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-create-profile
+title: "DppController_createProfile"
+description: "DppController_createProfile"
+sidebar_label: "DppController_createProfile"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQgF9lwFMWoB0ncduNb944BVJ0ETfJpgfDCGhpZHNXIhly5MQ19Dx9jz5ZMZT8k9ibNkWPvsnD0XB+Po45Wgrr0CvS1lyloicGzl1YQ97mOfqHxKMiHHqb6RyFFE55VSChD6I3Gkvh8bHEQJ9suhC9ZfypPaaiR75EKRJrCA3xknIu10nc5/hrsIZlIZlhofiJFg5FT9jJV0yI9/HsFWkMvJrYFLe0AnltpqKSwqhi/8IcfdD1Ji/XpMBnVbicRSftDuumGBKvHe3Vr+Q6qD6R15OS8MKmtV8v3hTr9QFm2miWAnseYGUBMuvhvv/r1QACKSqDkKvtlPdqIaTQhEXY40a15YjojeqUNAnYhPtdZ8dSkKYY9UUs6cC5pqoDsmw+2g/OmlDH1u10dkO8V7lOYw0hUzrHVIL1QDOEBgSYa5srwgAKJmXQBkMAX+bYFv8bDei99f8Vmu36f+oPHm4uf/tyeXsnXmEgbklNcoRCJTNtsOVRpVEQN49lbTMbBYagpv+wz07WIgfWICevsB4h05inob2iDQPxWXzLZnrSPZ1006R1mnVOW92PP3Zakx/OzlvnWTc7/SnrnnQmH3eCurDeY10emunQBPOkaQYB/Rx9K+gUIbdT9mU/cauItz3douuSTQ6QlM5rsF4aqWv3Wv+mAW+DYrdzskvfZx2CNlMJhcoz64sGP3x28XAlHlM0pFUeDrQdaHsXbWd72nlJM8YpUcSgTUqCogZw3fAidg59lFsDR9aDJu73wZY+QQiJdSihP7hpdU7PPhywPGD5Liy7u1jebf5sMd2QlloMYCwBPutAsS/qWjDXQXPRyEZuE8UXuwOJBxLfReL5myRCYk2W64RC7X6EkDslX3MRjrA9bYOCtKwxQyiNfiwR5iov8dAWDzD+exgrKUhNefwUqXOsHjApvaaF6I2WYoLKo+fhtBq/DvHt0bZAmlmegJ0NkRhFM9ETx8rp4/nJcepcy9XKPLbVOWmm4JUHt0xpTdjKjwZdDqcRyebhZ+sLRaInfvn9jottg9MP0B9ewTdcbAbDGZGLqeKjcLMZty9X5V7RvCGhnoo3v9fDcJx4X2dlrfa9OXe0UhlXUmiT2UhfU6Pr2+EVDHNFfCFn73fsR42ja4cGbkmZVPkUht6mZUJwFS/sWXPaP0DCwLvGWhs+3w/rKxRfsvglPsxwYU0gTWU8NH/92T3rNXZoIeHaT5XRf0R7QQJf4mSzHXqIEUmILjXPjStBwr3yWhl+ulCEU+s1r6+zwfJchbB2V8LAJmWB8ZV+mWpqv0h2p12nm1ubSri1cRmZrkLFptbUaeAcbLiEmkvYgLn/+wThMx27XGnDnaH0Oa/VzI6EcppdOeG3t7kdSzFjunsjsVxOVMAvPq8qFj+W6Bc1zXPOw4SrO+KKz1Cl8UQtBYPJnSK26tYdO8LqeRm/YLxu25VcvdFPEnT0pu546wAOr2PTnTQflYoab6+eGFL1JHpCSGFjQuJZi7KlyJWZlrHhitomp1uVnJF11l6dwRjV6guMWWx5uFzWGnf2G5qqErIJhfi3qMZVVf0N1+Cb1A==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_createProfile
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-record.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-create-record.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-record.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-record.RequestSchema.json b/docs/api-reference/reference/dpp-controller-create-record.RequestSchema.json
new file mode 100644
index 0000000000..ddb4563fd4
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-record.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string"},"profileId":{"type":"string"}},"required":["productId","profileId"],"title":"CreateDppRecordDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-record.StatusCodes.json b/docs/api-reference/reference/dpp-controller-create-record.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-record.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-create-record.api.mdx b/docs/api-reference/reference/dpp-controller-create-record.api.mdx
new file mode 100644
index 0000000000..28f3596abc
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-create-record.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-create-record
+title: "DppController_createRecord"
+description: "DppController_createRecord"
+sidebar_label: "DppController_createRecord"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9vIjcQwL/KyE85aSGQ0PaybxykUiqdQpNc+oBQ5F0P4Ltd27Fnk3BoP0+/Rz9ZNd4NkHDKNVIfecLY4/H8+XnwsBbWoZekrblQIhVj50bWkLdFgf4u9ygJrzC3XolEOOlliYQ+iHQ6S4TH+woDfbJqJdJ1/Ko9KpGSrzARuTWEhnhJOlfoPB5z/DVYw3MhX2IpeUQrhyIVNvuKOfE5no0ijYFXnbeqyonN24gG8tosRB1l57rAH67WyY5N0x1Fu9tmiSBNBe8bRXfHzjUej8mKum60BGdNaOwZ9Hr8oTDkXjt2SaTiVhZaRf9gLnWBKgHrgZYIbZDgQdtCEgaQkFVBGwwBfFVgV/xvkULvrf+5WG4V7kcrEfgkSxcD8Wk4vrs6//PL+fWNSF55ek0yKxBKmS+1wY5HqeJEPBxYd5fzUmIIcvGTc/aiBnPrwRrk4JXWI8w1FipEjW0gf5TpXZ2qPzjJBirvnMx7J53Bx197neyX07PO2XwwP/ltPuj3so97To2s99ikh5Y6tM48alpCQP+AvhO0Qijsgm15xVWM59bjXUt34DpnlWMkqYsGrJdKmty9lr9qwduiOOj19+n7rEPQZpFAKYu59WWLHz45Vg+5R4WGtCzCgbYDbe+i7XSftmFFS8Ypl8SgZRVB2QC4KXgRO4c+zlsDR9aDpgAeg618jhBy6zCB4fiq0zs5/XDA8oDlu7Ac7GN5s/2xRbUlTVkMYCwBPulAsS7qZuJBB81JIxu5zSW/eQ4kHkh8F4lnb5IIuTXzQucUGvMjhFwpA0lCOMLuogsSVNVghlAZfV8hPMiiwkNZPMD432GsE0Fywa2ZUM6xeMC88ppWIp2uRYbSo+fGrZ69dvHNrq9EWlruDZ0NERhJS5GKY+n08UP/WDnX8VE2CD6SI9L2h8/nXzOjDV/PVrTgsjPtVNIOfre+lCRS8cdfN5xqG5y+g+HkAr7hSiTP2V0SuRgovghX20b0/DnZLxrHLQw7/eJOF6nN3EZ02gBfXk8uYFJI4tc0H75HRZQ4unRo4JqkUdIrmDQHwkV8bc/bq/oBcqbVtdq68Pl20rx/+IXEm/gmwsiaQJqqSPw/fw9O01YPrRK49Atp9PeoLyTAL7CkPQ49jKzCkEA0qR23poQEbqXX0vBoJAkX1mteHxJ5nVXE41EhQ9iYm8DY5lWJccuwUpq4CnFSG8d73X6319YlmXNd4iwwG6WMFcnImNaxc7CFChqoYEPVi2hu7izhEx27QmrDWal8EfMYgZsK6TRb0ufdO9DNErFkMtOpWK8zGfCLL+qap+8r9KsGxQeOQsa5nc7qRCxRqngZ1oKp4kseq2znhu1g8aJie/Yqbp087xjmOTp6U3a2c3kml7FeZu1/JWWss8LLR64J8lGkQiTCxnjEixLn1qKQZlHFWikanRxsWXFANkF7dYGiV+2SNKsdC9frRuLGfkNT1yJpXSH+LupZXdf/AujLNBY=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_createRecord
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-owner.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-get-owner.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-owner.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-owner.RequestSchema.json b/docs/api-reference/reference/dpp-controller-get-owner.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-owner.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-owner.StatusCodes.json b/docs/api-reference/reference/dpp-controller-get-owner.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-owner.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-owner.api.mdx b/docs/api-reference/reference/dpp-controller-get-owner.api.mdx
new file mode 100644
index 0000000000..b5c70f4efa
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-owner.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-get-owner
+title: "DppController_getOwner"
+description: "DppController_getOwner"
+sidebar_label: "DppController_getOwner"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1SIzcQx1+lSyeokr/ASZa5OTZJkaotCLDkQFGUPOqxtTsjCanHC3HN8+Q98mSp1gw24GQ33H1CaKTWv7t/3UishfMYFBlnz7TIxMz7qbMUXFliuF8gnX+1GIQUXgVVIWGIIrtdC6sqFJkwWkgR8KE2AbXIKNQohbEiE17RUkgR8yVWSmRrQU+ed0QKxi5E09zxxuidjRj5+3g45B8aYx6MZ0EiEzeqNDqpg0KZErUEF4CWCHwoRoKVcaUijKBgXkdjMUYIdYl9IUXuLKElNqu8L02eLA0+R7a93tXm5p8xJ3Y2cFTItMowBBe+vyx3GncdlQIfVeVLnvp5Mru/PP390+nVtZBvPL0iNS8RKpUvjcVeQKXTRDoc2HZfNFJUGKNafOecnahB4QI4ixy8ygWEwmCpY7LYBZKz/y2bejQ+mo913jsqhke98Ycfh735D8cnvZNiXBz9VIxHw/mHHaemLgRs00NLEztnvhpaQsSwwtCLRiOUbsFampco3bbx3Hr8UumdFGQo6TplkzMkZcoZuR0jbe7err/swGt38J7xcLRL30cTo7ELCZUqCxeqDj989Gwe8oAaLRlVxj1te9reRdvxLm2TmpaMU66IQZvXBFUL4KbhJew8hjTvLBy4AIYiBIyuDjlCzJ1HCZPZZW94dHy4x3KP5buwHO9ieb39Y4t6S5p2GME6Anw0kVJfNO3EykTDSSOXuM0VXyX2JO5JfBeJJ98kEXJni9LkFFv5CULulJEUIRxgf9EHBbpuMUOorXmoEVaqrHHfFvcw/n8YGylILfjVI7T3vDxiXgdDT+khNEcVMIjs9o5fNK9d/M/HVIW0dPzcWmBihd9KmRgobwar0UB73wuYu6DjYG10w8+oFBEW8eL8K2a05etZRQcuO9NNyW7wiwuVIpGJ3/645lS76M09TC7O4As+Cfmc3SWRT4EytnAp611szq8uzuCiVMQXYd63k9C04uDco4UrUlaroOEiOF3nBGfpolx0VXYIOYPmO2t9+Hhz0V5d+HLDm7iIYOpsJEN1gvXvv8bHWWeHniSch4Wy5s9kL0rgy5PsjsMAU6cxSkiSunEnJUq4UcEoy6OpIly4YPj7hCiYeU08npYqxo1cCTOX1xWmLZNaG+IGwvloHR/2R/1h11JUzi2FA+hdpEqlZtI9lmfew5YHWCDBMxCvIrkpNcJHGvhSGcvFWIeSv7Ww3ArlDasY8e4tMEKKzKQiWLpIvG69nquIn0LZNDz9UGN4ajlacRzmnN3btdAm8liLrFBlxB1Jm34pDi67GjqELTevpXaTyjJZqeeKTAgpGLX0T4PmrpFiiUqn0ll3HyZ5jp5ebNnpzFxjm+L59ZRbpao5HpuYvcE+Wf9XOet1u+LafUHbNBt1xL+zwKb5B57P2nk=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_getOwner
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-public.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-get-public.ParamsDetails.json
new file mode 100644
index 0000000000..1e26fb2d58
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-public.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"accessToken","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-public.RequestSchema.json b/docs/api-reference/reference/dpp-controller-get-public.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-public.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-public.StatusCodes.json b/docs/api-reference/reference/dpp-controller-get-public.StatusCodes.json
new file mode 100644
index 0000000000..0fbae6ed8a
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-public.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-get-public.api.mdx b/docs/api-reference/reference/dpp-controller-get-public.api.mdx
new file mode 100644
index 0000000000..a0d16e0194
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-get-public.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-get-public
+title: "DppController_getPublic"
+description: "DppController_getPublic"
+sidebar_label: "DppController_getPublic"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQgF9lMKcEoH+SuO1GN9dOixQo1k2y6SEIAloc2dyVSIYcuUkNPU/fo09WjKQ6yRrd7d59Mj3iDOfn42C4RR8oarbeXRrMcB7CzDuOviwpPqyIF/WytDkqDDrqiphiwuxui05XhBnqPKeUbvwncqgw0mNtIxnMONak0DrMMGheo8KUr6nSmG2Rn4OoJo7WrbBp7kUxBe8SJfk+GY/lx1DKow3iGmZ4q0trWj+h0LYko8BH4DWBHEqJYWN9qZkSaFjWyTpKCWJd0hAV5t4xORazOoTS5q2l0ccktrf7vvnlR8pZoo6SH7adZxSjj1/flntD+4EqpCddhVJEP07nD1cXv324uL5B9Vmk16yXJUGl87V1NIikTStoDwexPcRGYUUp6dVXztnLGhQ+gnckyat8JCgslSa1FvtECgdfsmlOJqfLickHp8X4dDB59/14sPzu7HxwXkyK0x+Kycl4+W4vqJmPkbry8NqmPpg/LK8hUdxQHCRrCEq/El+a1yjddfl8ifi1p/cK2XLr14WYnBNrW87Z7xnpavf5/qsevE5DdCbjs336pjWvybFwI+Qta4bKpmTdaoegnAOBYiv3Do58BMsJIiVfx5wg5T6Qgun8ajA+PTs+YHnA8puwnOxjefPS/si8kGY8JXCegZ5s4rZR2k6wsclK0di33OZa2vyBxAOJ30Ti+RdJhNy7orQ5p879FkLplIk1ExzRcDUEDabuMCOonX2sCTa6rOnQFg8w/n8YG4WsVzKQoglBtr+N47+n2Yp47WXgXVFLhMyoGY50sKPNyciEMNq+Gm0bmV/bwOWse/mT19Hy87Wg2GG0JB0p7vgUn3uR6hc/+Vhpxgx/+f1GKupTsA8wXVzCJ3pG9W8R18yhzYd1hW+L26fg/fXiEhal5sLHSvT26tbuOHofyME1a2d0NLCI3tQ5w6WRAaboL9Mx5MJT6K0N4dfbRTehyAwjSnJXYOZdYst1y+Tff03Ost4OPyt4H1fa2T9be0mBzEiqP44izLyhpKB1qV/3riQFtzpa7WQ100wrH618nzJHu6xZ1rNSp7RzV8Hc53VFrcq0NpalT0g9usDHw5PhuO8cOpfOIQkMPnGl257RP1fmIcALEbAihh0Sb1K5u1JMTzwKpbZOLl0dS/nW4XKHOlhx40S0Q0CF2ev30L3CtU8sG7fbpU70IZZNI+LHmuJzR9JGMrGU+t5t0dgka4NZoctEez7tGiMeXfWX5RheyHnray/UTthqmytmiAoFtrcPt+a+UbgmbYTfu22/Y5rnFPiV7l4vlpfb7iL9fHGDTfMPx5rm7Q==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_getPublic
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-list-profiles.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-list-profiles.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-list-profiles.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-list-profiles.RequestSchema.json b/docs/api-reference/reference/dpp-controller-list-profiles.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-list-profiles.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-list-profiles.StatusCodes.json b/docs/api-reference/reference/dpp-controller-list-profiles.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-list-profiles.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-list-profiles.api.mdx b/docs/api-reference/reference/dpp-controller-list-profiles.api.mdx
new file mode 100644
index 0000000000..d24cd5d45d
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-list-profiles.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-list-profiles
+title: "DppController_listProfiles"
+description: "DppController_listProfiles"
+sidebar_label: "DppController_listProfiles"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWkB07cduNbq6dFimwWDfJpofACGhxZHGXIhly5MY19Dx9jz5ZMZTy0RjINnefwlDDP+fjxzG5E85jkKSdvVAiF3PvZ85ScMZguDM60iK4UhuMIhNeBlkjYYgiv11mImD0zkaMIt+JyWjEfxTGImjPgiIXN9JoldShlNqgysAFoAoh4H2DkWCjnZGEESSsmqgtxgihMTgUmSicJbTEstJ7o4ukdPw1svZOxKLCWvKIth5FLtzqKxbEjgaOinTnGYbgwvfNCqfwhVWkoO1aZAIfZO0NT/08nd9dnv/+5fzqWmSvIr0iuTIItSwqbXEQUKo0kTYH1h6KNhM1xijX39lnL2tQugDOIievdgGh1GhUTIp9Irl6b2mq8eRkNVHF4KQcnQwmH38cDVY/nJ4NzspJefJTORmPVh/3gpq5ELArD1U69sH8qamCiGGDYRC1QjBuzb70zuiASuS3XT6fI37p6TITpCn5dc6ScySpzZzcnkhXu9f2lz143QpeMxmN9+n7pGPUdp1BLU3pQt3jhw+e5aEIqNCSliYeaDvQ9i7aTvdpmzZUMU6FJAZt1RDUHYBPDS9h5zGkeWfhyAXQFCFgdE0oEGLhPGYwnV8ORienHw5YHrB8F5aTfSyvn39sUT2TphxGsI4AH3Sk1Bd1N7HRUXPRyCVuC8lXgQOJBxLfReLZmyRC4WxpdEGxcz9ByJ0ykiSEIxyuhyBBNR1mCI3V9w3CRpoGD23xAOP/h7HNBMk1v1iE8p7NIxZN0LQV+e1OrFAGDPyeaZevQ3zzMVQjVY6fTGtMvEiqRC6OpdfHm/Gx8n7gn427jPTPpsf9r5jRjq9HL3pwOZh+KusHv7hQSxK5+O2Pay61i17fwXRxAd9wK7LH6lZEPiVK29Klqve5+Xy1uICFkcQXYV63V9BkcfTZo4UrklbJoGARnGoKgot0US77U/YBCgbN92pD+HSz6K4ufLnhRXyIYOZsJE1NgvWfvyenea9D2ww+h7W0+q+kFzPgy1PWb4cBZk5hzCC51I97V2IGNzJoaXk0k4RrFzR/nxIFvWqIxzMjY3xyN4O5K5oa05JpozRxA+F6dIGPhuPhqG8psuCWwgn0LlItUzOxMlVk7j088wDMA7wA4j/ZfDpuhA907I3Ulg9kEwx/62C5FdJr9mTMq18Cs8xE5SKxyW63khG/BNO2PH3fYNh2GG04DSsu7u2yzUSFUiWQd4KJyMW0KNAzmqlpiny/TzLxTxj/es6NSzbs2ZP3ryBM6v0nabcvtHe7zuLafUPbtiLrnSD+X7TLtm3/BYuuoVE=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_listProfiles
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-publish.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-publish.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-publish.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-publish.RequestSchema.json b/docs/api-reference/reference/dpp-controller-publish.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-publish.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-publish.StatusCodes.json b/docs/api-reference/reference/dpp-controller-publish.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-publish.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-publish.api.mdx b/docs/api-reference/reference/dpp-controller-publish.api.mdx
new file mode 100644
index 0000000000..b56c5944b1
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-publish.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-publish
+title: "DppController_publish"
+description: "DppController_publish"
+sidebar_label: "DppController_publish"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0F+J2250c+0USIFF3CSbHowgoMSxzV2J5JKjNKmh5+l79MmKoRQ7idvd5u6TaYoz+s/Mj2PSG+E8BkXG2QstMjHzfuosBVeWGO59nZcmroUUXgVVIWGIIltshFUVikwYLaQI+LU2AbXIKNQohbEiE14Rm8VijZUS2UbQk2eLSMHYlWiaOzaM3tmIkZ+Ph0P+0BiLYDzrEZm4VaXRSRwslSlRS3ABaI3AL8VI8GBcqQgjKMjraCzGCKEusS+kKJwltMRulfelKZKnwefIvjf72lz+GQviYAMnhUyrDENw4fvLCqdxP1Ap8FFVvuSpnyez+6vz3z6dX98I+SbSa1J5iVCpYm0s9gIqnSbSy4F990UjRYUxqtV33rOXNVi6AM4iJ69yAWFpsNQxeewSycX/lk89Gp/kY130TpbDk974w4/DXv7D6VnvbDlenvy0HI+G+Ye9oKYuBGzLQ2sTu2D+MLSGiOEBQy8ajVC6FWtpXqK0aPO5i/il0jspyFDSdc4uZ0jKlDNye07a2r1df9WB11qwzXg42qfvo4nR2JWESpVLF6oOP3z07B6KgBotGVXGA20H2t5F2+k+bZOa1oxToYhBy2uCqgVw2/ASdh5DmncWjlwAQxECRleHAiEWzqOEyeyqNzw5PT5gecDyXViO97G82f3Yot6Rph1GsI4AH02k1BdNO/FgouGikUvcFopPEgcSDyS+i8Szb5IIhbPL0hQUW/kJQu6UkRQhHGF/1QcFum4xQ6it+VojPKiyxkNbPMD4/2FspCC14luP0N7z8ohFHQw9pYtQjipgENnijm80r0P8r7tUhbR2fNnyLiZW+K6UiYHyZvAwGmjvewELF3QcbIxuBjvLNjMs5oWOa2a15exZTQcwB9VNyW7wiwuVIpGJX3+/4ZK76M09TOYX8AWfhHyu8prIp4QZu3Sp+l2OLq/nFzAvFfGBmO32CptWHF16tHBNymoVNMyD03VBcJEOzMtutx1DwcD5zlsfPt7O2yMMH3LYiDcTTJ2NZKhO0P791/g06/zQk4TLsFLW/Jn8RQl8iJLd6zDA1GmMEpKkbtxJiRJuVTDK8miqCFcuGH4+IQomr4nH01LFuJUrYeaKusJkMqm1IW4kXI828GF/1B92rUUV3Fo4gVzjSqWm0l2aZ97DjgvYVfdVHrcbjvCRBr5UxvKWrEPJz1pkFkJ5wxpGbL3DRkiRpav5s+87KdbMWrYQm02uIn4KZdPw9Ncaw1PL0wPnI+cqLzZCm8hjLbKlKiPuidv2T3F01e2pY9jx81p0N6ksE5Z6sMiEkIKRS38iNHeNFGtUOm2lTfdgUhTo6YXJXqfmPbfdTfPL1DtVzanZpu8N/8n9v+rZbNoVN+4L2qbZyiP+zgqb5h9m/eDW
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_publish
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-rotate-token.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-rotate-token.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-rotate-token.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-rotate-token.RequestSchema.json b/docs/api-reference/reference/dpp-controller-rotate-token.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-rotate-token.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-rotate-token.StatusCodes.json b/docs/api-reference/reference/dpp-controller-rotate-token.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-rotate-token.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-rotate-token.api.mdx b/docs/api-reference/reference/dpp-controller-rotate-token.api.mdx
new file mode 100644
index 0000000000..22bf689d87
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-rotate-token.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-rotate-token
+title: "DppController_rotateToken"
+description: "DppController_rotateToken"
+sidebar_label: "DppController_rotateToken"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN9PIzcQx/+V0TxxkvMDSNu7fUsJlah0ggJHHxBCznqS+G7XNvYshYv27+n/0b+sGu9egEvFlfc8YXk94+/MfDyxWaMPFDVb704MFjgL4cg7jr6qKN5Gz5rp0n8hhwqDjromppiwuF6j0zVhgdagwkh3jY1ksODYkELrsMCgeYUKU7miWmOxRn4MYpE4WrfEtr0RwxS8S5Tk+2Q8lj+GUhltEE1Y4JWurMkCYaFtRUaBj8ArAtmUEsO99ZVmSqBh3iTrKCWITUVDVFh6x+RY3OoQKltmT6PPSXyvt7X5+WcqWYKNkhi2nTKK0ccfLyu9oe1AFdKDrkMlU79OZ7fnx398Or64RPVdpBes5xVBrcuVdTSIpE2eyJuD+B5iq7CmlPTyB/tsZQ0WPoJ3JMmrfSRYWKpMyh77RAoAr/k0+5OD+cSUg4PF+GAwef/zeDD/6fDD4MNisjj4ZTHZH8/fbwV15GOkrjy8sqkP5i/LK0gU7ykOkjUElV+KlvY5StddPp8ifq70RiFbzrqOxeWMWNtqxn7LSVe779ef9+B1FmIzGe9v0/fRpmTdUkGtq4WPdY8fPQRxD2UkQ46trtKOth1tb6LtcJu2acMrwanULKDNG4a6A3DT8DJ2gWKe9w72fATLCSIl38SSIJU+kILp7HwwPjh8t8Nyh+WbsJxsY3n59GNL5ok04ymB8wz0YBPnvmi7iXubrBSNfea21HKb2JG4I/FNJH54lUQovVtUtuTUyc8QSqdMcmeFPRouh6DBNB1mBI2zdw3Bva4a2rXFHYz/H8ZWIeulvHrQhCDLE5VNtPyYH0Jz0pEiFtc38qJ5GeJr76maeOXl0RV8yrzIe6nAkQ52dL8/MiEMIpU+mjRaW9OOOusB9+ZdikTVM0EXAm0H3DdZPckSXT+l+sFvPtaascDf/7yU2vsU7C1Mz07gCz2i+lbuFXPImbNu4TMGfbJOL85O4KzSLDdjsduqcF6xdxrIwQVrZ3Q0cBa9aUqGk3xzXvTH7h2UQl7ovQ3h49VZd5eR244YyamCI+8SW24yvf/8PTksej/8qOA0LrWzX7O/pEBuU6rfjiIceUNJQZbUj3spScGVjlY7GR1ppqWPVr5PmaOdNyzjo0qntJGrYObLpqZsMm2MZekoUo8u8PFwfzjue4wupcdIAqXQtc7dpX89z0KAJ0CgKzF8I+RFMjfHj+mBR6HS1skBbWIl3zp4rlEHK0L2xfoJIFRYdA/15wzdKFwJesU1rtdznehTrNpWpu8aio8dWfeSmbnU+3qNxiYZGywWukq0pXDTUnHvvD9m7+CJpJfK+0nthLXclrFAVCjw5f8rtDetwhVpk0/Xuv8wLUsK/Mxkq3nLMdwcrrPT3E51I/nZ5PC7k5Dd/6ee9bpbkUvStht5XQbbm7Zt/wXxyOmN
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_rotateToken
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-suspend.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-suspend.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-suspend.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-suspend.RequestSchema.json b/docs/api-reference/reference/dpp-controller-suspend.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-suspend.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-suspend.StatusCodes.json b/docs/api-reference/reference/dpp-controller-suspend.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-suspend.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-suspend.api.mdx b/docs/api-reference/reference/dpp-controller-suspend.api.mdx
new file mode 100644
index 0000000000..1c406cbf42
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-suspend.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-suspend
+title: "DppController_suspend"
+description: "DppController_suspend"
+sidebar_label: "DppController_suspend"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN9PIzcQx/+VkZ9Acn5B2h77liZUotKJFDj6ECHkrGcT3+3aPnuWQqP9e/p/9C+rxrskQNq78p4njO2Z/c7Mx4PNRjiPQZFx9kKLTMy8nzpLwZUlhvtYR49WCym8CqpCwhBFttgIqyoUmTC8FPBrbQJqkVGoUQpjRSa8orWQIuZrrJTINoKePFtECsauRNPcsWH0zkaMvD4eDvmHxpgH41mPyMStKo1O4qBQpkQtwQWgNQJ/FCPBg3GlIoygYFlHYzFGCHWJfSFF7iyhJXarvC9NnjwNPkf2vdnX5pafMScONnBSyLTKMAQXvr8tdxr3A5UCH1XlS576eTK7vzr/7dP59Y2QbyK9JrUsESqVr43FXkCl00T6OLDvvmikqDBGtfrOd/ayBoUL4Cxy8ioXEAqDpY7JY5dILv63fOrR+GQ51nnvpBie9MYffhz2lj+cnvXOinFx8lMxHg2XH/aCmroQsC0PrU3sgvnD0BoihgcMvWg0QulWrKV5idKizecu4pdK76QgQ0nXObucISlTzsjtOWlr93b/VQdea8E24+Fon76PJkZjVxIqVRYuVB1++OjZPeQBNVoyqowH2g60vYu2033aJjWtGadcEYO2rAmqFsBtw0vYeQxp3lk4cgEMRQgYXR1yhJg7jxIms6ve8OT0+IDlAct3YTnex/Jm98cW9Y407TCCdQT4aCKlvmjaiQcTDReNXOI2V3yTOJB4IPFdJJ59k0TInS1Kk1Ns5ScIuVNGUoRwhP1VHxTousUMobbma43woMoaD23xAOP/h7GRgtSKXz1Ce8/bI+Z1MPSUHkJLVAGDyBZ3/KJ5HeJ/vaUqpLXjx5Z3MbHCb6VMDJQ3g4fRQHvfC5i7oONgY3Qz2Fm2mWExL3RcM6stZ89qOoA5qG5KdoNfXKgUiUz8+vsNl9xFb+5hMr+AL/gk5HOV10Q+JczYwqXqdzm6vJ5fwLxUxBdittsrbNpxdOnRwjUpq1XQMA9O1znBRbowF91pO4acgfOdtz58vJ23Vxi+5LARHyaYOhvJUJ2g/fuv8WnW+aEnCZdhpaz5M/mLEvgSJbvPYYCp0xglJEnduJMSJdyqYJTl0VQRrlwwvD4hCmZZE4+npYpxK1fCzOV1hclkUmtD3Ei4Hm3gw/6oP+xai8q5tXACucaVSk2lezTPvIcdF7Cr7qs8bg8c4SMNfKmM5SNZh5LXWmQWQnnDGkZsvcNGSJGlp/mz7zsp1sxathCbzVJF/BTKpuHprzWGp5anB87Hkqu82AhtIo+1yApVRtwTt+2f4uiqO1PHsOPntehuUlkmLPVgkQkhBSOX/onQ3DVSrFHpdJQ23cIkz9HTC5O9Ts1nbnua5pepd6qaU7NN3xv+k/t/1bPZtDtu3Be0TbOVR/w7K2yafwCUEuEN
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_suspend
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-validate.ParamsDetails.json b/docs/api-reference/reference/dpp-controller-validate.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-validate.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-validate.RequestSchema.json b/docs/api-reference/reference/dpp-controller-validate.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-validate.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-validate.StatusCodes.json b/docs/api-reference/reference/dpp-controller-validate.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-validate.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/dpp-controller-validate.api.mdx b/docs/api-reference/reference/dpp-controller-validate.api.mdx
new file mode 100644
index 0000000000..b0a77e302b
--- /dev/null
+++ b/docs/api-reference/reference/dpp-controller-validate.api.mdx
@@ -0,0 +1,69 @@
+---
+id: dpp-controller-validate
+title: "DppController_validate"
+description: "DppController_validate"
+sidebar_label: "DppController_validate"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1uIzcMx1+F0CkB5K/EbTdzc+0USIFF0iSbHowgkEe0rd0ZSZE4blxjnqfv0ScrqJm1nbjdbe4+WdaInD/Jn2jJG+E8BkXG2SstMjHxfuwsBVcUGJ5WqjBaEQopvAqqRMIQRTbdCKtKFJkwWkgR8LkyAbXIKFQohbEiE17RUkgR8yWWSmQbQWvPFpGCsQtR149sGL2zESM/H/b7/KEx5sF4FiQy8dAIMM7CXJkCtQQXgJYI/FKMBCvjCkUYQcGsisZijBCqArtCitxZQkvsVnlfmDx56n2O7HtzqM3NPmNOHGzgrJBplGEILnx/We40HgYqBb6o0hc89fNo8nR7+duny7t7Id9EekdqViCUKl8ai52ASqeJ9HJg311RS1FijGrxnfccZA3mLoCzyMkrXUCYGyx0TB7bRHL1v+VTD4Zns6HOO2fz/lln+OHHfmf2w/lF52I+nJ/9NB8O+rMPB0GNXQjYlIeWJrbB/GFoCRHDCkMnGo1QuAVrqfdRmjb53EW8r/RRCjKUdF2yywmSMsWE3IGTpnZv19+24DUWbDPsDw7p+2hiNHYhoVTF3IWyxQ9fPLuHPKBGS0YV8UjbkbZ30XZ+SNuooiXjlCti0GYVQdkAuG14CTuPIc07CycugKEIAaOrQo4Qc+dRwmhy2+mfnZ8esTxi+S4sh4dY3u9+bFHvSNMOI1hHgC8mUuqLpplYmWi4aOQSt7nio8SRxCOJ7yLx4pskQu7svDA5xUZ+gpA7ZSRFCCfYXXRBga4azBAqa54rhJUqKjy2xSOM/x/GWgpSC771CO09L4+YV8HQOl2EZqgCBpFNH/lG8zrE/7xMlUhLx9ct72KChS9Lmegpb3qrQU973wmYu6Bjb2N03dszbXLDcvaU3DGtDWlf9bQIc1jtlGwHv7hQKhKZ+PX3ey66i948wejmCr7gWsivdV4S+ZQyY+cu1b/N0vXdzRXcFIr4SMx2B6VNK06uPVq4I2W1ChpugtNVTnCVjszzdr+dQs7I+dZbFz4+3DSHGD7msBFvJxg7G8lQlbD9+6/hedb6obWE67BQ1vyZ/EUJfIyS7eswwNhpjBKSpHbcSokSHlQwyvJorAgXLhh+PiIKZlYRj8eFinErV8LE5VWJyWRUaUPcSrgeTeD97qDbb5uLyrm5cAK5yKVKbaW9Nk+8hx0ZsFfeV4nc7jnCF+r5QhnLu7IKBT9roJkK5Q2LGLD1DhwhRZZu51vnj1IsGbdsKjabmYr4KRR1zdPPFYZ1Q9SKMzLjOk83QpvIYy2yuSoiHqjb9lBxctvuq1PYEfRadTup7LoRVfE3IQVDl/5IqB9rKZaodNpOm/bBKM/R057JQbfmfbfdUDfXqX+qinOzzd+bHZDc/6uezaZZce++oK3rrTzi76ywrv8BX7XidQ==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+DppController_validate
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/health-controller-check.ParamsDetails.json b/docs/api-reference/reference/health-controller-check.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/health-controller-check.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/health-controller-check.RequestSchema.json b/docs/api-reference/reference/health-controller-check.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/health-controller-check.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/health-controller-check.StatusCodes.json b/docs/api-reference/reference/health-controller-check.StatusCodes.json
new file mode 100644
index 0000000000..c495169a2d
--- /dev/null
+++ b/docs/api-reference/reference/health-controller-check.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":"Always 200 — check the body's `status`/`database` fields, this endpoint never itself errors."}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/health-controller-check.api.mdx b/docs/api-reference/reference/health-controller-check.api.mdx
new file mode 100644
index 0000000000..c5fc6a8ce3
--- /dev/null
+++ b/docs/api-reference/reference/health-controller-check.api.mdx
@@ -0,0 +1,69 @@
+---
+id: health-controller-check
+title: "HealthController_check"
+description: "HealthController_check"
+sidebar_label: "HealthController_check"
+hide_title: true
+hide_table_of_contents: true
+api: eJx1Uttu00AQ/ZXRvADSKg2FJ79F4RYklEgp5aGqms16Ei+1d5eZccFElvoR/AP/wafwJWgdt5RKPHk04zl7zpxzwJiIrfoYFiUW+I5srdU8BuVY18RXriJ3jQaTZduQEgsWF5cGmSTFICRYHPB0Os2fksSxTxkMC5zVX20ncDqdwu/bHzAAgVYE21h2TwQ2olZb2ZxsSqt2a4U2sPNUl2JAKy9AoUzRB4VAN8TgVajeATFHlgn2vUG1+0wHq4E1XppHFP6rpiGtYta7Jx3EaYUFnow4BoX45l6qkGvZa7d2FTVHwVuyTJwrGZpY3LXMWLyJ3FjFAt9/OoPIECX5K5itFnBNHRrULuWtSjUNUnzYxYynXus8WK5XC1jVVneRm7yHj8UNfzxdJgqwVhtKyyWsOJatU1iUFNTvvBucfQYuMkEa0Sbw4XwF4mIiSMR56TM5hXkMol7bvAK/fr58UYw42hlY8t4G/33AEwOzViszPkcM81iSGBgojfVIRQycW/Y25GpulfaRfZ7PVNlvW831vLYi93QNvIqubWhYmbWl1wkazH4chU8nzydTNOhiUOsUi0M+YIqijQ35hsEOjhzdh7/2w539/xzycOeF0jc9SbX1AXuDLdd5dozGw4hVUTR3Doec2Y9c931uf2mJu2NgbrLgbbbx4rJ/ELa3r8+w7/8AwlIyNg==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+HealthController_check
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-create-producer.ParamsDetails.json b/docs/api-reference/reference/identity-controller-create-producer.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-create-producer.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-create-producer.RequestSchema.json b/docs/api-reference/reference/identity-controller-create-producer.RequestSchema.json
new file mode 100644
index 0000000000..ebb6e4619b
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-create-producer.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"title":"CreateProducerDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-create-producer.StatusCodes.json b/docs/api-reference/reference/identity-controller-create-producer.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-create-producer.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-create-producer.api.mdx b/docs/api-reference/reference/identity-controller-create-producer.api.mdx
new file mode 100644
index 0000000000..c8e03f0c59
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-create-producer.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-create-producer
+title: "IdentityController_createProducer"
+description: "IdentityController_createProducer"
+sidebar_label: "IdentityController_createProducer"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9vIjcQwL/KyE85yRBIaHvhjSOplEqn0CSXPiAUDbsD+G7X3tizJBzaz9Pv0U9WjXcJJFS5i9RHnjD2eDx/fjPYrJUryCMbZy9T1VeXKVk2vBo6y95lGfn7xBMyjbxLy4S80qpAjzkx+aD644lWnh5KCvzJpSvVX8evxlOq+uxL0ipxlsmyLGFRZCaJpx1/Dc7KXEgWlKOMeFWQ6is3/UoJyzlebGNDQVYt5rQjFdgbO1dVpXcOHNdSE63YcCZiwxfGn7NTVVXvCYWzoVbd63TkI6WQeFOIdaqv7jAzaTQVZmgySjU4D7wgaPyFpXEZMgVAmJbBWAoBfJlRW/1vTpP3zv9YLHHpf8RGK3rCvIhx+DQ4v7+++PPLxc2t0q88vWGcZgQ5JgtjqeUJ0zgRDwfR3VaVVjmFgPMfnLMXNZg5D86SBC93nmBmKEtD1NgEUsB7S2fa7Z1Me2nSOpl1Tlq9j792WtNfTs9aZ7Pe7OS3Wa/bmX7cc2rovKc6PbwwoXHm0fACAvkl+VYwKUHm5mLLK4piPLce71q6w9aFqDwnRpPVYL1UUufutfx1A94WxV6nu0/fZxOCsXMNOWYz5/MGP3oqRD0knmKhYhYOtB1oexdtp/u0DUpeCE4JsoA2LRnyGsDnhhexK8jHeWfhyHkwHMBTcKVPCELiCtIwOL9udU5OPxywPGD5Lix7+1jebn9sKd2SljoKYB0DPZnAsS+aemJpgpGksYvcJigXmAOJBxLfReLZmyRC4uwsMwmH2vwIoXTKwMgER9SetwEhLWvMCEprHkqCJWYlHdriAcafh7HSinEuryxlmneZ7AmUlF7G/fFaTQk9eXmIVZPXfv7MYy4nXjh5+RUuRHiQF6qvjrEwx8vucdFIBiXnSmyaR9/GiBuhtSZtY0qDsLjVTOlm8LvzObLqqz/+upWku1CYexiMLuEbrZTe5HnBXMSQSUlcb1+XF5u0b16Dz69ArYyduYhKE9Crm9EljDJkuT3LEXsURImjq4Is3DDaFH0KdWAY6sjNmtL8AInQWTTa2vD5blTfd+RGJJuk8mDobGDDZST8n797p33YZEDDlZ+jNd+jvqBBblwaNnmAoUspaIgmNePGlKDhDr1BK6MhMs2dN7I+YPZmWrKMhxmG8GyuhnOXlDnFLYMyNSxdR1JXO95pd9udpg9hIn1IYi35z9HuBHdjPGz5gZof2AHoRVCfS5XpiY+LDI2V5JQ+k7WarbHCwohB3bpXNXxNtFoIgv2xWq+nGOiLz6pKph9K8quauqWEYioJHk8qrRaEaYR/rQQgqezYWlu3YoWIZ6VYs9dmK73ZMUgSKvhN2clOlYyuYpOcNv915LG5Ko+P0gjwUfWV0srFaMSaiHNrlaGdl7FBqlqnRBxLCcdzyF7VSvSqWUK72rFwva4lbt03slWldOMKy3dVTaqq+he5zSJT
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_createProducer
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-ospi-identity.ParamsDetails.json b/docs/api-reference/reference/identity-controller-issue-ospi-identity.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-ospi-identity.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-ospi-identity.RequestSchema.json b/docs/api-reference/reference/identity-controller-issue-ospi-identity.RequestSchema.json
new file mode 100644
index 0000000000..124daf3d60
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-ospi-identity.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-ospi-identity.StatusCodes.json b/docs/api-reference/reference/identity-controller-issue-ospi-identity.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-ospi-identity.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-ospi-identity.api.mdx b/docs/api-reference/reference/identity-controller-issue-ospi-identity.api.mdx
new file mode 100644
index 0000000000..77968ba39f
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-ospi-identity.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-issue-ospi-identity
+title: "IdentityController_issueOspiIdentity"
+description: "IdentityController_issueOspiIdentity"
+sidebar_label: "IdentityController_issueOspiIdentity"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1u2zgQx68y4FMCyF+J+xG/uUkWyAJFskmafUiDgpJGNluKVMmhE68hYA+xd+g9epQ9yWIoOXbsoGmBffSTaYofw5nfjKj/QtgKnSRlzVkuRuIsR0OK5sfWkLNao/ukvA947iu1fCYSUUknSyR0Xoxu7xLh8GtAT+9sPhejRfyrHOZiRC5gIjJrCA3xI1lVWmVxw95nbw33+WyKpeQWzSsUI2HTz5gR7+PYPFLo+WnlbB4ydMc2R7b2cbwnp8xE1InIJOHEujkP2R6QCHyQZaW5a3BwOHz1Os6xZSXN/CKuTs8tnIgcfeZUxWaLkbhoDen4wMfBHBrTCFT0UaHQwd4JooYhfP82GO4/2brf78fdefOZdEoaetlensQTPDol9TtJ2fTFCf3lpBk6rxpntxNMKFN0IhGlMqoMpRgNElHKh6Z9xCcuZNAkRoOa4+vRzXDdNam1GqXZ8s1lMxRoqnzrDprD3vjkstM/GCbw6JXDN/ugjCeUOdgCHE6UJ+RjgCKwgZyaTAn+/fsfCB6LoKGwDk4vL8DPTdZLg/4CqqysI98rpQmFzCjE6ffWfSm0vfdAU0lgEHMgC1Orc5CQ2RwhxcI6NhJXofNQBK3nkDmUhHkXxkQym7YGkQUJLSO9myZqoCWhA09K67irh1w5zEjPo92KILfowdjWCgkeOXcI4aMIptP69aMAT1hBoZxvTixNDqWdoec1PDkZfUEWxsfXZzenXbEWlA+GlH4Z2nOj51CiNMpM2Jv3iqawXGMEnKlx6/spmuiY5llMVdCy8ui7oq6Ttey+3UzJjQR8JrfuEkGKIqBnm4XlhKyo62YLX1njm7Qf9vv88/Q0N1KrvLGtkEpjnoB1rdmxFsFMWQ6PBwlp8Mqg9+CCxq743woSOmfdy8OyF5P73fjk0+XpHx9Or6634nZFMtUIZUQROw5lHjvi5pHmSEOJ3svJC/tseS3mlDXIzis5IwqFOvctX9GRzxfE1Zr5YHiQDvOsc1D0DzrDt6/7nfTV4VHnqBgWB2+K4aCfvt061LF1DpvwxELRHCYiGYF0Ha9yBG0nz0CXNWwtT7xu6Rpep7zkCZJUugHr6SJN7DbHX7bgrVAc9gfb9L1X3iszSaCUurCubPHDh4qX5woSkZba72jb0fZLtB1u0zYONGWcuLbmCaSBoGwAfCx4EbsKXey3BvasA0Wea7gNLkPwma0wgeY1fLi/w3KH5S9hOdzG8nr1ssV8RdrjjQcflKdYF1XTMVNecdDIRm4zyd8XOxJ3JP4SiUc/JBEyawqtMvKN+RFCrpSe+Na9h91JFyTkocEMIRj1NSDMpA64K4s7GH8exjoRJCesgIjldy7P8ZgFx+3R7UKkKB06Fknqu81z/qTWUiJNLWszlfWRH0lTMRI9WanebNCzvlKddn9mKioEs0dlZmnNFWPbILe0qWU5fsw3XUnb+M26UpIYid//vObo8x6fYHxxBl+QTWoDPiWqou84Ny5XEtDpMv7bks0KkqdKzVKOeU6NWeklG3JJo4lsSCIr3WNN9hisSxiNJrXx9bymISlT2Ih1G/zzq4szuNCS+KbPXtj+tOYRe+cVGrgiaXLp8qVUAGetItSUkX3IOJOqdrUuvL+5aO5mfHvjSVwl4NgaT4pCzMbv34aHI1gSkcC5m0ij/orr+QT4dpjAUpICdo1PIJrUtltTfAKtbuETOG7cr/j5mMipNBC3j7X0/tHcBE5sFkqMU8YhV9Rdd6vodwfdflszZcY1k3FgUEsZq6WRka+l8bBiHSLrwLDDGu1PHPtYWggfqFdpqQwHKLgodzSJcCtkpdgoDvhmMtwlYspZM7oVi0UqPX5wuq65+2tAN29SJDKVcqhv7+pETFHmMWUXgmnnehRfCJ1rtoWH68A2bb0c6mQ5Y5xlWNEPx96tJfbFeSztaauelg3cTt5z+ZL3YiT4aNEnMYFj30JoaSYhlnXRrMm+l4HWdcGNxI6nah9JM1+zcLFoRlzbL2jqWiTtUYj/i/quruv/AOJ/o1M=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_issueOspiIdentity
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-producer-code.ParamsDetails.json b/docs/api-reference/reference/identity-controller-issue-producer-code.ParamsDetails.json
new file mode 100644
index 0000000000..f8f85c7cc0
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-producer-code.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"producerId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-producer-code.RequestSchema.json b/docs/api-reference/reference/identity-controller-issue-producer-code.RequestSchema.json
new file mode 100644
index 0000000000..ab096399e2
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-producer-code.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Desired producer code, A-Z0-9, max 12 characters","example":"ACME"}},"required":["code"],"title":"IssueProducerCodeDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-producer-code.StatusCodes.json b/docs/api-reference/reference/identity-controller-issue-producer-code.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-producer-code.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-issue-producer-code.api.mdx b/docs/api-reference/reference/identity-controller-issue-producer-code.api.mdx
new file mode 100644
index 0000000000..c7ebaa2cb7
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-issue-producer-code.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-issue-producer-code
+title: "IdentityController_issueProducerCode"
+description: "IdentityController_issueProducerCode"
+sidebar_label: "IdentityController_issueProducerCode"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtuGzcQhl9lwCsHoE622sZ7p8gu4AKBXdtJgRpGMNodSUx2yQ0560OEfZ6+R5+sGHJlWVaQJkUvdWWaSw6H/3wz2tmVcjV5ZOPsWaEydVaQZcOPU2fZu7Ik/8GE0NCFd0WTk5+6gpRWNXqsiMkHld2slMWKVKbqbtFZobTy9LkxngqVsW9IK2NlBfJSaRXyJVWospXix1p2BvbGLlTb3qaNFPiNKx5lxUs7ubNMluUR1nVp8uj84GNwVuZ2TLvZR8pZfPZyVTYU5GkuF9lxQKuCQu5NLTZVpk4oyNmwvhnINg2T3p/D3rGGCh9gdAj5Ej3mUQ2t6AGruhSbk+nbU9W2z6W4SefeasWG46Kzl+qesFNtm7aF2tmQ/B0Ph/Jn2733WJoi3h/maEoqNDgPvCToRIQ740pkCoAwa4KxFAL4pqS++t+UJO+d/++Cb/R6Mzn5cHn6+7vTq+udQFwxzkqCCvOlsdTzhEWciIfHqPRVq1VFIeDiX87ZUQ3mzoOzJOJVzhPMDZVFiBY7ISU5vmWzGI0PZ+Mi7x3Oh4e98eufh73ZT0fHveP5eH74y3w8Gs5e71xq6rynFB5emtBd5t7wEgL5O/K9YAqC0i3El6+BtLnxc0+f4XUqJk+I0ZQJrG0jKXYv11924G1QHA9Hu/S9NSEYu5A0KOfOVx1+9FDHnMk9xWKCZdjTtqfth2g72qVt0vBScMqRBbRZw1AlAJ8KXirV5OO8s3DgPBgO4Cm4xucEIXe1lO+Ty97w8OjVHss9lj+E5XgXy+vNjy0VG9IKRwGsY6AHEzjWRZMm7kwwEjR2kdsc5SVrT+KexB8i8fibJELu7Lw0OYfkfoRQKmVgZIID6i/6gFA0CTOCxprPDcEdlg3ty+Iexu+HsdWKcSFtoDJd7yh7AuWNl7G0hzNCT15lN7fS323f8zsbzop46aRBrV2I/EgjmakB1mZwNxqs+7MwWG2a0HYgOkhPlhQTJ5+5diUMJ/7WDnZgy2W7Kd0NfnW+QlaZ+u2Pa0HBhdp8gMnFGXyiR6XX0V8y11FISZTLTSN7uoZhzXrXHEpbPHcRn07k86uLM7gokeWNWg7YISOuODivycIVoy3QF5DUYkhqzrt0fQW5EFt31vrw9v1FegeStyTZJNkIU2cDG24i9X//NT7KYB0VDed+gdZ8ifaCBnkL07AODkh0goboUjfuXAka3qM3aGU0RaaF80aeT5i9mTUs42mJITy5q+HE5U1FccukKQxLJZLApYsP+6P+sKtNmEttEqUFiApjVeo+Q6ydhw1TEJna9vulsE8pzPTAg7pEYyVAjS/lWQLuRmFtxKlRqmEJOqVVtvXtI3F3q9VSaM1u1Go1w0DvfNm2Mv25If+YaLwTkWYS+puVKkyQcaGyOZaBdhx8qsrq4LLL1FewoW/b8W4SrfAZK7vKlNJKgN36VtPetlotCYuYo6tuwTSd1bsWMxsDO78GrV7vmOQ51fzNtbfPMvniPNbyWfedp0p54fFe6hXeJ2ddvHtM0ji3UiXaRRPruEo2BQJsJDpPEXyRvPFWX5VjtUorrt0nsm37pA7L/yJM2/4DHt2RFg==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_issueProducerCode
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-list-producers.ParamsDetails.json b/docs/api-reference/reference/identity-controller-list-producers.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-list-producers.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-list-producers.RequestSchema.json b/docs/api-reference/reference/identity-controller-list-producers.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-list-producers.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-list-producers.StatusCodes.json b/docs/api-reference/reference/identity-controller-list-producers.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-list-producers.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-list-producers.api.mdx b/docs/api-reference/reference/identity-controller-list-producers.api.mdx
new file mode 100644
index 0000000000..210173004b
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-list-producers.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-list-producers
+title: "IdentityController_listProducers"
+description: "IdentityController_listProducers"
+sidebar_label: "IdentityController_listProducers"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWoB07cduNbq6TFimw2DTJpofACChqZHGXIhVy5E1q6Hn6Hn2yYig5SWNgd3P3yRQ/hv+Z+XFMboRvMCgy3p0XIhPnBToy9LjwjoK3FsOdNZEugi9ajSEKKRoVVI3EH9ntUoqAsfEuYhTZRswmE/4pMOpgGjYrMnGjrCnSHlAqY7GQ4ANQhRDwvsVIsDbeKsIICvI2GocxQmgtjoUU2jtCR2xWNY01Olk6/BzZ9kZEXWGtuEWPDYpM+PwzamKhgX0j0yvDEHz4/jTtC3wxK1IwbiWkwAdVN5a7fp2f3l2e/fnp7OpayFeeXpHKLUKtdGUcjgKqInWkzYFtj0UnRY0xqtV39tmJGpQ+gHfIwat9QCgN2iImi0MgOYffsllMZ0f5rNCjo3JyNJq9/3kyyn86PhmdlLPy6JdyNp3k73ecWvgQsE8PVSYOznw1VEHEsMYwiqZAsH7FWgYxJmAhsts+ns8ev1S6lIIMJV1nbPIUSRl7Sn7HSJ+71/MvB/D6FbxmNpnu0vfBxGjcSkKtbOlDPeCHDw2bBx0wMa9s3NO2p+1NtB3v0jZvqWKctCIGLW8J6h7Ap4KXsGswpH7v4MAHMBQhYPRt0AhR+wYlzE8vR5Oj43d7LPdYvgnL2S6W189/tlg8k1Z4jOA8AT6YSKkumr5jbaLhpJFP3GrFd4E9iXsS30TiyTdJBO1daY2m2MtPEHKljKQI4QDHqzEoKNoeM4TWmfsWYa1si/uyuIfxx2HspCC14heLMMMTh9dE1G3gdna7ETmqgIEfNd3ytZ8/8C6qkSrPb6gVJnQUVSITh6oxh+vpYfNiZh+Z4fm0lXDFrPacbYUMALNTQ5ccGr/5UCsSmfjjr2tOuY+NuYP5xTl8wUcht1muiJoUMONKn7I/xOjj1cU5XFhFfCHmdTuJTTMOPjbo4IqUK1QooPeWoA9GOZy2d6AZuGawNoYPNxf9FYYvObyIDxMsvItkqE3Q/vvP7DiDbVAlfAwr5czfyV6UwJcoCdvgwsIXGCUkSUN7kBIl3KhglOPWQhGufDA8PicKJm+J2wurYnySK+HU67bGtGTeFoa4kHA+escn4+l4MpQWpbm0cAAbH6lWqag4lTKyFQ/PSAAjAS+Z+F9Mnw4f4QMdNlYZx8ezDZbHel5uhWoM65n21WewtJSi8pF4fLPJVcRPwXYdd9+3GB57ktYciZzze7vspKhQFQnnjWAoMjHXGhtGM9VPke2WTOb+CePfz7iGqZZlPUl/xWGyPgwp9/jC9mbTz7j2X9B1nZCDCOJv0S27rvsPd9qpRg==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_listProducers
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-lookup.ParamsDetails.json b/docs/api-reference/reference/identity-controller-lookup.ParamsDetails.json
new file mode 100644
index 0000000000..4002096c30
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-lookup.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"code","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-lookup.RequestSchema.json b/docs/api-reference/reference/identity-controller-lookup.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-lookup.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-lookup.StatusCodes.json b/docs/api-reference/reference/identity-controller-lookup.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-lookup.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-lookup.api.mdx b/docs/api-reference/reference/identity-controller-lookup.api.mdx
new file mode 100644
index 0000000000..c805644e84
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-lookup.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-lookup
+title: "IdentityController_lookup"
+description: "IdentityController_lookup"
+sidebar_label: "IdentityController_lookup"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1OKzcQx19lNFcgOV+Qtoe9SwOtqHQEBQ7nAiHk7M4mPuzaiz2bQqN9nr5Hn+xovJvwkYpT7nOF8drj/4x/M3hYoavIazbOnmaY4GlGlg0/TZ1l74qC/F3h3H1docJKe10Skw+Y3KzQ6pIwwdRlhAo9PdTGU4YJ+5oUGosJVpoXqDCkCyo1Jivkp0r2BPbGzrFpbmVjqJwNFOT7eDiUHxmF1JtKVGGC17owWZQIuTYFZQqcB14QyKEUGJbGFZopgIZZHYylEMDXBfVRYeosk2Uxq6uqMGm0NPgWxPZqW5ubfaOUxV0voWHTKiPvnf/xshiNLUcV0qMuq0Kmfp0c312c/Pnl5PIK1RtPL1nPCoJSpwtjqedJZ3EiHg5iu4+NwpJC0PMfnLMVNcidB2dJglc6T5AbKrIQLXaBFATes5mNxgezcZb2DvLhQW/86edhb/bT4VHvKB/nB7/k49Fw9mnLqanzntrr4YUJnTN/GV5AIL8k3wsmIyjcXLQ0L1G6WdO19vil0luFbDjqOhGTx8TaFMfstoy0d/d2/UUHXrtD9oyHo236PpsQjJ0rKHWRO192+NFjJeYh9RRTRhdhR9uOtg/RdrhN26TmheCUahbQZjVD2QK4KXgRu4p8nHcW9pwHwwE8BVf7lCCkriIFk+OL3vDgcH+H5Q7LD2E53sby6vmPLWXPpGWOAljHQI8mcKyLpp1YmmDk0thFblMtT4kdiTsSP0Ti0bskQupsXpiUQys/QiiVMrBmgj3qz/ugIatbzAhqax5qgqUuatqVxR2M/x/GRiHrufQ9aLoOSfYESmsvY+mHZqQ9eUxubqWtee3ne21VSbxw0nvNKTIjPVOCA12ZwXI0cKEyve5MQ2GwEq8baapifETSCyGXQmxL21pOh7G41k2pbvCb86VmTPCPr1dy8XLUHUzOT+GenlCt73rBXMWwGZu7yEAXqbPL81M4LzTLs1j2bV1vXLF3VpGFS9Y20z6Dc++yOmVoQ5J3ObcPqWBXddb68Pn6vH3IyFNHNklKwdTZwIbriO6//4wPE1iHVsGZn2tr/o72ggJ5SqnuOPIwdRkFBVFSN+6kBAXX2httZTTVTHPnjXyfMHszq1nG00KHsJGr4NildUlxy6TODEs5kftoHR/2R/1hV2B0KgVGAli5wKWOpaVrntfi4RkM2IDxKpab1GN65EFVaGMlOWtfyLcWmhvUlREdI1T4BhxUmMSEuVW4cIFl9Wo104G++KJpZPqhJv/U8rSUeMzklm9WmJkg4wyTXBeBtoRtqijuXXSZtQ/P/LwW3E1qK4TFSowJokJBrvtnQnPbKFyQzmI2rbpPkzSlil9s2qrYknabZPr9REqoriUum9i9SYBo/T8FrVbtiit3T7ZpNvpYfheBTfMdecXnhA==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_lookup
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-reactivate.ParamsDetails.json b/docs/api-reference/reference/identity-controller-reactivate.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-reactivate.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-reactivate.RequestSchema.json b/docs/api-reference/reference/identity-controller-reactivate.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-reactivate.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-reactivate.StatusCodes.json b/docs/api-reference/reference/identity-controller-reactivate.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-reactivate.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-reactivate.api.mdx b/docs/api-reference/reference/identity-controller-reactivate.api.mdx
new file mode 100644
index 0000000000..87d41d4cb8
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-reactivate.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-reactivate
+title: "IdentityController_reactivate"
+description: "IdentityController_reactivate"
+sidebar_label: "IdentityController_reactivate"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1OKzcQx19lNFcgOV+Qtoe9S4FKVDoiBQ69QAg560nic3btxZ5N4UT7PH2PPlk13iV8pDqU+1zF8a7H/xn/ZuLJGn1FQbP17sxghmeGHFt+PPaOgy8KCneBdM52pZlQYaWDLokpRMxu1uh0SZihNagw0H1tAxnMONSk0DrMsNK8RIUxX1KpMVsjP1ayInKwboFNcysLY+VdpCjPx8OhfBiKebCV6MIMr3VhTRIJc20LMgp8AF4SyKYUGVbWF5opgoZZHa2jGCHUBfVRYe4dk2Mxq6uqsHmyNPgaxfZ6W5uffaWcxdkgwWHbKqMQfHj/tdwb2nZUIT3osipk6tfJyd3F6R9fTi+vUL3x9JL1rCAodb60jnqBtEkTaXMQ231sFJYUo168s89W1GDuA3hHErzSB4K5pcLEZLELpEDwI5tmND6YjU3eO5gPD3rjTz8Pe7OfDo96R/Px/OCX+Xg0nH3acurYh0Dt8fDSxs6ZvywvIVJYUehFawgKvxAtzUuUbtp4Pnv8UumtQracdJ2KyRNibYsT9ltG2rN7+/5FB167QtaMh6Nt+j7bGK1bKCh1Mfeh7PCjh0rMQx4oJY0u4o62HW0fou1wm7ZJzUvBKdcsoM1qhrIFcFPwEnYVhTTvHez5AJYjBIq+DjlBzH1FCiYnF73hweH+Dssdlh/CcryN5dXzjy2ZZ9KMpwjOM9CDjZzqom0nVjZaOTT2idtcy2ViR+KOxA+RePRDEiH3bl7YnGMrP0EolTKyZoI96i/6oMHULWYEtbP3NcFKFzXtyuIOxv8PY6OQ9UK6HrRdjyRrIuV1kLF0QzPSgQJmN7fS1rz2873GqiReeunAKh8TONI4ZTjQlR2sRgMfK9vrNrYUB2trmsErA220ROALWZfCb8vek7gOanG0m1Ld4DcfSs2Y4e9/XgkGsucdTKZn8I0eUT2d/JK5SkG0bu4TEV3czi+nZzAtNMslWdZtHXZ6Y++8IgeXrJ3RwcA0eFPnDG2A5l0G7kMuEFadtT58vp621xq5+MgiSTA49i6y5TqB/M/f48MMngKt4DwstLPfk72oQC5WqtuOAhx7Q1FBktSNOylRwbUOVjsZHWumhQ9Wnk+Yg53VLOPjQse4kavgxOd1SWnJpDaWpbjIebSOD/uj/rArNzqXciMBlKMudSo0XSP9JB6eMYFXp/wqnptkZHrgQVVo6yRd61DIs5agG9SVFS0jVPiGIlSYda37ZotbhUshMLvB9XqmI30JRdPI9H1N4bHFayXhmcmh36zR2Chjg9lcF5G2NG5KLO5ddGm3D884vdbeTWonwKUyjRmiQiEw/c/Q3DYKl6RNSrR192CS51TxiyVbxVwycpNj0/NUXnUtEdpE8U06JPP/qWe9bt+48t/INc1GHst3Udg0/wLtP/LR
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_reactivate
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-retire.ParamsDetails.json b/docs/api-reference/reference/identity-controller-retire.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-retire.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-retire.RequestSchema.json b/docs/api-reference/reference/identity-controller-retire.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-retire.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-retire.StatusCodes.json b/docs/api-reference/reference/identity-controller-retire.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-retire.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-retire.api.mdx b/docs/api-reference/reference/identity-controller-retire.api.mdx
new file mode 100644
index 0000000000..492ca5da23
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-retire.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-retire
+title: "IdentityController_retire"
+description: "IdentityController_retire"
+sidebar_label: "IdentityController_retire"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1OKzcQx19lNFcgOV+Qtoe9SwOVqHQEBQ69iBBy1pPE5+zaiz1L4UT7PH2PPlk13iV8pOKU+1zF8e6M/575zcTOGn1FQbP17tRghqeGHFt+nHrHwRcFhdtAbAOhwkoHXRJTiJjN1uh0SZihNagw0F1tAxnMONSk0DrMsNK8QoUxX1GpMVsjP1ZiETlYt8SmuRHDWHkXKcrz8XAoH4ZiHmwlmjDDa11YkwTCQtuCjAIfgFcEsihFhnvrC80UQcO8jtZRjBDqgvqoMPeOybG41VVV2Dx5GnyN4nu9rc3Pv1LOstkggWHbKqMQfPjxa7k3tL1RhfSgy6qQqV8nx7cXJ398Obm8QvVmp5es5wVBqfOVddQLpE2aSIuD+O5jo7CkGPXyB+tsRQ0WPoB3JMErfSBYWCpMTB67QAoA7/k0o/HBfGzy3sFieNAbf/p52Jv/dHjUO1qMFwe/LMaj4fzT1qamPgRq08MrG7vN/GV5BZHCPYVetIag8EvR0rxEadbG83nHL5XeKGTLSdeJuDwm1rY4Zr/lpM3d2/cvOvBaC7EZD0fb9H22MVq3VFDqYuFD2eFHD5W4hzxQKhhdxB1tO9o+RNvhNm2TmleCU65ZQJvXDGUL4KbhJewqCmneO9jzASxHCBR9HXKCmPuKFEyOL3rDg8P9HZY7LD+E5Xgby6vnH1syz6QZTxGcZ6AHGzn1RdtO3NtoJWnsE7e5loPEjsQdiR8i8ehdEiH3blHYnGMrP0EonTKyZoI96i/7oMHULWYEtbN3NcG9LmratcUdjP8fxkYh66XcetB29yOxiZTXQcZyG5qTDhQwm93Iteb1Pt+7VJXEKy83r8rHBI1cmjIc6MoO7kcDHyvb6xa1FAdra5rBxriNkgh7IedSuG2ZexLVwSwb7KZUN/jNh1IzZvj7n1eSflnvFibnp/CNHlE9ZXzFXKXgWbfwiYQuXmeX56dwXmiWw7HYbSU5vbF3VpGDS9bO6GDgPHhT5wxtYBZd5e1DLvBVnbc+fL4+b48zcuARIyksmHoX2XKdAP7n7/FhBk8BVnAWltrZ78lfVCAHKtUtRwGm3lBUkCR1405KVHCtg9VORlPNtPTByvMJc7DzmmU8LXSMG7kKjn1el5RMJrWxLE1F8tFufNgf9Yddm9G5tBkJoKS51KnBdBfoJ/HwjAdsMvwqlpsCZHrgQVVo66RE61DIs5acGerKio4RKnxDDyrMuut6cn+jcCXUZTNcr+c60pdQNI1M39UUHlus7iUsc0n2bI3GRhkbzBa6iLSlb9NSce+iK7N9eMbote5uUjsBLbVlzBAVCnnpf4XmplG4Im1SYa27B5M8p4pfmGw1b6nATV2dn6V2qmuJziaCb8oguf9PPet1+8aV/0auaTbyWL6Lwqb5F2eV6sA=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_retire
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-suspend.ParamsDetails.json b/docs/api-reference/reference/identity-controller-suspend.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-suspend.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-suspend.RequestSchema.json b/docs/api-reference/reference/identity-controller-suspend.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-suspend.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-suspend.StatusCodes.json b/docs/api-reference/reference/identity-controller-suspend.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-suspend.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-suspend.api.mdx b/docs/api-reference/reference/identity-controller-suspend.api.mdx
new file mode 100644
index 0000000000..668a6b329d
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-suspend.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-suspend
+title: "IdentityController_suspend"
+description: "IdentityController_suspend"
+sidebar_label: "IdentityController_suspend"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1OKzcQx19lNFcgOV+Qtoe9S4FKVDoiBQ69QAg560nic3btxZ6lcKJ9nr5Hn6wa75IAqTjlPlcYe2f89/g3g4cV+oqCZuvdmcEMzww5tvx07B0HXxQU7mIdK3IGFVY66JKYQsTsZoVOl4QZWlkKdF/bQAYzDjUptA4zrDQvUWHMl1RqzFbIT5VYRA7WLbBpbsUwVt5FirI+Hg7lh6GYB1uJKMzwWhfWJIUw17Ygo8AH4CWBbEqR4cH6QjNF0DCro3UUI4S6oD4qzL1jcixudVUVNk+eBl+j+F5ta/Ozr5SzHDZIZNi2yigEH378We4NbR9UIT3qsipk6tfJyd3F6R9fTi+vUL056SXrWUFQ6nxpHfUCaZMm0uYgvvvYKCwpRr34wT5bUYO5D+AdSfBKHwjmlgoTk8cukELAez7NaHwwG5u8dzAfHvTGn34e9mY/HR71jubj+cEv8/FoOPu0dahjHwK118NLG7vD/GV5CZHCA4VetIag8AvR0rxE6aaN5+bEL5XeKmTLSdepuDwh1rY4Yb/lpL27t99fdOC1FmIzHo626ftsY7RuoaDUxdyHssOPHitxD3mglDG6iDvadrR9iLbDbdomNS8Fp1yzgDarGcoWwHXBS9hVFNK8d7DnA1iOECj6OuQEMfcVKZicXPSGB4f7Oyx3WH4Iy/E2llebP7ZkNqQZTxGcZ6BHGznVRdtOPNho5dLYJ25zLS+JHYk7Ej9E4tG7JELu3bywOcdWfoJQKmVkzQR71F/0QYOpW8wIamfva4IHXdS0K4s7GP8/jI1C1gvpetB2DZLYRMrrIGPphmakAwXMbm6lrXl9zne7qpJ46aX3qnxM1EjXlOFAV3bwMBr4WNlet6ulOFhZ0ww21m2cRNoLQZdCbkvds6wOZzliN6W6wW8+lJoxw9//vBIAZMM7mEzP4Bs9oXq+8yVzlcJn3dwnFrqInV9Oz2BaaJbnsdhtXXP6Yu+8IgeXrJ3RwcA0eFPnDG1o5l3u7UMu+FWdtz58vp62Dxp58oiRpBYcexfZcp0Q/ufv8WEGzyFWcB4W2tnvyV9UIE8q1W1HAY69oaggSerGnZSo4FoHq52MjjXTwgcr6xPmYGc1y/i40DGu5So48XldUjKZ1MaylBW5j/bgw/6oP+wKjc6l0EgA5Z5LnUpM10I/i4cNILC54lfBXOcg0yMPqkJbJ1lah0LWWnZuUFdWhIxQ4Rt+UGGWOvZn/7cKlwJedoOr1UxH+hKKppHp+5rCUwvWgwRmJtd9s0Jjo4wNZnNdRNoSuC6ruHfRpdo+bEB6Lbyb1E5QS6UZM0SFwl7630Jz2yhckjYpuVbdwiTPqeIXJlsFXLJwnVrT81RSdS3hWYfwTSIk9/+pZ7Vqv7jy38g1zVoey++isGn+BWvJ7RM=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_suspend
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-validate.ParamsDetails.json b/docs/api-reference/reference/identity-controller-validate.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-validate.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-validate.RequestSchema.json b/docs/api-reference/reference/identity-controller-validate.RequestSchema.json
new file mode 100644
index 0000000000..d0581f3eb5
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-validate.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"title":"ValidateCodeDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-validate.StatusCodes.json b/docs/api-reference/reference/identity-controller-validate.StatusCodes.json
new file mode 100644
index 0000000000..0fbae6ed8a
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-validate.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/identity-controller-validate.api.mdx b/docs/api-reference/reference/identity-controller-validate.api.mdx
new file mode 100644
index 0000000000..af32663385
--- /dev/null
+++ b/docs/api-reference/reference/identity-controller-validate.api.mdx
@@ -0,0 +1,69 @@
+---
+id: identity-controller-validate
+title: "IdentityController_validate"
+description: "IdentityController_validate"
+sidebar_label: "IdentityController_validate"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQgF9lwFMWoH+SuO3GN6+TAilQxE2y2YMRBCNpZHMrkQo5cuIafp6+R59sMZQcO3GRdose7Ytpipzfb8ajlXIVeWTj7GWmhuoyI8uGl2Nn2buiIP+wwMJkyKS0qtBjSUw+qOH0XitPjzUF/uSypRqu4k/jKVND9jVplTrLZFkeYVUVJo16el+Ds7IX0jmVKCteVqSGyiVfKWXR48UqNhTkaeoy2jkV2Bs7U+u13lE4bU7da8WGCzl215o9dhmds1PrdXMjVM6GRvCg35evjELqTSW2be8ZZyFHU1CmwXngOUHrLSyMK5ApAEJSB2MpBPB1QV31v7lM3jv/XyOjFT1jWcUofBqdP1xf/Pb54uZW6Tee3jAmBUGJ6dxY6njCLG5E5SCyu2qtVUkh4Owf9OxFDXLnwVmS4JXOE+SGiixEiW0gBbj3ZGbHg5NkkKWdk7x/0hl8/LHfSX44Peuc5YP85Kd8cNxPPu45NXbeU5MenpvQOvNkeA6B/IJ8J5iMoHAzseXvGNp6vGvpDlkXIvKcGE3RgPVaSJO7t+evW/C2KA76p/v0jWqeSwWmyEJeUjOUJgRjZy8Iih6oyMd9Z+HIeTAcwFNwtU8JQuoq0jA6v+70T04/HLA8YPldWA72sbzdtj/KtqRljgJYx0DPJnBslKbZWJhgJGnsIrcpyl/JgcQDid9F4tm7JELqbF6YlENjfoRQOmVgZIIj6s66gJDVDWYEtTWPNcECi5oObfEA47+Hca0V40ymXmXaCVnuvHbm/dm5JJ47GbErFyIbyHM1VD2sTG9x3HOhMp1WtqHQ27nZRKIduQOltTe8vBE2G64SQk/+BVhxot3S7eJn50tkNVS/fLmVFIuyBxhNLuF3Wiq9yeqcuYoBkgK43s72F5skbxh+mcG1MjZ3EYw2fFc3k0uYFMi586Wo2Mt5PHF0VZGFG0aboc9g4l1WpwxNCPO2ED9AKixWrbQu/Ho3aaYbmX/kktQZjJ0NbLiOPP/15+B0CJtUaLjyM7TmjygvaJD5SrfqyIO8HAQN0aR23ZoSNNyhN2hlNUammfNGno+YvUlqlvW4wBBezNVw7tK6pHhlVGeGpcdI6hrH+93jbr/tOphK15FYCw4lxn5jMSZvYzxsQYIdHF5F86UimZ65VxVorGSl9oU8axibKqyMWHKstHrDmWxvRN9rNRc2h1O1WiUY6LMv1mvZfqzJLxv+FhKURFI9vV9rNSfMhL3pSglKUtGxpXZuxawovBbz9trrWm9ujNKUKn737P1O+UyuYnNM2nfOsgHS45M0AHxSQyVexvDE6oh7K1WgndWxMapGpny+Aa3vKLs=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+IdentityController_validate
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-list.ParamsDetails.json b/docs/api-reference/reference/inventory-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..91b3148849
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"productId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-list.RequestSchema.json b/docs/api-reference/reference/inventory-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-list.StatusCodes.json b/docs/api-reference/reference/inventory-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-list.api.mdx b/docs/api-reference/reference/inventory-controller-list.api.mdx
new file mode 100644
index 0000000000..1980734ddf
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: inventory-controller-list
+title: "InventoryController_list"
+description: "InventoryController_list"
+sidebar_label: "InventoryController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMCyJ9x241urpMWLrBImmTTQxAEtDiyuEuRCjnyJjX0PH2PPlkxlNZ24kW2uftkmh/DP4e/GXO8Fq5CL0k7O1ciFXO7QkvOP8+cJe+MQf9gdCCRiEp6WSKhDyK9WwsrSxSpqLxTdUZzJRLh8bHWHpVIydeYCG15gqRCJCJkBZZSpGtBzxUvDOS1XYqmueeFoXI2YODx8XDIHwpD5nXFykQqRJOIyfcGbqXRKuqHXGqDKgHngQoEVoOBYKWdkYQBJCzqoC2GAL422BeJyJwltMRmZVUZnUVLg8+Bba/3RbvFZ8yiMzz7jXQrGb13/sfTMqdw3wOJwCdZVoa7fp2ePVyd//np/PpGJK9Oek1yYRBKmRXaYs+jVLEjbg5su89eKjEEufzBPnteg9x5cBbZeaXzCLlGo0K02DmS+XjLphpNxouJynrjfDjuTT78POwtfjo57Z3mk3z8Sz4ZDRcf9g41c95jez1U6NAd5qumAgL6Ffpe0ArBuCVraXYZu2v9uT3xrtL7RJCmqOucTZ4hSW3OyO0Zae/u9fyrjsh2RRPpG+3T91GHoO0ygVKa3Pmyww+fKjYPmUeFlrQ04UDbgbZ30XayT9u0poJxyiQxaIuaoGwB3CS8iF2FPvY7C0fOg6YAHoOrfYYQMldhAtOzq95wfHJ8wPKA5buwnOxjebP9sUW1JU05DGAdAT7pQDEv6rZjpYPmSyMXuc0kPzMOJB5IfBeJp2+SCJmzudEZhVZ+hJAzZSBJCEfYX/ZBgqpbzBBqqx9rhJU0NR7S4gHG/w9jkwiSS66KhP5WPvGigFntNT3HcmmB0qMX6d09FzwvD/pG0VUiFY4LsyW2NRgVIhUDWenBajToiq8wWG/KsGaw1cAS2E8sbUfPNZPbUvdNVYczH7HrSrrGb86XkkQq/vjrhgFwodIPML2cwxfkHbo7L4iq6D5tcxdZ6Dx2cX05h0sjiZ/HvG7vmuOMo4sKLVyTtEp6BZftcWAen895F3vHkDF+VWetDx9vL9sHDT95eBGHFsycDaSpjgj/+8/kJO3s0HMCF34prf472gsJ8JMq6bZDDzOnMCQQJXXtTkpI4FZ6LS23ZpJw6bzm8SmR14uauD0zMoSN3ATOXFaXGJdMa6WJ0wrfR3vwYX/UH3aJRmacaNiBlQtUyphiuhJ7gwds+YCOjxeu3EQg4RMNKiO15RitveGxlp07ISvNMkZtCopnE4lIdwv5FxgXLhCvW68XMuAnb5qGux9r9M8tWCt2zIKv+24tlA7cViLNpQm4J3GTVsXRVRdqx7AF6aX0rlNaRi2mZv4vIBHM3u5/D819k4gCpYohtu7Gp1mGFe2s3MvjHIubEPv9nBOrrNlNG1e+Codo/buq1ut2xo37grZpNiKJv7PApvkPyu36Dw==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+InventoryController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-upsert.ParamsDetails.json b/docs/api-reference/reference/inventory-controller-upsert.ParamsDetails.json
new file mode 100644
index 0000000000..91b3148849
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-upsert.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"productId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-upsert.RequestSchema.json b/docs/api-reference/reference/inventory-controller-upsert.RequestSchema.json
new file mode 100644
index 0000000000..32608ec6d6
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-upsert.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string"},"onHand":{"type":"number","default":0},"reserved":{"type":"number","default":0},"allocated":{"type":"number","default":0},"quarantined":{"type":"number","default":0},"damaged":{"type":"number","default":0},"inTransit":{"type":"number","default":0},"unit":{"type":"string","default":"EA"},"lowStockThreshold":{"type":"number"},"manualOverride":{"type":"string","enum":["PRE_ORDER","BACKORDER","DISCONTINUED"]},"visibility":{"type":"string","enum":["PUBLIC","PARTNER_ONLY","PRIVATE"],"default":"PRIVATE"},"quantityDisplayMode":{"type":"string","enum":["EXACT","RANGE","BOOLEAN","HIDDEN"],"default":"EXACT"}},"required":["locationId"],"title":"UpsertInventoryDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-upsert.StatusCodes.json b/docs/api-reference/reference/inventory-controller-upsert.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-upsert.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/inventory-controller-upsert.api.mdx b/docs/api-reference/reference/inventory-controller-upsert.api.mdx
new file mode 100644
index 0000000000..3885a1723c
--- /dev/null
+++ b/docs/api-reference/reference/inventory-controller-upsert.api.mdx
@@ -0,0 +1,69 @@
+---
+id: inventory-controller-upsert
+title: "InventoryController_upsert"
+description: "InventoryController_upsert"
+sidebar_label: "InventoryController_upsert"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWFFz4jYQ/isaPeVmTHAS2t7xRoD2aO8CBZK2k2Eywl5Ad7LkSGsSyvj39H/0l3VWNmBCLsnN9JEnhLRafbv6duXdNTcpWIHS6F7Mm7ynl6DR2FXbaLRGKbB3WerAIg94KqxIAME63rxdcy0S4E2eWhNnEfZiHnAL95m0EPMm2gwCLjUJCFzwgLtoAYngzTXHVUobHVqp5zzPJ8VGcHhp4hVJPNUTGY2gkZZEmioZecT1L85omjtQbaZfIPKQLdmHEhytKhNtTT2AEXCjPwpdXdJZMgXLAx7DTGQKeTPMCasDu4TXBYXyB75B8j4TVmiU+g2ysUjE/A1yUo+t0E7iq5KZ3hMqHVIR4t0W+UeZhxGa6Ot4YcEtjHoGQx7wROhMqP4SrJUxPKcXdJbw5i0fDLt3/WGnO+QBv2y1f9uMO71Ru3817l1ddzt8kgd8KZ2cSiVx9aK668tPvTYP+KA1HF91h3f9q09/0d9h76Y17vJJ1aLNZOF8jRJXHelSJVafzcuou3+22mMe8GHr6pcuIe/3P3VbVzzgH3udTvdq/5xCOs+rsXFbJeIk4ChR0VHXPtC2IdhBw/O82OpSo11B4vMwpJ8YXGRlSlp4k5MdjecWboSSsT+LzYRUEAfMWIYLYGXIsaU0SiA4Jtg0c1KDc8xmCk75/xZ3YK2xr4tF3/L8o0hS76HLVudu2P39ujsae35WLR2hmCpgiYgWUkPNgoj9hD+cke5TT09wTsxfOefAa2xmLDMayHmJscBmElTsvMbSkc8llarO+KxxPm3EUe18Fp7XGu9/DGvTHy4+1D7MGrPzn2aNs3D6/sCotrEWiuvBhXSlMQ8SF8wnIVtzMgamzJywPGGZ9+fO4irSCuu6pLIDKKQqGLevpLi7p/LDkpE7jjbCs0P2fZbOST0PWCLUzNikpB88pqSeRRZi0CiFcke2Hdn2XWy7OGRbK8MF0cm/uQGbZsiSgoDbhOdpl4L180azE2OZRMcsOJPZCJiLTAoBa3WGtfD84t2RlkdafhctG4e0HO8eW4h3TIsNOKYNMniUDn1elMWE/9xRwNB43kaCPsOPTDwy8buY+OFFJrLI6JmSEboCvichZUqHAoGdwOn8lAkWZwXNgGVa3mfAlkJlcEyLRzK+nYx5wFHMqWfA5aa2oU0Oosz6mu52zacgLFjevJ3kk6eGvtiUSAAXhloXaVb0KHDBm7wuUllfntXL5oSrr7dtiry+Q0EgyFMEroJoRNwteLfBVRKajCyngnLws7GJoFLv1z/GRAHjUnnHWoMe+wp0QnnrC8TUO5ACZLhrd3Q3JNhvT+xYsulKhNXOQ7jXXQifdBDCSpcg3OsEhJtqn0r6Zyv68LCC3yvUq7X4tor+RhG9qX4Jwsz4ECiJ0h8NemygBFJVQM46YLeXOOmnoNkIhY6FjdmguEPW81XDrEw571hEUZeW2k7Z55tB8R1HX3q0iTIKaxvtUGLmI/fffxoXzVIPrgLWt3Oh5d9enwsYfUkG5XFgWdvE4ALmIZXjEooL2I2wUmgatQXC3FhJ6y1EK6cZ0rithHNbuAHrmChLwG9pZbFEyqZEwsLw8PTsNCzzq4govxJrUuMwET6zln23bVSwXViwbVjsOXObehAesZ4qITVdSmYVrRUhc8tFKgnIWZF7vXU84M1qf28vfhfGIe1br6fCwbVVeU7T9xnYVRFPS3LNlC78ds1j6Wgc8+ZMKAcHELfvCT8ZljnmHdvFzz70clJoijD/JlETJOAUctWWZE7towWI2OeWdbneLo6qjUnLbv/BM5YHmx2tKIIUX5SdVHLR4JreoGnZzUyKYLDigfKseCigGm+5TzJ+bs2V0PPMvz+8UEkXLzK6ne0NPkk+3qhnnbFeFxJj8xV0nm99g/Sf/JLn/wHLgH7n
+sidebar_class_name: "put api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+InventoryController_upsert
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-create.ParamsDetails.json b/docs/api-reference/reference/locations-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-create.RequestSchema.json b/docs/api-reference/reference/locations-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..b6d9f17a9a
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["WAREHOUSE","STORE","DISTRIBUTION_CENTER","FACTORY","SERVICE_CENTER","PICKUP_POINT","OFFICE"]},"country":{"type":"string"},"region":{"type":"string"},"postalCode":{"type":"string"},"city":{"type":"string"},"address":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"timezone":{"type":"string"}},"required":["name","type"],"title":"CreateLocationDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-create.StatusCodes.json b/docs/api-reference/reference/locations-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-create.api.mdx b/docs/api-reference/reference/locations-controller-create.api.mdx
new file mode 100644
index 0000000000..b5b0377b3c
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: locations-controller-create
+title: "LocationsController_create"
+description: "LocationsController_create"
+sidebar_label: "LocationsController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9zGjcQwL+KRk/OzIGxTZuEN4LxlLYxFLAzHcbj0d0toEQnnaUVscPc5+n36CfrrO7gsKFOM9NHnrjTSqv989OivTU3OViB0uhByjv8d5OEF9czGq1RCux9YkEg8IjnwooMEKzjndldxC08eHD4waRPvLMOr9JCyjtoPUQ8MRpBI4lEnitZaj797IymMZcsIRP0hE858A438WdIkPaxZBRKcCTVIoOdWQ6t1AteRNXAS0HEQfuMd2b8U3fc/2V4M+nziE+mwzH9Xg4m0/Hgw810MLy+7/Wvp/0xj/hVtzcdjv+kef3x7aDXr0WjQe+3m9H9aDi4nvKID6+uBr0+vyvIPa/RPh00zcJCll7uiXLjUKieSQ87lUg8rFKkqQXnDsqUQIn+mUbtsxhsEBq9+Hcpygy+GX3ImCLaSemszEMV9TtaiIpm9wIdG24u0fCiKJe63GhX5vC8dUY/KbjEyhxDbDht32619gW3Qsk0qGNzIRWkETOW4RJYRRxbSaMEgmOCxd5JDc4x6xU0+f+GHVhr7PenJQcTGXF4FFkeAvShe3k/7v9x058QQM89naCIFbBMJEupoWFBpGEgbM5Id5OilIFzYvGdffaixubGMqOBgpcZC2wuQaWuyYvt0aUz/5rO9Kx9HrfTpHE+b5032u9+bjXiny7eN97P2/Pzt/P2WSt+t+dUz1gLZXpwKV3lzFeJS+bArsA2nEyBKbMgW15QFuJZe7xr6Q50fVJ5CSikKol7rqTM3cv544rImtH2ISw/SuekXkQsE2pubFbhB485qWeJhRQ0SqHckbYjbT9E28U+bV2PS8IpEUigxR5ZVgK4LXgBuxxsGDeanRjLJDpmwRlvE2AuMTlErHs5brTOL94csTxi+UNYtvexnNZ/tpDWpKUGHNMGGTxKh6EuynJgJZ2kpKEJ3CaCro5HEo8k/hCJ718lkSVGz5VM0JXmBwipUjoUCOwEmosmEyz1JWbAvJYPHthKKA/HsniE8b/DSJ2RWFCfy9WmJaZFDhJvQ4s2W/MYhAVLvXBx99LRVxvpDHBpqN2mZjA01rjkHX4qcnm6Ojutd6QNKSpVw73ZfUKcloxtbKjgJYeqoah6uDI2E8g7/NdPU0q3cbm8Z93RgH2Bp01D1+FLxDwEiw7DuO7s+5uEbzrxmoVq5W6fvW2K61mbXrge2W2B69Gy863ftw1vPVT3ua1nfW1rt4/d6YulnpsAcZXq4WQ0YCMlkO71FII9PsOMk2EOmk1Q6FTYlI2sSX2CbBDu/fOqaLxhCZ2bvNLWZB9vR+VNjO5qtIhqAusZ7cjocPb+/qt90an04FPEhnYhtPxWJjtidBeMqu3AMgqQi1gwqXquTHERuxVWCk1PPYGwMFaSvItoZeyRnntKOLc1N2KXJvEZhCVdn0qkekholY63mmfNVlUhRUIVsqg+VmRC7yR/yzWrwWZbsJ8Fc1s8EB7xNFdCakqKt4pkJfMzLnJJhpxRendP2pKORmfG1+tYOLixqiho+MED4UWnYUUhiCmxM/oeswSRhtO45gQ21ZpQ7BtTsoKmK0/W7BX+Itqs6CYJ5Pjq3Lud0zsahrIdV9+/shJoK74S9eIrfeKIuMlLl+gDGY2tuRJ64UPJ5qVOirTwFI5tyF6c4eBVJRL6acfC9bqcMTVfQBcFjypXkN55cVcUxT/jvMtu
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+LocationsController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list-inventory.ParamsDetails.json b/docs/api-reference/reference/locations-controller-list-inventory.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list-inventory.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list-inventory.RequestSchema.json b/docs/api-reference/reference/locations-controller-list-inventory.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list-inventory.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list-inventory.StatusCodes.json b/docs/api-reference/reference/locations-controller-list-inventory.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list-inventory.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list-inventory.api.mdx b/docs/api-reference/reference/locations-controller-list-inventory.api.mdx
new file mode 100644
index 0000000000..5db52c0a73
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list-inventory.api.mdx
@@ -0,0 +1,69 @@
+---
+id: locations-controller-list-inventory
+title: "LocationsController_listInventory"
+description: "LocationsController_listInventory"
+sidebar_label: "LocationsController_listInventory"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0F+J2250c520SNFF0iSbHoIgoMWRzV2KVMiRN6mh5+l79MmKobS2Ey92N3efTJGa4X+GP45JrYSvMCgy3p1rkYk/fZ4e4tQ7Ct5aDA/WRDp3S3Tkw7OQolJBlUgYosjuVsKpEkUmjBZSBHysTUAtMgo1SmGcyESlaCGkiPkCSyWylaDnii0iBePmomnu2TBW3kWMPH40HPKPxpgHU7EckQnRSDH+2sCtskYn0VAoY1FL8AFogcBqMBIsjbeKMIKCWR2Nwxgh1Bb7QorcO0JH7FZVlTVt+IOPkX2vdkX72UfMibMQOHNkWskYgg/ffy33GnczIAU+qbKy3PXr5PTh6uyvD2fXN0K+ivSa1MwilCpfGIe9gEqnjjQ5sO8+Z6nEGNX8O/PsZA0KH8A75OSVPiAUBq2OyWOXSCbkWz71aHw0G+u8d1QMj3rjdz8Pe7Ofjk96J8W4OPqlGI+Gs3c7QU19CNguDy1M7IL5bGgBEcMSQy8ajWD9nLU024zdtfncRLyt9F4KMpR0nbHLUyRl7Cn5HSft2r1+/6ojsrVoEn2jXfremxiNm0solS18KDv88Kli95AH1OjIKBv3tO1pexNtx7u0TWpaME65IgZtVhOULYDrgpewqzCkfu/gwAcwFCFg9HXIEWLuK5QwOb3qDY+OD/dY7rF8E5bjXSxvNn+2qDekaY8RnCfAJxMp1UXTdixNNLxo5BO3ueKDxp7EPYlvIvHkmyRC7l1hTU6xlZ8g5EoZSRHCAfbnfVCg6xYzhNqZxxphqWyN+7K4h/HHYWykIDXn65CwXy5QbBQxr4Oh53RPmqEKGER2d88XnpeB/si1q0RaeL6jzTHBw7eqTAxUZQbL0WA972BldDMwW4ZtqljdlqRrhrcF74uwjmiOsuuSXeM3H0pFIhN//H3DDPhYmQeYXJ7DJ+QZumVfEFUpg8YVPuHQJe3i+vIcLq0iPiGz3c5KpzcOLip0cE3KaRU0XAav65zgPJ2gi277HULOBFadtz68v71szzR86mEj3l0w9S6SoTpR/N+/4+Os80PPEi7CXDnzT5swCXyqkt10GGDqNUYJSVLX7qRECbcqGOW4NVWEcx8Mj0+IgpnVxO2pVTGu5Uo49XldYjKZ1NoQVxZejzbwYX/UH3a1RuVcaziBlY9UqlRluuv1mhDYIAKMCGwz8iKp6+1I+ESDyirjeMPWwfJYy8+dUJVhQSMht9iVIkv3+Q1G91IsfCS2WK1mKuKHYJuGux9rDM8tXEtOzoyX/G4ltInc1iIrlI24I25dXcXBVbfjDmED00vRXadyHGWq0PxJQArmL317aO4bKRaodNpiq25gkudY0ZbJTh3nvbjeWb+fcWFVNWdmnb1XeyF5/6qc1ap948Z/Qtc0a3XEzyywaf4HTzv6PQ==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+LocationsController_listInventory
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list.ParamsDetails.json b/docs/api-reference/reference/locations-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list.RequestSchema.json b/docs/api-reference/reference/locations-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list.StatusCodes.json b/docs/api-reference/reference/locations-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/locations-controller-list.api.mdx b/docs/api-reference/reference/locations-controller-list.api.mdx
new file mode 100644
index 0000000000..e995d7d466
--- /dev/null
+++ b/docs/api-reference/reference/locations-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: locations-controller-list
+title: "LocationsController_list"
+description: "LocationsController_list"
+sidebar_label: "LocationsController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWoB3bcduNbq6TFim62DTJpocgCGhqZHGXIhVy5I1r6Hn6Hn2yYijFycZFtrn7ZIofw//M/DgmN8LXGBQZ785ykYnfvU4fce4dBW8thjtrIgkpahVUhYQhiuzmVoqAsfYuYhTZRkxGI/7JMepgarYgMiFaKab/NXCtrMnTPlAoYzGX4ANQiRDwvsFIsDLeKsIIChZNNA5jhNBYHAoptHeEjtisqmtrOsWHnyPb3oioS6wUt2hdo8iEX3xGnTwI7CyZTjKG4MP3p2mf47NZkYJxSyEFPqiqttz18+zk7uL0j0+nl1dCvvD0ktTCIlRKl8bhIKDKU0faHNj2kKNUYYxq+Z19dqIGhQ/gHXLwKh8QCoM2j8liH0hO6ms28/F0spjmejApRpPB9P2Po8Hih6PjwXExLSY/FdPxaPF+x6m5DwG79FBpYu/MV0MlRAwrDINocgTrl6ylF2MC5iK76eL55PFzpbdSkKGk65RNniApY0/I7xjpcvdy/kVPZLeiTfSNd+n7YGI0bimhUrbwoerxw4eazYMOmKMjo2zc07an7U20He3SNmuoZJy0IgZt0RBUHYDbgpewqzGkfu/gwAcwFCFg9E3QCFH7GiXMTi4Go8nRuz2WeyzfhOV0F8urpz9bzJ9Iyz1GcJ4AH0ykVBdN17Ey0XDSyCduteK7wZ7EPYlvIvH4VRJBe1dYoyl28hOEXCkjKUI4wOFyCArypsMMoXHmvkFYKdvgvizuYfz/MLZSkFryU0bYxzcPL4qom2BoLbKbjVigChj4udPevnT0lZdShVR6fk0tsXs4USkycahqc7gaHz5tx7txSPoH1ePWlwxpB9ijgJ5c9qbvkn3jFx8qRSITv/15xbn2sTZ3MDs/gy+4FvIxvSVRnSJlXOFT2vvgfLw8P4Nzq4hvwrxuJ6NpxsHHGh1cknK5CjmcB583muAs3ZSL/pi9A82k1b21IXy4Pu/uLny74UV8imDuXSRDTaL1n7+nR1lvh9YSPoalcuavLkIS+PYk++0wwNznGCUkSX27lxIlXKtglOPWXBEufTA8PiMKZtEQt+dWxbiVK+HE66bCtGTW5Ia4gnA+OsdHw/Fw1NcUpbmmcABrH6lSqZo4lTKyJQGeUIAehW9CuT1shA90WFtlHB/HJlge6zC5Eao2LGMs5Ldklj4Sj282CxXxU7Bty933DYZ1B9CKA7DgtN7ctlKUqPJE70YwC5mYaY01q0r1UmS7JZIx39L76ynXLNWwrK30F/gl6/2QcutntjebbsaV/4KubYXsRRB/i/a2bdt/AW58pw0=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+LocationsController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-create.ParamsDetails.json b/docs/api-reference/reference/offers-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-create.RequestSchema.json b/docs/api-reference/reference/offers-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..3f270498d3
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string"},"variantId":{"type":"string","description":"Prices a specific variant instead of the base product (ADR-015) — e.g. different sizes/colors with different prices. Never a serial/batch: pricing is always at product/variant (SKU) level, never per physical unit."},"price":{"type":"number"},"currency":{"type":"string","example":"EUR"},"minimumQuantity":{"type":"number","default":1,"description":"Decimal, not just whole units (ADR-024, Deel 17 §29) — e.g. 4.5 kg."},"salesUnit":{"type":"string","default":"EA"},"validFrom":{"type":"string"},"validUntil":{"type":"string"},"conditions":{"type":"object"}},"required":["productId","price","currency"],"title":"CreateOfferDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-create.StatusCodes.json b/docs/api-reference/reference/offers-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-create.api.mdx b/docs/api-reference/reference/offers-controller-create.api.mdx
new file mode 100644
index 0000000000..e65b931e92
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: offers-controller-create
+title: "OffersController_create"
+description: "OffersController_create"
+sidebar_label: "OffersController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4JMNrP5spYn1pkgO4BatFf+kD4YRUNxZiQmX3JCzshVhgR6id8g9cpSepBjuypItJ2mAPurB8IrkzgyH38xyZiVcgV6SdvYsFQNxnmXow8hZ8s4Y9O+VR0koElFIL3Mk9EEMbm4T4fFTiYFeu3QpBqv4U3tMxYB8iYlQzhJa4ilZFEarqKPzITjLY0HNMZf8RMsCxUC46QdUxHo8W0QaA88W3qWlIrbtYWkgr+1MVIlYSK+lfXY2ESkG5XXBasVATLxWGEBCKFDpTCtoXgZtA6FMwWVAc4SpDAiNWjgYji9a3d6LQ/jnr78B27M2pJpdhJYg6M8YOsoZ5wPcaZpvzRVRXRv+wAV61opeS9OZSlLzQZzVdgY6gDR3chlA0lpnZ23XweVv14dgcIEmARvlFPw3XwatpIHSamqzF6KuLQ/YMp+i5xlVeo9WLZ9zD97LvDA8dHp9wYtzbXVe5m9LaUnTclcguzSTpSEx6D117xiVziUb6gg+lIHgbu4MRiND48ajfgJjRAO9l/D1y9HJllP77RfwcRZ3E6TBcG01PX+mjQHidFgDYHT6xrv8G3gYnV5b0ubZaeVsqtn+sMthVSVbSN9scbj295Z3bxNBmqIvRzFcYhSNyYmqqgWFwtlQE33U7fG/x+5jc/rd7u7EO95CDB3IpDaYJuB85LSJP1hoZyRFtKdl0BZDAF8abIv/LQjRe+d/vEy5FL9P2uvh+P3F6dvr08urnQC9JDk1CLlUc22x5VGmcSAqB5Yd8cgxBDn7gZ4dr0HmPDiL7LzceYRMo0lDlNg48vkkspGZ9vpH036qWkdZ96jVf/VLtzV9cXzSOsn62dHLrN/rTl/tbGrkvMf6eGiuQ7OZmCsC+gX6VtApgnEztuUJc9Gfmx1vW7pF3CmLHCNJbWriHgupz+7p+ouGyA2j/eew/F2HoO0sgVyazPm8wQ/vCxYPymOKlrQ0YU/bnrafou14l7ZhSXPGSUli0KYlQV4D+JDwInYF+jjuLBw4D/yB8Rhc6RVCUK7ABOrvzfHhHss9lj+FZX8Xy6vNxxbTDWmpwxBvO3ivA8W8qOuBhQ6aD41c5FZJvkjvSdyT+FMknnyXRFDOZkYraiqPCCFnykCSEA7irVpCWtaYxYv4pxJhIU2J+7S4h/G/w1glguSMq37hYneA3wioSh+rxJuVmKL06LktUN0+3eW3Gwo50txxz6FwIQIjaS4GoiML3Vn0Oo0uVsXOaLoOa72XjGeN1lp7wyzvoxlKmoc3zueSi8Zf/7ziU3ah0O9hODmDj7gUyfpg50RF9BHHwMWmvXG6PudH7YgNB1tdiM1gU5R3t4vwWGk/U2j3HlW9XNo+qmy3NW0K2s3oozqW7dc2cxHY5ljPLydnMDGS+A7P+95hMa44OC/QwiVJm0qfwqTpgZzFO37WJIhDUBwjRSOtDb+/m9S3rtidmHjH8Q8jZwNpKmOcff3SPx40cmiZwLmfSas/R3khAb73JY069DByKYYEoknNc2NKSOBd7euQwEgSzpzXPD8k8npaEj+PjAzhwdwExk6VOcZXhmXKLZNEME/1xrvtXrvbZEOpqHEgE5nLmAetjETVGMOGY3jg+JEnH7IE4T11CiO15TxS+tiCqBG/EbLQbEVPJFshNecwGNyI1YpbUNfeVBUPfyrRL2v4I2hTPtKb2yoRc5RpDLuVYI45o8SU3rpiEyItJZuyk96rZP3GUCks6Ltrb7cidXIek/O06fnlMakLL+84Ack7bmQkwhUPPZU4thJG2lkZE7OoZbKPZcm+ePDXk5CNu2qmpF1uWbha1Suu3Ee0VSWSZivEv0V1W1XVv0krJZo=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OffersController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-buyer-minimums.ParamsDetails.json b/docs/api-reference/reference/offers-controller-list-buyer-minimums.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-buyer-minimums.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-buyer-minimums.RequestSchema.json b/docs/api-reference/reference/offers-controller-list-buyer-minimums.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-buyer-minimums.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-buyer-minimums.StatusCodes.json b/docs/api-reference/reference/offers-controller-list-buyer-minimums.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-buyer-minimums.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-buyer-minimums.api.mdx b/docs/api-reference/reference/offers-controller-list-buyer-minimums.api.mdx
new file mode 100644
index 0000000000..f41cf91370
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-buyer-minimums.api.mdx
@@ -0,0 +1,69 @@
+---
+id: offers-controller-list-buyer-minimums
+title: "OffersController_listBuyerMinimums"
+description: "OffersController_listBuyerMinimums"
+sidebar_label: "OffersController_listBuyerMinimums"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241uXictUiBImmTTQxAElDiyuSuRCjnyxjX0PH2PPlkxlGIn8WJ3c/fJNKkZ/Tn8zZjjtXAVekXG2TMtEnGR5+jDzFnyrijQPxQm0Md6hf7cWFPWZRBSVMqrEgl9EMndWlhVokiE0UIKj4+18ahFQr5GKYwViagULYQUIVtgqUSyFrSq2CKQN3YumuaeDUPlbMDA6+PhkD80hsybisWJRIhGism3Fm5VYXTcAuTKFKglOA+0QGA1GAiWxhWKMICCtA7GYgjg6wL7QorMWUJL7FZVVWGy6GnwObDv9a5ol37GjDgKnkNHppWM3jv/48cyp3E3AlLgkyqrgqc+Tk8erk7/+nR6fSPkm51ek0oLhFJlC2Ox51HpOBFfDuy7z1EqMQQ1/8F7dqIGufPgLHLwSucRcoOFDtFjF0hG5Hs+9WgyTic6643z4bg3+fDrsJf+cnTcO84n+fi3fDIaph92NjVz3mN7PLQwodvMV0MLCOiX6HvBaITCzVlL85Kxuzae2x2/VHovBRmKuk7Z5QmSMsUJuR0n7dm9ff6qI7K1aCJ9o136zk0Ixs4llKrInS87/PCpYveQedRoyagi7Gnb0/Yu2o52aZvWtGCcMkUMWloTlC2Am4IXsavQx3ln4cB5MBTAY3C1zxBC5iqUMD256g3HR4d7LPdYvgvLyS6WN9sfW9Rb0rTDANYR4JMJFOuiaSeWJhg+NHKR20zxZWNP4p7Ed5F4/F0SIXM2L0xGoZUfIeRKGUgRwgH2531QoOsWM4TamscaYamKGvdlcQ/jz8PYSEFqzu2QcLGDYouAWe0NrWKTlKLy6EVyd8/dzutd/lTTVSItHLdoc4zocE+ViIGqzGA5GrRvHayNbgYpW/bKrWkbKlb3QtU1w9uC96ytI5p32U3JbvC786UikYg//75hBlyozANML8/gC66EfD72BVEVI2hs7iIOXdAuri/P4LJQxDdktts56fjEwUWFFq5JWa28hkvvdJ0RnMUbdN6l3yFkTGDVeevD+e1le6fhWw8bcXbBzNlAhupI8X//To6Szg+tJFz4ubLmn+gvSOBblexehx5mTmOQECV1405KkHCrvFGWRzNFOHfe8PqUyJu0Jh7PChXCRq6EE5fVJUaTaa0NcWXh82g3PuyP+sOu1qiMaw0HsHKBShWrTNdet5DAlhJgSiBiAi84eRXWTUISPtGgKpSxnLK1L3itZehOqMqwpJGQz/RKkcR2/g1K91IsXCC2Wa9TFfCTL5qGpx9r9KsWsCUHKOVjv1sLbQKPtUhyVQTckbepsOLgqsu6Q9gC9Vp2N6ksIxerNP8tIAUzGP9/aO4bKRaodMy0dbcwzTKs6IXJTi3nlNzk1x+nXFxVzbHZxO9NPkTv35SzXrdP3LgvaJtmo474Owtsmv8BMS769Q==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OffersController_listBuyerMinimums
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-for-product.ParamsDetails.json b/docs/api-reference/reference/offers-controller-list-for-product.ParamsDetails.json
new file mode 100644
index 0000000000..91b3148849
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-for-product.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"productId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-for-product.RequestSchema.json b/docs/api-reference/reference/offers-controller-list-for-product.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-for-product.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-for-product.StatusCodes.json b/docs/api-reference/reference/offers-controller-list-for-product.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-for-product.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-for-product.api.mdx b/docs/api-reference/reference/offers-controller-list-for-product.api.mdx
new file mode 100644
index 0000000000..cc3702f097
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-for-product.api.mdx
@@ -0,0 +1,69 @@
+---
+id: offers-controller-list-for-product
+title: "OffersController_listForProduct"
+description: "OffersController_listForProduct"
+sidebar_label: "OffersController_listForProduct"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMUKbBImmSzhyAIaHFkcVciFXLkJjX0PH2PPtliKK3txItNc/fJNCmO/jP8zZjjlXAVekXG2XMtEnGRZejDzFnyrijQPxQm0Jnzl97pOiUhRaW8KpHQB5HcrYRVJYpEVO36uRZSeHysjUctEvI1SmEsP6AoF1KENMdSiWQl6LnijYG8sQvRNPe8MVTOBgy8Ph4O+UNjSL2pWKBIhGikmPxo4VYVRkc3IFOmQC3BeaAcgdVgIFgaVyjCAArmdTAWQwBfF9gXUqTOElpis6qqCpNGS4MvgW2vdkW7+Rdsg+E5fGRayei9828/ljqNuxGQAp9UWRU89fv05OHq9K9Pp9c3Qr7y9JrUvEAoVZobiz2PSseJ+HJg232OUokhqMUb79mJGmTOg7PIwSudR8gMFjpEi10gGZOf2dSjyXg+0WlvnA3HvcmHX4e9+S9Hx73jbJKNf8smo+H8w45TM+c9tsdDuQmdM38byiGgX6LvBaMRCrdgLc02Y3dtPDcebyu9l4IMRV2nbPIESZnihNyOkfbsXj9/1RHZ7mgifaNd+j6aEIxdSChVkTlfdvjhU8XmIfWo0ZJRRdjTtqftXbQd7dI2rSlnnFJFDNq8JihbANcFL2JXoY/zzsKB82AogMfgap8ihNRVKGF6ctUbjo8O91jusXwXlpNdLG82P7aoN6RphwGsI8AnEyjWRdNOLE0wfGjkIrep4gvHnsQ9ie8i8finJELqbFaYlEIrP0LIlTKQIoQD7C/6oEDXLWYItTWPNcJSFTXuy+Iexv8PYyMFqQV3RcLFLop3BExrb+g59kpzVB69SO7uudt56eXbjVeJlDvu0RbY9mGUi0QMVGUGy9Gga8DCYLVuxZpBp4NlcKBY25ama0a3xe67so5n9rGbkt3gzPlSkUjEn59vmAAXKvMA08tz+IrPQn4/9JyoivEzNnMRhi5kF9eX53BZKOL7Me/bOef4xMFFhRauSVmtvIbOeziP9+esS75DSJm/qrPWh4+3l+2Nhu88vIlzC2bOBjJUR4b/+3dylHR26FnChV8oa/6J9oIEvlPJ7nXoYeY0BglRUjfupAQJt8obZXk0U4QL5w2vT4m8mdfE41mhQljLlXDi0rrEuGVaa0NcV/g8WseH/VF/2FUalXKl4QBWLlCpYo3peuwWEdgwAswInDkPG0pexHSdi4RPNKgKZSxna+0LXmsJuhOqMqxn1Baj6KSQItlu6TdA5y4Qb1qt5irgJ180DU8/1uifW7yWHJ45H/rdSmgTeKxFkqki4I6+dXUVB1ddxh3CBqeXurtJZRm4WKH5LwEpmMDtvyCa+0aKHJWOybbq1qdpihVt7dwp55yV6yz745Trq6o5Rus4vkqKaP2Hqlar9okb9xVt06xFEn9ngU3zDY9S/fE=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OffersController_listForProduct
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-mine.ParamsDetails.json b/docs/api-reference/reference/offers-controller-list-mine.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-mine.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-mine.RequestSchema.json b/docs/api-reference/reference/offers-controller-list-mine.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-mine.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-mine.StatusCodes.json b/docs/api-reference/reference/offers-controller-list-mine.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-mine.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-list-mine.api.mdx b/docs/api-reference/reference/offers-controller-list-mine.api.mdx
new file mode 100644
index 0000000000..bb1dce1723
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-list-mine.api.mdx
@@ -0,0 +1,69 @@
+---
+id: offers-controller-list-mine
+title: "OffersController_listMine"
+description: "OffersController_listMine"
+sidebar_label: "OffersController_listMine"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl91OIzcUx1/lyFes5IQkpO0yd2mgFZUQFFh6gRDyeM4k3vXYg30mSxrN8/Q99slWxzN8lFRsuc8Vxh//8/WbE3sjfI1BkfHupBCZOCtLDHHuHQVvLYY7ayKdGodCiloFVSFhiCK7uZUiYKy9ixhFthGT0Yj/FBh1MDXriUyIVorpfy1cK2uKZBVKZSwWEnwAWiIEvG8wEqyMt4owgoK8icZhjBAai0MhhfaO0BHLqrq2Riel/c+RtTci6iVWike0rlFkwuefURNHEDhaMp3LGIIPP96mfYEvdkUKxi2EFPigqtry1K+zo7uL4z8/HV9eCfkq0ktSuUWolF4ah4OAqkgTyTiw9pCzVGGMavEDO1tZg9IH8A45eZUPCKVBW8Sk2CeSq/qWZjGeTvJpoQeTcjQZTD/+PBrkPx0cDg7LaTn5pZyOR/nHraDmPgTsykNLE/tgvhpaQsSwwjCIpkCwfsG+9M6YgIXIbrp8Pkf80tNbKchQ8uuYJY+QlLFH5LdEutq93n/RE9mdaBN94236Tk2Mxi0kVMqWPlQ9fvhQszzogAU6MsrGHW072t5F28E2bbOGloyTVsSg5Q1B1QH41PASdjWGNO8d7PkAhiIEjL4JGiFqX6OE2dHFYDQ5+LDDcoflu7CcbmN59fxji8UzaYXHCM4T4IOJlPqi6SZWJhouGvnErVZ8P9iRuCPxXSQevkkiaO9KazTFzv0EIXfKSIoQ9nC4GIKCoukwQ2icuW8QVso2uGuLOxj/P4ytFKQW/JQRPj16+ERE3QRDa5HdbESOKmDgt057+zrKt95JFdLS82NqgYkYRUuRiX1Vm/3VeL83xrY4G/1b6tHwJfPZsfVovoeWA+mnZD/4zYdKkcjEH39dcZl9rM0dzM5P4AuuhXys7JKoTkkyrvSp4n1ezi7PT+DcKuJLMJ/bKmbasXdWo4NLUq5QoYDz4ItGE5ykS3LZf2EfQDNkda82hNPr8+7awhcbPsQfEMy9i2SoSaB++2d6kPU6tJZwFhbKmb+TXpTAFyfZm8MAc19glJBc6se9K1HCtQpGOR7NFeHCB8PrM6Jg8oZ4PLcqxid3JRx53VSYjsyawhA3D65HF/hoOB6O+naiNLcTTmDtI1UqNRKnUkU6DuAZBGAQoCfhX8l8+tIIH2i/tso4/habYHmto+RGqNqwI2MhX2C59JF4cbPJVcRPwbYtT983GNYdPyuOP+eq3ty2UixRFQndjWAUMjHTGmumMXVKkW03R2b8idzfj7lbqYZ9evL7FX1JvV9Sbv1Ce7Ppdlz5L+jaVsjeCeL/RXvbtu13XmWkHg==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OffersController_listMine
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-remove-buyer-minimum.ParamsDetails.json b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.ParamsDetails.json
new file mode 100644
index 0000000000..527b064793
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"buyerOrganizationId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-remove-buyer-minimum.RequestSchema.json b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-remove-buyer-minimum.StatusCodes.json b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-remove-buyer-minimum.api.mdx b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.api.mdx
new file mode 100644
index 0000000000..d06c937f70
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-remove-buyer-minimum.api.mdx
@@ -0,0 +1,69 @@
+---
+id: offers-controller-remove-buyer-minimum
+title: "OffersController_removeBuyerMinimum"
+description: "OffersController_removeBuyerMinimum"
+sidebar_label: "OffersController_removeBuyerMinimum"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241uXjsFUjRImmTTQxAEtDiyuSuRCjnyxjX0PH2PPlkxlGIncbC76aEnn0zzY/jn8McRh2vhSvSKjLOnWiTiPMvQh4mz5F2eo7/3WLglfqxW6M+MNUVVCClK5VWBhD6I5HYtrCpQJMJoIYXHh8p41CIhX6EUxopElIoWQoqQLrBQIlkLWpU8IpA3di7qWm6MzHimcz9X1vz1JOu/Wr3jgaF0NmDg9mG/zz8aQ+pNycZFIkQtxeithhuVGx0lQKZMjlqC80ALBFaDgWBpXK4IAyiYVcFYDAF8lWNXSJE6S2iJzaqyzE0aLfU+B7a93hXtZp8xJfat5x0h00hG753/frfUadz1gBT4qIoy56qP4+n95ckfn06uroV8tdIrUrMcoVDpwljseFQ6VsTJgW132UsFhqDm35lnx2uQOQ/OIjuvcB4hM5jrEC22jmTyvmVTD0bD2UinnWHWH3ZGH37ud2Y/HR13jrNRNvwlGw36sw87i5o477HZHlqY0C7mq6EFBPRL9J1gNELu5qylfs7YbePP7YqfK72TggxFXSdscoqkTD4lt2Ok2bvX/S9bIpsRdaRvsEvfmQnB2LmEQuWZ80WLHz6WbB5SjxotGZWHPW172t5F29EubeOKFoxTqohBm1UERQPgJuBF7Er0sd5ZOHAeDAXwGFzlU4SQuhIljKeXnf7w6HCP5R7Ld2E52sXyevuxRb0lTTsMYB0BPppAMS6apmJpguFNIxe5TRXfYfYk7kl8F4nH3yQRUmez3KQUGvkRQo6UgRQhHGB33gUFumowQ6iseagQliqvcB8W9zD+OIy1FKTmnGQJFxMzHhEwrbyhVUy9Zqg8epHc3nG283KVP5bLFUgLx6mfxhwJY3ZHC5GInipNbznoNTP31kbXvZiddYpmcOit38jWak7JohNZ9zO9V4x1g+ST6pb1mPc1VbIt/Op8oUgk4rc/r5kOF0pzD+OLU/iCKyGfgFgQldG3xmYugtK68/zq4hQuckV8d+ZxOwzEHgfnJVq4ImW18houvNNVSnAa79ZZezAPIWU2y9ZaF85uLprbDt+HeBCfO5g4G8hQFfn+5+/RUdLaoZWE5z4KEvi+Jdvp0MPEaQwSoqS23EoJEm6UN8pyaaII584bbh8TeTOriMuTXIWwkSth6tKqwDhkXGlDHHN4P5qF97uDbr+NQirlKMQOLF2gQsX402biDT6w5QcafiACBFuCXvh1c1YJH6lX5spYPs2Vz7mtQetWqNKwpoGQT2BLkcT3g5eEcfVbLwJ3UixcIDa1Xs9UwE8+r2uufqjQrxrwluy4GeNwuxbaBC5rkWQqD7ijehOTxcFle04PYQvay9W0lcoyijGu80OCFMxmfAfhB43/cca3XFTf1VIsUOkYHtZtz3GaYknPbOx8gDiObGLC9OT3k+sTIYWqeOM2m/vqtMYJ3pS4Xjc9rt0XtHW9UUz8nzXW9b+RT1ma
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OffersController_removeBuyerMinimum
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-set-buyer-minimum.ParamsDetails.json b/docs/api-reference/reference/offers-controller-set-buyer-minimum.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-set-buyer-minimum.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-set-buyer-minimum.RequestSchema.json b/docs/api-reference/reference/offers-controller-set-buyer-minimum.RequestSchema.json
new file mode 100644
index 0000000000..2e4f5c4375
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-set-buyer-minimum.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"buyerOrganizationId":{"type":"string"},"minimumQuantity":{"type":"number","description":"Overrides Offer.minimumQuantity for this buyer only. Decimal (ADR-024, Deel 17 §29)."}},"required":["buyerOrganizationId","minimumQuantity"],"title":"SetOfferBuyerMinimumDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-set-buyer-minimum.StatusCodes.json b/docs/api-reference/reference/offers-controller-set-buyer-minimum.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-set-buyer-minimum.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-set-buyer-minimum.api.mdx b/docs/api-reference/reference/offers-controller-set-buyer-minimum.api.mdx
new file mode 100644
index 0000000000..f286737527
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-set-buyer-minimum.api.mdx
@@ -0,0 +1,69 @@
+---
+id: offers-controller-set-buyer-minimum
+title: "OffersController_setBuyerMinimum"
+description: "OffersController_setBuyerMinimum"
+sidebar_label: "OffersController_setBuyerMinimum"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u2zgQgF9lwFMC0L/xbhvdXDsLZIEiaZJ2D0ZQUNLIZiuRKjly4zX0PH2PPtliKMV2omy7Bfbok2X+DOfnmxFHW2FLdIq0NZepiMRVlqHzM2vI2TxH99Ejvak26N5qo4uqEFKUyqkCCZ0X0WIrjCpQREKnQgqHXyrtMBURuQql0EZEolS0ElL4ZIWFEtFW0KbkHZ6cNktR1/fNRvT0xqYbXvFcTmINoSGeUmWZ6yQoPPjkreGxjmgbf8KEWFfH5pFGz7MxG3Lllsrov3cmd/SRomhsfVcpQ5o2B2tMVcTohBQp+sTpkoWw19bonE7RQ/Bf/5kAyKwDWmkPQQOwJt/0YY6JLlQOJ9P5TW84nkiYI+YwegXfv43PT/uirg89unhR/a6y91KQppy1vUUK+hwGcE5W1HUj2pfW+MY14+GIf56axb6YDIfdiQ8q12lQATKlc0wlBAsR2kDCWttcEXpQEFdeG/QeXJVjX/xv0UTnrPv5ssSm2I2yFPigijK46c10/vHm4t37i9u7TmRvScU5QqGSlTbYc6jSMBAOB5bdD8Sg92r5k3M6XgtcWIPsvMI6hExjnvogsXXkS4QeykxHk3E8SZPeOBuOe5PXvw978W9n573zbJKNX2WT0TB+3TFqZp3DJjyBysaYr5pW4NGt0fW8ThFyu/RdCoM/9xYfanqA3gWLnCMpnTfEPRXSxO75+puWyD2jk5ewfKu912YpoVB5Zl3R4ocPJYuHxGGKhrTK/ZG2I22/RNtZl7ZpRSvGKVHEoMUVQdEAuCt4AbsSXRi3Bk6sA00eHHpbuQTBJ7ZECU2hPzs9YnnE8pewnHSxvNu/bDHdk5Za9GAsAT5oT6Eu6mZgrb3moJEN3CaKr3dHEo8k/hKJ5z8kERJrslwn5Bv1A4RcKT0pQjjB/rIPCtKqwQyhMvpLhbBWeYXHsniE8b/DWEtBasktqLChZ+UdHpPKhY5tsRUxKodORIt77jCfNWw/b3MLpJXllri0PpDDbWwkBqrUg/Vo0Bw62Oq0HoTGrNc2Yp573eApVu5AqVtmt21EW9VaoNnIdki2D39YVygSkfjzrztGwPpSf4Tp9SV8xo2Qj1FfEZXBgZwgN/sm+uIRgn9peve4dHrdYc19e2YDW20Erm6vL+E6V8TXbdai2wHzipOrEg3ckjKpcilcO5tWCcFluI5nbS6fQsI4l620Prz9cN1ckPgKxZs4VWFmjSdNVUiJ798mZ1ErhzYSDs3xEviKJtvj0MHMpuglBJXa51YVL+GDcloZfpopwqV1muenRE7HFfHzLFfe79SVMLdJVWDYMq1STVymOLqN4cP+qD9sC5dKuHBxOJiZQoWS1X4faYiDPXLgkSAwB3vonjh1l9uEDzQoc6UNZ3/lcp5reFwIVWpWaCTkYyJIEYWvMc+wvJdixShHC7Hdxsrje5fXNQ9/qdBtGljX7J6Yg77YilR7fk5FlKncY0e9XbEWJzdtAp/CHs6nareDyjC+oeDzFwYpmOfw+ai+r6VYoUpD0m7biVlzRu+Ot+83dl4OtXzcMU0SLOmHa+8P0vv6KpT2uP30VIRXgnDqK5cv9bVR0gabQ+6Gsa3IlVlWoayLRiaHXVUck13cnuV0sOpFN2y3zYo7+xlNXe+8QvyfHVPX/wCZ6cM2
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OffersController_setBuyerMinimum
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-withdraw.ParamsDetails.json b/docs/api-reference/reference/offers-controller-withdraw.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-withdraw.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-withdraw.RequestSchema.json b/docs/api-reference/reference/offers-controller-withdraw.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-withdraw.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-withdraw.StatusCodes.json b/docs/api-reference/reference/offers-controller-withdraw.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-withdraw.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/offers-controller-withdraw.api.mdx b/docs/api-reference/reference/offers-controller-withdraw.api.mdx
new file mode 100644
index 0000000000..2238e10d82
--- /dev/null
+++ b/docs/api-reference/reference/offers-controller-withdraw.api.mdx
@@ -0,0 +1,69 @@
+---
+id: offers-controller-withdraw
+title: "OffersController_withdraw"
+description: "OffersController_withdraw"
+sidebar_label: "OffersController_withdraw"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtu4zYQhl9lwKsEoI9x243uXNsFUnSRNMmmF0EQ0OLI4q5EKuTIm9TQ8/Q99skWQynOwYtsc+8r0zwMf858HHO8Ea5Cr8g4e6JFIk6zDH2YOUveFQX626+Gcu3VVyFFpbwqkdAHkVxvhFUlikQYLaTweFcbj1ok5GuUwliRiEpRLqQIaY6lEslG0EPFKwJ5Y1eiaW54YaicDRh4fDwc8ofGkHpTsSaRCNFIMfnRwJUqjI7KIVOmQC3BeaAcgdVgIFgbVyjCAAqWdTAWQwBfF9gXUqTOElpis6qqCpNGS4PPgW1vdkW75WdMib3g2WNkWsnovfM/n5Y6jbsekALvVVkV3PX7dH57vvj70+LiUshXJ70gtSwQSpXmxmLPo9KxI24ObLvPXioxBLX6yT47XoPMeXAW2Xml8wiZwUKHaLFzJJPxlk09moyXE532xtlw3Jt8+HXYW/5ydNw7zibZ+LdsMhouP+wcaua8xzY8lJvQHYZxg4B+jb4XjEYo3Iq1NM8Zu279+XTi50pvpCBDUdeCTc6RlCnm5HaMtLF7Pf+8I7Jd0UT6Rrv0fTQhGLuSUKoic77s8MP7is1D6lGjJaOKsKdtT9u7aDvapW1aU844pYoYtGVNULYAbhNexK5CH/udhQPnwVAAj8HVPkUIqatQwnR+3huOjw73WO6xfBeWk10sL59+bFE/kaYdBrCOAO9NoJgXTduxNsFw0MhFblPFb4w9iXsS30Xi8ZskQupsVpiUQis/QsiZMpAihAPsr/qgQNctZgi1NXc1wloVNe7T4h7G/w9jIwWpFZdDwsXCiVcETGtv6CEWSUtUHr1Irm+42nl5yrdqrRIpd1yQaSyQMFZflItEDFRlBuvRoN1vsDG64RoreoWFPBNwwZy2jD3K6ODlA3Vdsmv84XypSCTiz38uOdwuVOYWpmcn8AUfhHyMcE5URWcZm7kY+c4/pxdnJ3BWKOLHMK/bCWqccXBaoYULUlYrr+HMO12nBCfxsZx1N+0QUoat6qz14ePVWft84QcOL+KLBDNnAxmqI7Df/pscJZ0depBw6lfKmn+jvSCBH1Cy2w49zJzGICFK6tqdlCDhSnmjLLdminDlvOHxKZE3y5q4PStUCFu5EuYurUuMS6a1NsRJhOPRHnzYH/WHXVpRKacVdmDlApUqJpSukm55gCcg4BkQL3y5vXCE9zSoCmUsX8naFzzWknItVGVYx0jIRzqlSEy8BbkLxFM2m6UK+MkXTcPddzX6hxaiNTthyaG93ghtAre1SDJVBNxRs02Y4uC8u0SH8ATNS5Vdp7KMVUy6XOVLwZzFvxOam0aKHJWOF2fTDUzTFCt6tmQnNfMN296b+eKvxeVCSKFq9sbWY6+wjxv8UNFm0864dF/QNs1WIPF31tg03wHcROWe
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OffersController_withdraw
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-accept.ParamsDetails.json b/docs/api-reference/reference/orders-controller-accept.ParamsDetails.json
new file mode 100644
index 0000000000..0b55d89c9d
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-accept.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-accept.RequestSchema.json b/docs/api-reference/reference/orders-controller-accept.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-accept.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-accept.StatusCodes.json b/docs/api-reference/reference/orders-controller-accept.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-accept.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-accept.api.mdx b/docs/api-reference/reference/orders-controller-accept.api.mdx
new file mode 100644
index 0000000000..ae1d3ab2ed
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-accept.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-accept
+title: "OrdersController_accept"
+description: "OrdersController_accept"
+sidebar_label: "OrdersController_accept"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEEtDiyuSuRWnKUJivoefoefbJiKNlO4u1u00NPPpkmxeGfMz+OOKqFK9ErMs5eaJGIS6/Rh5mz5F2eo79XaYolCSlK5VWBhD6IZFELqwoUiTBaSOHxc2U8apGQr1AKY0UiSkVrIUVI11gokdSCnkqeEcgbuxJNI7dGVt5V5cV/t3THE0PpbMDA4+PhiH80htSbkvcmEiEaKSbD4f7ArcqNjh6ATJkctQTngdYIrAYDwYNxuSIMoGBZBWMxBPBVjn0hReosoSU2q8oyN2m0NPgY2Ha9L9otP2Ia/enZ82Rayei9899/LHUa9z0gBT6qosy56+fp2f3V+W8fzq9vhHy102tSyxyhUOnaWOx5VDp2xMWBbffZSwWGoFbfWWfPa5A5D84iO69wHiEzmOsQLXaOZMK+ZVOPJuPlRKe9cTYc9ybvfhz2lj+cnPZOs0k2/imbjIbLd3ubmjnvsQ0PrU3oNvOHoTUE9A/oe8FohNytWEvznLFF68/djp8rvZOCDEVd52zyDEmZ/IzcnpE2dq+fv+qIbGc0kb6vYPnehGDsSkKh8sz5osMPH0s2D6lHjZaMysOBtgNtb6LtZJ+2aUVrxilVxKAtK4KiBXCb8CJ2JfrY7ywcOQ+GAngMrvIpQkhdiRKmZ1e94fjk+IDlAcs3YTnZx/Jm97JFvSNNOwxgHQE+mkAxL5q248EEw0EjF7lNFd9VDiQeSHwTiaffJBFSZ7PcpBRa+RFCzpSBFCEcYX/VBwW6ajFDqKz5XCE8qLzCQ1o8wPjvYWykILXiwkq4WIDxjIBp5Q09xXJricqjF8nijqudl7v855qtQFo7LutKF9oajtYiEQNVmsHDaNCuNaiNbgaxBguDuqvFmsHWSOspFvdM1DWz23K3kdYBzZvsumTX+MX5QpFIxK+/3zACLpTmHqbzC/iET0Juor4mKqMDjc1cpKHz2eX1/ALmuSK+IPO8vUDHJ44uS7RwTcpq5TXMvdNVSnARL9BZd/qOIWUAy85aH97fztsrDV96eBIfLpg5G8hQFSH+68/JSdLZoScJl36lrPkS7QUJfKmS3XLoYeY0BglRUtfupAQJt8obZbk1U4Qr5w2PT4m8WVbE7VmuQtjKlXDm0qrAOGVaaUOcWDge7caH/VF/2KUalXKqYQdyuAsVk0xXYreMwA4S2Mb3hSe3R5DwkQZlrozlQ1r5nMdafhZClYZVjITc8CpFEj8FtBjx311R3610J8WaMUwWoq6XKuAHnzcNd3+u0D+1fD2wf5Yc9UUttAnc1iLJVB5wT+o2v4qjq+7MHcOOp5db6DqVZeJijuaPAlIwgvE7Bn+Q+B9X3PinuWukWKPS8XjX3eh0E53NvL0XCOeB7fmeX8aUriqOzzaGr45hNP9VUXXdPnHjPqFtmq1G4v+ssGn+BulzNPc=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_accept
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-add-line.ParamsDetails.json b/docs/api-reference/reference/orders-controller-add-line.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-add-line.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-add-line.RequestSchema.json b/docs/api-reference/reference/orders-controller-add-line.RequestSchema.json
new file mode 100644
index 0000000000..2aaf7f0f6c
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-add-line.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"offerId":{"type":"string"},"quantity":{"type":"number","description":"Decimal, not just whole units (ADR-024, Deel 17 §29) — e.g. 4.5 kg, 10.75 m."}},"required":["offerId","quantity"],"title":"AddOrderLineDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-add-line.StatusCodes.json b/docs/api-reference/reference/orders-controller-add-line.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-add-line.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-add-line.api.mdx b/docs/api-reference/reference/orders-controller-add-line.api.mdx
new file mode 100644
index 0000000000..c59b61962c
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-add-line.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-add-line
+title: "OrdersController_addLine"
+description: "OrdersController_addLine"
+sidebar_label: "OrdersController_addLine"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4JMNUL9WmnjfFMkFXDSwYzvpg2AE1HJWorNLrslZ/1RYoIfoHXKPHKUnKYa7luQoSGqgj3oyzZ/h/Hwz4uxKuBK9IuPsqRaJOPMafZg4S97lOfpPSuvfjUUhRam8KpDQB5HMVsKqAkUijBZSeLytjEctEvIVSmGsSESpaCmkCOkSCyWSlaDHkk8E8sYuRF1fNwcx0FunH3nHt3JSZwkt8ZIqy9ykUdHeTXCW53ZEu/kNpsS6ejaLDAZedVmGns3b0UGK20pZMvS4tWirYo5eSKExpN6UfKdIxBRTU6hcgnUEN1UguF+6HKGyhgIcjKcXnf5wJGGKmMPgNXz9Mjw+hH/++huwu+jCqPsKPi8kDPrd16+g6Iq63nbcbK3llk7XUpChnJUaax1jw8GYkhN13ZwPpbOhMXPYH/Cf51qzjaN+f3fho8qNjv6ETJkctQTngZYIbVDgzrhcEQZQMK+CsRgC+CrHrvjfIoPeO//zbanTuBs9KfBBFWV0z9vx9NPFyfsPJ5dXO4G7JDXPEQqVLo3Fjkel40S8HFh2l71UYAhq8ZN7drwGmfPgLLLzCucRMoO5DlFi68jvkbctUw9Gw/lIp51h1h92Rm9+6Xfmr46OO8fZKBu+zkaD/vzNjlET5z024aGlCa0x94aWENDfoe8EoxFytwi7qEV/bize1nQLuRMWOUVSJm+Iey6kid23+y9aIjeMjr6H5TsTgrELCYXKM+eLFj98KFk8pB41WjIqD3va9rS9iLajXdrGFS0Zp1QRgzavCIoGwHXBi9iV6OO8s3DgPHBd9xhc5VOEkLoSJTRl/uhwj+UeyxdhOdrF8mrzY4t6Q5p2GOIjAx9MoFgXTTNxZ4LhoJGL3KaKn2h7EvckvojE4x+SCKmzWW5SCo36EUKulIEUIRzEx6wCXTWYxffvbYVwp/IK92VxD+N/h7GWgtQixOYn9p18ImBa+diQzVZijsqjF8nsmrvF51b+oFUtkJaO29nShUgMt6KJ6KnS9O4Gveay3sroupdzX8NtanQM67KlwyWj2mD2pEnLL9vUTsl28KvzhSKRiN/+uOKIu1CaTzA+P4XP+CjkU5CXRGX0F+fDxab/PXmK+Va/uiFi06b2a+6vMxe5ab17dnl+Cue5In5K85U7SMQdB2clWrgkZbXyGs6901VKcBqf2lmbp4eQMqplK60L7z6eN48ffh7xIU5DmDgbyFAVcf/6ZXSUtHLoUcKZXyhr/ozyggR+fsn2OvQwcRqDhKhSO25VCRI+Km+U5dFEES6cN7w+JvJmXhGPJ7kKYa2uhKlLqwLjkXGlDXEJ4lA2hve7g26/LUoq5aLEvmcuChXLUfsdo6EJNjiB0hpanp75cp2uhA/UK3NlLCd05XNea1CbCVUa1mMg5BPbUiTxY0lD3LUUS4YzmYnVaq4CfvB5XfP0bYX+seHwjp0x5xDPVkKbwGMtkkzlAXe0WpddcXDRpuIhbLh7rm07qSyTGUs3fyuQglGNH3Xq61qKJSod02/VLkyaOzpXfHxzcKfM1/LpxDhNsaQf7r3eStjzs1ik5+0HoSIWd+HVPRcidd8o6aLNMS3j3Erkyi6qWKBFI5ODrCoOxTpc36RrtOq7blitmh1X7jPaul57hfh/dkxd/wv9yZFO
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_addLine
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-create-draft.ParamsDetails.json b/docs/api-reference/reference/orders-controller-create-draft.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-create-draft.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-create-draft.RequestSchema.json b/docs/api-reference/reference/orders-controller-create-draft.RequestSchema.json
new file mode 100644
index 0000000000..e759509419
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-create-draft.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shippingAddress":{"type":"object"},"notes":{"type":"string"}},"title":"CreateDraftOrderDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-create-draft.StatusCodes.json b/docs/api-reference/reference/orders-controller-create-draft.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-create-draft.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-create-draft.api.mdx b/docs/api-reference/reference/orders-controller-create-draft.api.mdx
new file mode 100644
index 0000000000..1b7de8c4e2
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-create-draft.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-create-draft
+title: "OrdersController_createDraft"
+description: "OrdersController_createDraft"
+sidebar_label: "OrdersController_createDraft"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1uIjkQgF+l5FNGaggQdnfCjYGslJVGYZNM9oBQZNoFeKbb7pSrkzCon2ffY59sVe4mZMIo2Uh75ITxT/1+LlxslC+QNFvvzo0aqAsySGHkHZPPMqTblFAzjkkvWCWq0KRzZKSgBtNZogjvSgz8yZu1GmziV0to1ICpxESl3jE6liVdFJlNo6Ljr8E7mQvpCnMtI14XqAbKz79iGvWQmMUWQ9y3skVh3XJoDGEI+weqRDnP+HwlMFm3VFWVKLacydRo50p0c8xeVZXsIAyFd6EW0Ot05cNgSMkWYrAaKFHR73T2F250Zk10CxbaZmgS8AS8QmhiA/fWZ5oxgIZ5GazDEIDKDNvqfwsQEnl6e1vqDe6HKFH4qPMihujTcHx7efbnl7Ora5W88PSK9TxDyHW6sg5bhNrEiagcRHZbopRjCHr5hp69qMHCE3iHErzcE8LCYmZClNgEUvh8Tabp9nvzvklbvUWn1+p//LXTmv9ycto6XfQXvd8W/W5n/nHPqZEnwjo9vLKhcebB8goC0j1SK1iDkPml2NIYUyM+reO58/i5pbMddmcicoysbVYT96OQOncv9182RO4Y7f8My882BOuWCeQ6W3jKG/zwsRDxkBIadGx1Fg60HWh7F20n+7QNS14JTqlmAW1eMuQ1gE8FL2JXIMV57+DIE1gOQBh8SSlCSH2BCQzHl61O7+TDAcsDlu/Csr+P5fXuxxbNjjTjMYDzDPhoA8e6aOuJexusJI195DbV8tI5kHgg8V0knr5KIqTeLTKbcqjNjxBKpQysGeEI28s2aDBljRlC6exdiXCvsxIPZfEA43+HUVocvZSOTPnYvsmJgGlJltdqMN2oOWpCkpatmr308o2OL0deeekMCx/qDpBXaqCOdWGP77vHjULRJxFp2sKt8ithtOZra0IDrjjTTCXN4HdPuWY1UH/8dS2p9qGwtzCcnMM3XKtkm90VcxEDJRfhctd/nm2T/bN+cdcgPjWGibJu4SM2TXAvribnMMk0y0taFO8REXccXRTo4Iq1M5oMTMibMmU4jy/tRXNNP0AqpBaNtDZ8vpnUbx95HckhuYUw8i6w5TLS/s/f/ZNBI4fXCVzQUjv7PcoLCcjrK2nUIcHIGwwJRJOacWNKSOBGk9VORiPNuPRkZX3ITHZesoxHmQ7hydwExj4tc4xHhqWxLBVIElo73ml3252mJulUapJkQJDIdaxGTseU1jDBjiaoaYItTj/E8+nGMj7ycZFp6yQvJWWyVpM2VbqwYktXJc/wXgmNg6nabOY64BfKqkqm70qkdc3gvYRgLomdzqpErVCbeAU2SnCS2x3La+taTJDtWSmm7JXaKtmeGKYpFvzq3tmzCzO5iIVy3vw3kscCq0g/SDHQD/KnQqJ8DEW8IXFuozLtlmUskqqWKZHWpcTiKV4vbk70qlnSbv3Mws2m3nHtv6GrKpU0rrB8V9Wsqqp/Aa/lL5k=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_createDraft
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-get.ParamsDetails.json b/docs/api-reference/reference/orders-controller-get.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-get.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-get.RequestSchema.json b/docs/api-reference/reference/orders-controller-get.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-get.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-get.StatusCodes.json b/docs/api-reference/reference/orders-controller-get.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-get.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-get.api.mdx b/docs/api-reference/reference/orders-controller-get.api.mdx
new file mode 100644
index 0000000000..a417f7914a
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-get.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-get
+title: "OrdersController_get"
+description: "OrdersController_get"
+sidebar_label: "OrdersController_get"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtu4zYQhl9lwKsEoI9x243uXCctUmCRNMmmF0EQ0OLI4q5EKuTIjSvoefoefbJiKMU5eLvb3PvKNA/DnzMfxxw3wlXoFRlnz7RIxLnX6MPCWfKuKNDfr5CEFJXyqkRCH0Ry2wirShSJMFpI4fGhNh61SMjXKIWxIhGVolxIEdIcSyWSRtCm4hWBvLEr0bZ3vDBUzgYMPD4dj/lDY0i9qViOSIRopZh9beBGFUZH0ZApU6CW4DxQjsBqMBCsjSsUYQAFyzoYiyGArwscCilSZwktsVlVVYVJo6XR58C2m13RbvkZ0+gFz84i00lG753//rTUadz1gBT4qMqq4K6f5yf3l6e/fzq9uhbyzUmvSC0LhFKlubE48Kh07IibA9sespdKDEGtvrPPjtcgcx6cRXZe6TxCZrDQIVrsHclQfMumnsymy5lOB9NsPB3MPvw4Hix/ODoeHGezbPpTNpuMlx92DrVw3mMXHspN6A/zp6EcAvo1+kEwGqFwK9bSvmTstvPn84lfKr2TggxFXads8gRJmeKE3I6RLnZv51/2RHYr2kjfZJe+jyYEY1cSSlVkzpc9fvhYsXlIPWq0ZFQR9rTtaXsXbUe7tM1ryhmnVBGDtqwJyg7AbcKL2FXoY7+zcOA8GArgMbjapwghdRVKmJ9cDsbTo8M9lnss34XlbBfL6+cfW9TPpGmHAawjwEcTKOZF03WsTTAcNHKR21Tx82JP4p7Ed5F4/E0SIXU2K0xKoZMfIeRMGUgRwgEOV0NQoOsOM4TamocaYa2KGvdpcQ/j/4exlYLUissh4WLNxCsCprU3tIlF0hKVRy+S2zuudl6f8j/KrBIpd1yGPVVdlItEjFRlRuvJqNtn1Bjdcm0VvcECXmx8xXx2bD1t30PLB+m7ZN/4xflSkUjEb39cc5hdqMw9zC/O4AtuhHyKbE5URScZm7kY8d4v51cXZ3BRKOJHMK/bCWaccXBeoYUrUlYrr+HCO12nBGfxkZz1N+wQUoas6q0N4ePNRfds4YcNL+ILBAtnAxmqI6j//D07Sno7tJFw7lfKmr+ivSCBH06y3w49LJzGICFK6tu9lCDhRnmjLLcWinDlvOHxOZE3y5q4vShUCFu5Ek5cWpcYl8xrbYiTB8ejO/h4OBmO+3SiUk4n7MDKBSpVTCR9Bd1xAM8gQBf5V27c3jHCRxpVhTKWb2HtCx7rILkVqjIsYSLkE5BSJCaCn7tAPKVplirgJ1+0LXc/1Og3HT9rPv+So3rbCG0Ct7VIMlUE3FGzzZHi4LK/N4fwzMtrlX2nskxUzLNc2EvBiMV/ENq7VooclY53pekH5mmKFb1YspON+VJt78uvp5weVc2u2LrrDe7R+lflNE0349p9Qdu2W3XE31lg2/4Lq4DdVg==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_get
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-list.ParamsDetails.json b/docs/api-reference/reference/orders-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-list.RequestSchema.json b/docs/api-reference/reference/orders-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-list.StatusCodes.json b/docs/api-reference/reference/orders-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-list.api.mdx b/docs/api-reference/reference/orders-controller-list.api.mdx
new file mode 100644
index 0000000000..b1e117e0e2
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-list
+title: "OrdersController_list"
+description: "OrdersController_list"
+sidebar_label: "OrdersController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu4zYQhl9lwKssIDu247Yb3blOWqTAImmSTS+CIKCokcVdidQOR25cQ8/T9+iTFUMph8btbnPvqzA8/HP6NCa3yjdImq13Z7lK1TnlSGHpHZOvKqT7ygZWiWo06RoZKaj09i5RhKHxLmBQ6VbNJhP5k2MwZBvRUqlSXaLm/7ZwoyubR4tQaFthnoAn4BKB8EuLgWFtfaUZA2jI2mAdhgDUVjhWiTLeMToWWd00lTVR6fBTEO2tCqbEWsuINw2qVPnsE5oYAUmkbHuXkcjTt7cZn+OLXYHJupVKFD7ouqlk6sfFyf3l6a8fT6+uVfIq0ivWWYVQa1NahyNCnceJaBxEeyxZqjEEvfqGnZ2sQeEJvENJXu0JobBY5SEqDomUin5NM5/OZ9k8N6NZMZmN5u+/n4yy746OR8fFvJj9UMynk+z9TlBLT4R9ebi0YQjmd8slBKQ10ijYHKHyK/FlcMYS5iq97fP5HPFLT+8SxZajX6cieYKsbXXCfkekr93r/ZcDkf2JLtI33aXvgw3BulUCta4KT/WAHz40Ig+GMEfHVldhT9uetjfRdrRL26LlUnAymgW0rGWoewCfGl7ErkGK897BgSewHIAw+JYMQjC+wQQWJ5ejyezo3R7LPZZvwnK+i+X1848t5s+k5R4DOM+ADzZw7Iu2n1jbYKVo7CO3RsvdYE/insQ3kXj8VRLBeFdU1nDo3Y8QSqcMrBnhAMerMWjI2x4zhNbZLy3CWlct7tviHsb/D2OXKNYrecooHx88ciKgacnyRqW3W5WhJiR563R3r6P8rzdSjVx6eUStsH8ycalSdagbe7ieHg6GxI5kYnhHPRq9EjZ7rh5ND8BKEMNUMgx+8lRrVqn65bdrKbEPjb2HxcUZfMaNSh6rWjI3MUHWFT5We8jJ+dXFGVxUmuUCLOd2Chl3HJw36OCKtcs15XBBPm8Nw1m8IBfD1/UOjADWDGpj+HBz0V9Z5FIjh+TjgaV3gS23EdK//pwfpYMObxI4p5V29o+oFxKQS1MymEOCpc8xJBBdGsaDKyGBG01WOxktNePKk5X1BTPZrGUZLysdwpO7CZx409YYjyza3LI0DqlHH/hkPB1PhlaijbQSSWDjA9c6NhGnY0V6BuAZAhgg+Ecenz4wxgc+bCptnXyCLVWy1gNyq3RjxYepSl7QWPrAsrjdZjrgR6q6Tqa/tEibHp21hJ5JQW/vukSVqPNI7FYJBalaGIONuBQbpEp3e6Kg/QTtz6fSpHQrPj35/Qq8qD4sabd5ob3d9juu/Wd0XaeSwQmW/1V313Xd3/rSn58=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-reject.ParamsDetails.json b/docs/api-reference/reference/orders-controller-reject.ParamsDetails.json
new file mode 100644
index 0000000000..0b55d89c9d
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-reject.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-reject.RequestSchema.json b/docs/api-reference/reference/orders-controller-reject.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-reject.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-reject.StatusCodes.json b/docs/api-reference/reference/orders-controller-reject.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-reject.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-reject.api.mdx b/docs/api-reference/reference/orders-controller-reject.api.mdx
new file mode 100644
index 0000000000..639d9a4b11
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-reject.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-reject
+title: "OrdersController_reject"
+description: "OrdersController_reject"
+sidebar_label: "OrdersController_reject"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmEtv4zYQgP/KgKcEoJ9x241urpMCKbCIm2TTgxEEtDiyuCuRWnKUJivo9/R/9JcVQynOw9vdpoeefDLNx3AeH0ccNsJV6BUZZ8+0SMS51+jDwlnyrijQ33r8iCkJKSrlVYmEPohk1QirShSJMFpI4fFzbTxqkZCvUQpjRSIqRbmQIqQ5lkokjaCHilcE8sZuRNvKrZCNd3V19t8l3fDCUDkbMPD4dDzhH40h9aZi20QiRCvFbDzeHbhWhdHRA5ApU6CW4DxQjsDaYCC4M65QhAEUrOtgLIYAvi5wKKRInSW0xGJVVRUmjZJGHwPLbnaVdutHf3r2PJlOZfTe+e9PS53GXQ9IgfeqrAru+nl+cntx+tuH08srIV9ZeklqXSCUKs2NxYFHpWNH3BxY9pC9VGIIavOdfXa8Bpnz4Cyy80rnETKDhQ5RYu9IJuxbMvVkNl3PdDqYZuPpYPbux/Fg/cPR8eA4m2XTn7LZZLx+t2PUwnmPXXgoN6E35g9DOQT0d+gHwWiEwm1Yl/Y5Y6vOn08WP9f0RgoyFPU6ZZEnSMoUJ+R2hHSxez3/oieyW9FG+r6C5XsTgrEbCaUqMufLHj+8r1g8pB41WjKqCHva9rS9ibajXdrmNeWMU6qIQVvXBGUH4DbhRewq9LHfWThwHgwF8Bhc7VOEkLoKJcxPLgbj6dHhHss9lm/CcraL5dXTxxb1E2naYQDrCPDeBIp50XQddyYYDhq5yG2q+K6yJ3FP4ptIPP4miZA6mxUmpdCpHyHkTBlIEcIBDjdDUKDrDjOE2prPNcKdKmrcp8U9jP8exlYKUhsurISLBRivCJjW3tBDLLfWqDx6kaxuuNp5aeU/12wlUu64rKtc6Go4ykUiRqoyo7vJqNtr1BjdjmINFkZNX4u1o62QzlOs3DOlLpndjrtH1Xqg2ci+S/aNX5wvFYlE/Pr7FSPgQmVuYb48g0/4IORj1HOiKjrQ2MxFGnqfnV8uz2BZKOILMq/bCXSccXBeoYVLUlYrr2Hpna5TgrN4gc7603cIKQNY9dKG8P562V1p+NLDi9hsWDgbyFAdIf7rz9lR0suhBwnnfqOs+RLlBQl8qZL9duhh4TQGCVGlvt2rEiRcK2+U5dZCEW6cNzw+J/JmXRO3F4UKYauuhBOX1iXGJfNaG+LEwvHoDB8PJ8Nxn2pUyqmGHcjhLlVMMn2J3TECT5DANr4vPLk9goT3NKoKZSwf0toXPNbxsxKqMqzFRMhHXqVI4lNAhxH/fV7Ux51upMgZw2QlmmatAn7wRdty9+ca/UPH1x37Z81RXzVCm8BtLZJMFQF3VN3mV3Fw0Z+5Q3ji6aUJfaeyTFzM0fwoIAUjGN8x+EHif9zx0T/tTStFjkrH4930o/M0xYqerdv5gHAe2J7v5XlM6arm+Gxj+OoYRvFfVappuhlX7hPatt3qSPyfNWzbvwF1GDU4
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_reject
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-remove-line.ParamsDetails.json b/docs/api-reference/reference/orders-controller-remove-line.ParamsDetails.json
new file mode 100644
index 0000000000..ee7dfe90c9
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-remove-line.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"lineId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-remove-line.RequestSchema.json b/docs/api-reference/reference/orders-controller-remove-line.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-remove-line.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-remove-line.StatusCodes.json b/docs/api-reference/reference/orders-controller-remove-line.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-remove-line.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-remove-line.api.mdx b/docs/api-reference/reference/orders-controller-remove-line.api.mdx
new file mode 100644
index 0000000000..d7077740c2
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-remove-line.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-remove-line
+title: "OrdersController_removeLine"
+description: "OrdersController_removeLine"
+sidebar_label: "OrdersController_removeLine"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241uru0CKXaRNMmmhyAIaHFkc1ciFXLkJhX0PH2PPlkxlOJ8eJFteujJJ9OkOPxz5scRR7VwJXpFxtkTLRJx6jX6MHOWvMtz9LceC7fBj8aikKJUXhVI6INIrmthVYEiEUYLKTzeVcajFgn5CqUwViSiVLQWUoR0jYUSSS3ooeQZgbyxK9E0cmskNxZP/ruhG54YSmcDBh4fD4f8ozGk3pS8PZEI0Ugx+dbAlcqNjk6ATJkctQTngdYIrAYDwca4XBEGULCsgrEYAvgqx76QInWW0BKbVWWZmzRaGnwJbLveFe2WXzAldqdn55NpJaP3zn//sdRp3PWAFHivijLnrp+n89vzxW+fFxeXQr7a6QWpZY5QqHRtLPY8Kh074uLAtvvspQJDUKvvrLPjNcicB2eRnVc4j5AZzHWIFjtHMmRv2dSjyXg50WlvnA3HvcmHH4e95Q9Hx73jbJKNf8omo+Hyw86mZs57bMNDaxO6zfxhaA0B/QZ9LxiNkLsVa2meM3bd+vNpx8+V3khBhqKuBZucIymTz8ntGGlj9/r5847IdkYT6Rvt0vfJhGDsSkKh8sz5osMP70s2D6lHjZaMysOetj1t76LtaJe2aUVrxilVxKAtK4KiBXCb8CJ2JfrY7ywcOA+GAngMrvIpQkhdiRKm8/PecHx0uMdyj+W7sJzsYnn59LJF/USadhjAOgK8N4FiXjRtx8YEw0EjF7lNFV9X9iTuSXwXicdvkgips1luUgqt/AghZ8pAihAOsL/qgwJdtZghVNbcVQgblVe4T4t7GP89jI0UpFZcVwkXazCeETCtvKGHWG0tUXn0Irm+4Wrn5S7fLtsKpLXj6k5jjtQWcrQWiRio0gw2o0G74qA2uhlwIRYGdVuPNVx0RTexsmeKLhjcFrpHXR3NvMOuS3aNX5wvFIlE/Pr7JcffhdLcwvTsBL7ig5CPIV8TldF7xmYuotA57PTi7ATOckV8O+Z5O1GOTxyclmjhgpTVyms4805XKcFJvD1n3dE7hJTpKztrffh0ddbeZ/jGw5P4ZMHM2UCGqkjw339NjpLODj1IOPUrZc2f0V6QwDcq2S2HHmZOY5AQJXXtTkqQcKW8UZZbM0W4ct7w+JTIm2VF3J7lKoStXAlzl1YFxinTShvirMLxaDc+7I/6wy7PqJTzDDuwdIEKFTNMV163gMATIdASAh0iL9y5PYSE9zQoc2UsH9PK5zzWsnMtVGlYykjIR2KlSOK3gIgQ/+uK+hsp1i4QT6rrpQr42edNw913FfqHlqwNe2bJ8b6uhTaB21okmcoD7ujbplVxcN4dtUN4Iuml7q5TWWYtpmb+FiAFwxe/XvBniP9xxc4rzU0jxRqVjoe67ganaYolPZu289rg07890fPFx8XlQkihKo7KNnKvTmBc4Juq6rp94tJ9Rds0W5HE/1lj0/wDItAyhQ==
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_removeLine
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-submit.ParamsDetails.json b/docs/api-reference/reference/orders-controller-submit.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-submit.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-submit.RequestSchema.json b/docs/api-reference/reference/orders-controller-submit.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-submit.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-submit.StatusCodes.json b/docs/api-reference/reference/orders-controller-submit.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-submit.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-submit.api.mdx b/docs/api-reference/reference/orders-controller-submit.api.mdx
new file mode 100644
index 0000000000..0391adfaff
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-submit.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-submit
+title: "OrdersController_submit"
+description: "OrdersController_submit"
+sidebar_label: "OrdersController_submit"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEElDiyuCuRCjlKkzX0PH2PPlkxlOJ8eLvb3H0yTWpGf878OOZ4I1yNXpFx9kyLRJx7jT4snCXvyhL9bWjSypCQolZeVUjog0hWG2FVhSIRRgspPN41xqMWCfkGpTBWJKJWVAgpQlZgpUSyEfRYs0Ugb+xatO0NG4ba2YCB16fjCX9oDJk3NSsSiRCtFLPxeHfhWpVGR92QK1OiluA8UIHAajAQ3BtXKsIACtImGIshgG9KHAopMmcJLbFbVdelyaKn0efAvje7ol36GbMYBc/xItNJRu+d//FjmdO4GwEp8EFVdclTv85Pbi9O//h0enkl5JudXpJKS4RKZYWxOPCodJyILwf2PeQoVRiCWv/gPTtRg9x5cBY5eJXzCLnBUofosQ8kc/E9n3oym6YznQ2m+Xg6mH34eTxIfzo6Hhzns3z6Sz6bjNMPO5taOO+xSw8VJvSb+ctQAQH9PfpBMBqhdGvW0r5kbNXF83nHL5XeSEGGoq5TdnmCpEx5Qm7HSZe7t89f9ER2Fm2k7xtYfjQhGLuWUKkyd77q8cOHmt1D5lGjJaPKsKdtT9u7aDvapW3eUME4ZYoYtLQhqDoAtwUvYlejj/POwoHzYCiAx+AanyGEzNUoYX5yMRhPjw73WO6xfBeWs10sr55/bFE/k6YdBrCOAB9MoFgXTTdxb4LhpJGL3GaKbxh7EvckvovE4++SCJmzeWkyCp38CCFXykCKEA5wuB6CAt10mCE01tw1CPeqbHBfFvcw/n8YWylIrbkdEi62TWwRMGu8ocfYJKWoPHqRrG6423m9y//utCqkwnEzVrvQdV5UiESMVG1G95NR967Rxuh2tLXpAsNaXmi4ZFQ7zJ6U9Pzynvop2Q9+c75SJBLx+59XnHEXanML8+UZfMFHIZ+SXBDVMV7G5i4mvw/R+eXyDJalIr4Ps91OXuMTB+c1WrgkZbXyGpbe6SYjOIv35bw/bIeQMW91720IH6+X3Q2G7zhsxGcJFs4GMtREZv/5e3aU9H7oUcK5XytrvkZ/QQLfoWT/OvSwcBqDhCipH/dSgoRr5Y2yPFoowrXzhtfnRN6kDfF4UaoQtnIlnLisqTCazBttiOsI56Pb+Hg4GY77yqIyriwcQM5upWJN6ZvpDgl4ZgK2+X0Vye2JI3ygUV0qY/lMNr7ktQ6XlVC1YRUTIZ/wlCKJ/Xrv9UaKgglLVmKzSVXAT75sW56+a9A/dizdcyxSzvBqI7QJPNYiyVUZcEfWtnSKg4v+OB3CMzuv5faTyjJdsfxyvy8F4xb/WGhvWikKVDoeoU2/MM8yrOmFyU6R5rO2PUPL81g2VcNB2QbuDfvR/Tf1bDbdE1fuC9q23coj/s4K2/Zfj9boBg==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_submit
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-update-status.ParamsDetails.json b/docs/api-reference/reference/orders-controller-update-status.ParamsDetails.json
new file mode 100644
index 0000000000..0b55d89c9d
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-update-status.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"groupId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-update-status.RequestSchema.json b/docs/api-reference/reference/orders-controller-update-status.RequestSchema.json
new file mode 100644
index 0000000000..71f1ef409c
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-update-status.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["PROCESSING","FULFILLED","PARTIALLY_FULFILLED","COMPLETED","CANCELLED"]}},"required":["status"],"title":"UpdateOrderGroupStatusDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-update-status.StatusCodes.json b/docs/api-reference/reference/orders-controller-update-status.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-update-status.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/orders-controller-update-status.api.mdx b/docs/api-reference/reference/orders-controller-update-status.api.mdx
new file mode 100644
index 0000000000..bf74e946ec
--- /dev/null
+++ b/docs/api-reference/reference/orders-controller-update-status.api.mdx
@@ -0,0 +1,69 @@
+---
+id: orders-controller-update-status
+title: "OrdersController_updateStatus"
+description: "OrdersController_updateStatus"
+sidebar_label: "OrdersController_updateStatus"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtuGzcQhl+F4JUDUAfbapvsnSIrgQqnViU5RWEYBrUcSUx2yQ05dOwK+zx9jz5ZMeTqYCtImqLola5EccnhzM9vZzlcc1uBk6itGSme8SunwPmBNehsUYC7C5WSCFOUGDwXvJJOloDgPM9u1tzIEnjGteKCO/gUtAPFM3QBBNeGZ7ySuOKC+3wFpeTZmuNjRTM8Om2WvK7F1sjS2VCN/r2l2zQRPL626pFGPLeTW4NgkB7Jqip0HuPufPDWUN+BaTv/ADlS1I5UQg0+jktiHLggOJhQ8uyGjydXg+F0OvrlLRf8zfXlm9Hl5fCCCz7uT2aj/uXl73f7vYOrd+PL4Sy1+78MhrH/tq73pbjZrHsrOGosaOHruDlxz96SemmbLtDyuk6zfWWNT26fdbv0o8DnTlcUOc84rwXvfenBe1loFfVhC6kLUIJZx3AFrBGZ3WtbSATPJJsHrw14z1wooM3/M6XBOeu+PSy3Cr64HQ+yrKJQr/sXd5Phr9fD6YyLZ5FOUc4LYKXMV9pAy4FUsSMuzsh2m1QqwXu5/MY6B6qxhXXMGiDxSuuALTQUykeLjZD03n3Npjrtnc17Km+dLbpnrd7LH7ut+Q/nr1qvFr3F2U+L3ml3/vIgqIF1DtL24Er7JpjPGlfMg7sH1/JaASvsknx5BlrUcxfxvqd78A3J5AWg1EUi7qmRtHfPx08aIneM9rqnh/S9095rsxSslMXCurLBDx4qMs9yBwoMaln4I21H2r6LtvND2voBV4RTLpFAmwdkZQJwm/AidhW42G8NO7GOafTMgbfB5cB8bisQrH8xaXXPzl8csTxi+V1Y9g6xnO0+tqB2pCkLnhmLDB60x5gXdeq4117TpqGN3OaSTnBHEo8kfheJr75KIsutWRQ6R5/cjxBSpqTTKbATaC/bTDIVEmbAgtGfArB7WQQ4psUjjP8cxlpwlEsqNLmNZSnN8JAHp/Exlp9zkA4cz25uqfp7GuW3KtkScGWp5K1CpIbKy4x3ZKU796edtGBnrVXdiYWp76ybArXu+I2NJBd5uOfZlABO8G38a6imSJsu0TTeWFdK5Bn/+bcZcWB9pe9YfzxiH+GRi83WrxCrqCK9JZNdlTvckLCrSveLz5pq54WNDDVKX03HIzYuJNKxmhY6wCOOOLmqwLApSqOkU2zsrAo5slE8di+ad/YFywnbqrHWZu/ej9NBiI5KNIleSTawxqPGENH/68/eedbYwUfBrtxSGv1HtOcFo6OYaJYDxwZWgRcsutS0G1e8YO+l09JQayARltZpet5HdHoekNqDQnq/dVewC5uHEuKUflAaKR3RBqbAu+3TdrdJUDKnBEWKV9ZjKWNqai4qEllshxZLaLEtW08E3b6/CA/YqQqpDW1McAU9S9zdcFlpcuaUiw3sgmfxXiXhR393NyS7q4CV9Ujz1+u59HDtirqm7k8B3GPi8p5kmtPm36y50p7aimcLWXg4cHWbnPnJpHlhX7Adh09DaDqlIVJjgqcbBcEJ3XgpRLc7/+OKG33q21rwFUgVc8O6eTpIC7VmZGM3++AbRE6nGf08hwq/OvZ2L5GMr+kDMm8un8r44eFOfqYkKT8nR22MOyaH2LfmhTTLED8ePJkk6GQgKrbkPEsaMagvSrFepxEz+xFMXW+VQfpPutT13xB60AI=
+sidebar_class_name: "put api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrdersController_updateStatus
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-add-legal-entity.ParamsDetails.json b/docs/api-reference/reference/organizations-controller-add-legal-entity.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-add-legal-entity.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-add-legal-entity.RequestSchema.json b/docs/api-reference/reference/organizations-controller-add-legal-entity.RequestSchema.json
new file mode 100644
index 0000000000..79cf67d7b6
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-add-legal-entity.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"vatNumber":{"type":"string"}},"required":["name","country"],"title":"CreateLegalEntityDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-add-legal-entity.StatusCodes.json b/docs/api-reference/reference/organizations-controller-add-legal-entity.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-add-legal-entity.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-add-legal-entity.api.mdx b/docs/api-reference/reference/organizations-controller-add-legal-entity.api.mdx
new file mode 100644
index 0000000000..e10f754798
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-add-legal-entity.api.mdx
@@ -0,0 +1,69 @@
+---
+id: organizations-controller-add-legal-entity
+title: "OrganizationsController_addLegalEntity"
+description: "OrganizationsController_addLegalEntity"
+sidebar_label: "OrganizationsController_addLegalEntity"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtuGzcQQH9lwKcEWF2tponeFNkFXDS1YzvpgyAEo+VIYsIlN+SsYlfY7+l/9MuK4a4t2QpyAfqoJ1O8DOdyZszZrfIlBWTj3blWY3URVujM32kiTr3j4K2l8AG1/oNWaM8cG75TmSoxYEFMIarxbJ6pQJ8rivza6zs13qafJpBWYw4VZSr3jsmxLGFZWpOnG3ofo3cyF/M1FSgjvitJjZVffKSc5Z4gCrKhKKsOC9rbFTkYt1K1yK8ch7vDtUxpinkwpdynxur8+gJOBi9edAaAtlxjZwjtWci9JpG1Qf6zKhYUvnJTne2ZNmv02d0+zxQbtnJgGgiZ9nx2yl7VdSMglt7FxqJhfyB/HispWoz6/cOF92iNTq6DJRpLOgMfgNcErf9hY7xFpggIiyoaRzFCqCx11f8WBArBh+9vS+78SjzoFosy+ej15PTD1dnbd2fXNwdxumZcWIIC87Vx1AmEOk2ky1OouuKlgmLE1XfuOfAaLH0A70icV/hAsDRkdUwSW0dKNnxLph6MhouRzjvDZX/YGb180e8sfjl51Xm1HC2Hvy5Hg/7i5YFRUx8CNeHhtYmtMV8MryFS2FDoRKMJrF+JLk9YS/7cWbyv6R53ZyLylBiNbYh7LKSJ3dP9Vy2RO0ZHX8PyjYnRuFUGBdqlD0WLH92WIh7yQJocG7TxSNuRtp+i7eSQtknFa8EpRxbQFhVD0QD4UPASdiWFNO8dPPMBDEcIFH0VcoKY+5IymJxedfrDk+dHLI9Y/hSWo0Msb3b/bEnvSNOeIjjPQLcmcqqLppnYmGgkaOwTtznKg+pI4pHEnyLx1TdJhNy7pTU5x0b9BKFUysjIBM+ou+oCgq4azAgqZz5XBBu0FR3L4hHGH4exzhTjSro+5febRTkYKa+C9Ifj2VYtCIP0ULN5PX9q7A+3mQXx2ktjWvqYMEJeq7HqYWl6m0HvkQa9gnpWTnfk2ZBQE5XEd22Teq/ftdDckHivZYu4mN1OZe3gNx8KZDVWv/91I1D4WJoPMLk8h08kKrYcrJnL5FJJmatdN3x2j8V997oj5qFp3U3t9Z573a1xS5+QawNzcX15DpcWWV7hosoBTWnHs4uSHFwzOo1Bw2XwusoZztMrfdmm+HPIhfKyldaFN+8vm3eTvKzkkGQwTL2LbLhKmfLvP6OTcSuH7zJ4FM4M5OWWtddRgKnXFDNIKrXjVpWYwXsMBp2Mpsi08sHI+oQ5mEXFMp5ajPFB3QxOfV4VlI5MKm1YqpeEuDG83x10+209w1zqmcRE6CnQ7QXhkcqwQxBQa0gMwgOEj1z7kPhMt9wrLRonIaqClbWGz5nC0ohaA5U9yRJBWmXqCafzTK0F8PFMbbcLjPQu2LqW6c8VCSFC70ZctRAAZvM6U2tCnfJrqwREqSCphHduRD/ZbivR86Cc19n9iUmeU8nf3Dvfy8HLi1SMF+03niIVcRXwixQc/CIfLjLly8ZQ+Qgkc1tl0a2qVIhVI1MigpU46sGZT3IuWdUuobvb03C7bXbc+E/k6lplrSksv1U9r+v6P2k2eWY=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrganizationsController_addLegalEntity
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-get-own.ParamsDetails.json b/docs/api-reference/reference/organizations-controller-get-own.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-get-own.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-get-own.RequestSchema.json b/docs/api-reference/reference/organizations-controller-get-own.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-get-own.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-get-own.StatusCodes.json b/docs/api-reference/reference/organizations-controller-get-own.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-get-own.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-get-own.api.mdx b/docs/api-reference/reference/organizations-controller-get-own.api.mdx
new file mode 100644
index 0000000000..f1d15a8374
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-get-own.api.mdx
@@ -0,0 +1,69 @@
+---
+id: organizations-controller-get-own
+title: "OrganizationsController_getOwn"
+description: "OrganizationsController_getOwn"
+sidebar_label: "OrganizationsController_getOwn"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu4zYQhl9lwKssQB/jthvduU5apMAi2TibXgRBQFEjmbsSqZAjb1xDz9P36JMVQylHF5vm3lemeRj+M/NxRG6Fq9ErMs6eZiIRZ75Q1vwVO8LCWfKuLNHfFkhn362QolZeVUjog0iub6TwGGpnAwaRbMV0POafDIP2pmYbIhGilWL2XwNXqjRZ3AlyZUrMJDgPtELweNdgIFgbVyrCAArSJhiLIYBvShwKKbSzhJbYrKrr0uhoafQ1sO2tCHqFleIWbWoUiXDpV9TEHnh2mUwnGb13/u1p2mX4bFYgb2whpMB7VdUld/06P769OPn85WR5KeQrT5ek0hKhUnplLA48qix2xM2BbQ85ShWGoIo39tmJGuTOg7PIwaucR8gNllmIFvtAcmp/ZDObzKbpLNODaT6eDmYffx4P0p8OjwZH+Syf/pLPJuP0445TC+c9dumhlQm9M98NrSCgX6MfBJMhlK5gLb0Y4zETyXUXzyePnyu9kYIMRV0nbPIYSZnymNyOkS53r+df9ER2K9pI32SXvk8mBGMLCZUqc+erHj+8r9k8aI8ZWjKqDHva9rS9i7bDXdrmDa0YJ62IQUsbgqoD8LHgRexq9LHfWThwHgwF8Bhc4zVC0K5GCfPji8F4evhhj+Uey3dhOdvF8vLpY4vZE2mZwwDWEeC9CRTrouk61iYYThq5yK1WfDvYk7gn8V0kHv2QRNDO5qXRFDr5EUKulIEUIRzgsBiCgqzpMENorLlrENaqbHBfFvcw/n8YWylIFfyUEe75y4cXBtSNN7QRyfVWpKg8en7ytDevnX3zzVQhrRy/rgqM9ChaiUSMVG1G68noxcajih3uYtS/sB50LJnajrgHNT3K7F7fJfvGb85XikQi/vjzkpPvQm1uYX5+Ct9wI+RDvldEdQydsbmLHPTROluen8J5qYivxrxuJ8VxxsFZjRaWpGymfAbn3mWNJjiNV+e8P3cfQDN6dW9tCJ+uzrvLDF93eBEfK1g4G8hQE/H95+/ZYdLboY2EFzGWwNcp2W+HHhYuwyAhSurbvZQg4Up5oyy3FoqwcN7w+JzIm7Qhbi9KFcKjXAnHTjcVxiXzJjPEJYXz0Tk+Hk6G477IKM1FhgNYu0CViuXFqpiRF5LhiQsokKAD40VEHw8h4T2N6lIZy8e08SWPddBcC1UbVjMR8hWxjBlju3KBeOJ2m6qAX3zZttx916DfdECtOSApp/n6ppVihSqLaG8Fs5GIudZYM6ixoIpkt4byGXiE+vcTLmqqYX2PPrzCMVrvh5TdPLO93XYzLt03tG0rZC+C+L9ob9q2/Rd5vbYA
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrganizationsController_getOwn
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-invite-user.ParamsDetails.json b/docs/api-reference/reference/organizations-controller-invite-user.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-invite-user.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-invite-user.RequestSchema.json b/docs/api-reference/reference/organizations-controller-invite-user.RequestSchema.json
new file mode 100644
index 0000000000..d7aaa91ea5
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-invite-user.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"roleIds":{"description":"Role IDs to assign — at least one is required.","type":"array","items":{"type":"string"}}},"required":["email","roleIds"],"title":"InviteUserDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-invite-user.StatusCodes.json b/docs/api-reference/reference/organizations-controller-invite-user.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-invite-user.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-invite-user.api.mdx b/docs/api-reference/reference/organizations-controller-invite-user.api.mdx
new file mode 100644
index 0000000000..6c479ca267
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-invite-user.api.mdx
@@ -0,0 +1,69 @@
+---
+id: organizations-controller-invite-user
+title: "OrganizationsController_inviteUser"
+description: "OrganizationsController_inviteUser"
+sidebar_label: "OrganizationsController_inviteUser"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4FMCUJZsq22iN8V2ARVI7dpO+iAIwWh3JDHhkhty1rEqLNBD9A69R4/SkxTDXVmyZDgJ0Ee9rYbkcH4+jjhcKV9SQDbejXI1UJdhjs78kQTxzDsO3loKH4y7M0zvIgWlVYkBC2IKUQ3GE60Cfa4o8hufL9VglX6aQLkacKhIq8w7JscyhGVpTZa0dz9G70QWswUVKF+8LEkNlJ9+pIxlnyDGsaEoo1SgsVvTIgfj5qrWamZC5F+xoCdHLT4zGLylUZ705xSzYEqxTQ3UtbcEo/MI7AFjNHMH//75FyCDJYwM3hGYCGtfj5ReK8cQcKm0MkxFfGLTutZbIRq3fm1MmWjFhq0sGT1E/Zy9rExLY+ldbGJy0jveN1386vd6+wPv0Zo8BR9maCzlGnwAXhC0GYQ74y0yRUCYVtE4ihFCZUnc+7/SGIIPX5+W+fyJjGlF91iUKThvhucfri9+e3dxc6v0jqc3jFNLUGC2MI46gTBPgrQ5iO4jiVJBMeL8K/vsRQ1mPqT8+wCFDwQzQzaPSWMbSDlLz+nMj/sn036edU5mvZNO/9WPvc70h9PXndez/uzkp1n/uDd9tefUmQ+BmvTwwsTWmS+GFxAp3FHoRJMTWD8XW3YoS/HceLxt6RZwF6LynBiNbYjbQTXlbnf+dUvkhtH+U1i+NTEaN9dQoJ35ULT40X0p6iELlJNjgzYeaDvQ9l20ne7TNqx4IThlyALatGIoGgAfCl7CrqSQ5N7BCx/AsNT06KuQEcTMl6RheH7d6Z2cvjxgecDyu7Ds72N5u/mzpXxDWu4pgvMMdG8ip7poGsGdiUaSxj5xm6Fcxw4kHkj8LhJfP0siZN7NrMk4NuYnCKVSRkYmeEFH8yNAyKsGM4LKmc8VwR3aig5l8QDjt8NYa8U4l75R+e1WUxZGyqpgeKkG45WaEgYK0l/Wk11nv6lJLYgXXlra0seEEPJCDVQXS9O9O+4+2r1bULeK0s+KFRKutrNdm3QjADfwrQ1rqRZPW5FuP372oUBWA/XL77fCgY+l+QDDqxF8ouWmT1wwlymKckquNy30xZqEh5Z3Q8lWp7sRbhrcjeyhrx2vZZNaK+NmPsHXpujy5moEVxZZ7uNi4R5XacaLy5Ic3DC6HEMOV8HnVcYwSvf1WXvYX0ImvJettiN4+/6quUHJHUsWyVmGM+8iG67Smfnn7/7poNXDSw2PEqtB7nC63Y4CnPmcooZkUvvdmhI1vMdg0MnXGTLNfTAyPmQOZlqxfJ9Z6ePX5mo491lVUFoyrHLDUsck843jvaPjo15b2TCTyiapEpYKTDXNNRF/ZDJsYIQGRmhpfBTVh9PPdM/d0qJxUh+qkJ43GlDHCksjFh0rvXNUhG2lVQPsRKuFAD4Yq9VqipHeBVvXIv5cUVg2GN9JcKaS8rFgsCDM09laKSFSqkcq351bMUum2yq9ZOyW8lqvVwyzjEp+du5k6wxeXaZCPG1fiIpUwFXAL4IqfpFHC6182fgnT0giWymLbl6lIqwanZIDrCQ+DzHcOXzJq/VLjFtuWbhaNTNu/Sdyda106wrLb1VP6rr+D2Xcjd8=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrganizationsController_inviteUser
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-legal-entities.ParamsDetails.json b/docs/api-reference/reference/organizations-controller-list-legal-entities.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-legal-entities.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-legal-entities.RequestSchema.json b/docs/api-reference/reference/organizations-controller-list-legal-entities.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-legal-entities.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-legal-entities.StatusCodes.json b/docs/api-reference/reference/organizations-controller-list-legal-entities.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-legal-entities.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-legal-entities.api.mdx b/docs/api-reference/reference/organizations-controller-list-legal-entities.api.mdx
new file mode 100644
index 0000000000..4120b560a6
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-legal-entities.api.mdx
@@ -0,0 +1,69 @@
+---
+id: organizations-controller-list-legal-entities
+title: "OrganizationsController_listLegalEntities"
+description: "OrganizationsController_listLegalEntities"
+sidebar_label: "OrganizationsController_listLegalEntities"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl81u4zYQx19lwFMWoD/jthvdXCctUnSxaZJND4ERUNLI4i5FKuTIG9fQ8/Q9+mTFUMqXXew2d59Mk5zhf4Y/jsitcDV6RdrZ81wk4qNfKav/ih1h4Sx5Zwz6O6MD/Y4rZc4sadIYhBS18qpCQh9EcruUwmOonQ0YRLIV0/GYf3IMmdc1uxOJEK0Us/8auFFG53FRKJQ2mEtwHqhE8HjfYCBYa2cUYQAFaRO0xRDANwaHQorMWUJL7FbVtdFZ9DT6HNj3VoSsxEpxizY1ikS49DNmxBF4jj6Gk2wFeu/896dlLscXswJ5bVdCCnxQVW246+f56d3l2R+fzq6uhdyJ9IpUahAqlZXa4sCjymNHXBzY95CzVGEIavWddfayBoXz4Cxy8irnEQqNJg/RY59I3uVv+cwns2k6y7PBtBhPB7P3P44H6Q/HJ4OTYlZMfypmk3H6fi+ohfMeu+2hUoc+mK+aSgjo1+gHQecIxq1YSy9Ge8xFctvl8znil0qXUpCmqOuMXZ4iKW1Oye056fZud/5lT2Rn0Ub6Jvv0fdAhaLuSUClTOF/1+OFDze4h85ijJa1MONB2oO1NtB3v0zZvqGScMkUMWtoQVB2ATwUvYlejj/3OwpHzoCmAx+AanyGEzNUoYX56ORhPj98dsDxg+SYsZ/tYXj9/bDF/Ji13GMA6AnzQgWJd1F3HWgfNm0YucpspvigcSDyQ+CYST75JImTOFkZnFDr5EUKulIEUIRzhcDUEBXnTYYbQWH3fIKyVafBQFg8w/n8YWylIrfgpI9zLRxAbBswar2kjktutSFF59PzkaZe7wb7l+VQhlY7fXCuMICkqRSJGqtaj9WT0SsOowpFh8wE+23fZ699ejwqvmOeOxUedPeQceN8l+8YvzleKRCJ++/OasXCh1ncwvziHL7gR8pGEkqiOSdW2cJGQPo8fry7O4cIo4ksz2+1tfpxx9LFGC1ekbK58Dhfe5U1GcB4v1UV/It9BxlDWvbchfLi56K45fBFiIz5wsHA2kKYmgv3P37PjpPdDGwmvsi+BL1qyXw49LFyOQUKU1Ld7KUHCjfJaWW4tFOHKec3jcyKv04a4vTAqhCe5Ek5d1lQYTeZNromLDe9HF/h4OBmO+/KjMi4/nMDaBapULDxWxR15JRmeiQEmBiIy8IKZV9l9OqqEDzSqjdKWD3PjDY91PN0KVWtWNhFyh2smUEixw9VSitIFYsvtNlUBP3nTttx936DfdLStOVspM3C7bKUoUeXxRGwFg5OIeZZhzVDHOiyS/dLLR+fpAPx6xrVQNSz4KagdVqP3fkjZzQvf220349p9Qdu2QvYiiP+Ldtm27b8IBs9D
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrganizationsController_listLegalEntities
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-roles.ParamsDetails.json b/docs/api-reference/reference/organizations-controller-list-roles.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-roles.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-roles.RequestSchema.json b/docs/api-reference/reference/organizations-controller-list-roles.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-roles.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-roles.StatusCodes.json b/docs/api-reference/reference/organizations-controller-list-roles.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-roles.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-roles.api.mdx b/docs/api-reference/reference/organizations-controller-list-roles.api.mdx
new file mode 100644
index 0000000000..8f2ff0b6f5
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-roles.api.mdx
@@ -0,0 +1,69 @@
+---
+id: organizations-controller-list-roles
+title: "OrganizationsController_listRoles"
+description: "OrganizationsController_listRoles"
+sidebar_label: "OrganizationsController_listRoles"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu2zgQhl9lwKsUoI/x7ja68zrZRRYokk3S7EVgBJQ0sthSpEKO3HgNPc++R5+sGEo5etE2974yzcPPOXwckVvhavSKtLOnuUjEmV8pq/+NHWHhLHlnDPpbowNdOINBSFErryok9EEkN0spPIba2YBBJFsxHY/5J8eQeV2zjEiEaKWY/d/AtTI6j5tBobTBXILzQCWCx7sGA8FaO6MIAyhIm6AthgC+MTgUUmTOElpiWVXXRmdRafQpsPZWhKzESnGLNjWKRLj0E2bEHnj2mnRnMnrv/I+nZS7HZ7MCeW1XQgq8V1VtuOv3+fHtxcnfH08ur4R85eklqdQgVCortcWBR5XHjrg5sPaQo1RhCGr1g312ogaF8+AscvAq5xEKjSYPUbEPJGf3e5r5ZDZNZ3k2mBbj6WD2/tfxIP3l8GhwVMyK6W/FbDJO3+84tXDeY5ceKnXonfmiqYSAfo1+EHSOYNyKbemN0R5zkdx08Xzy+LmlSylIU7TrhCWPkZQ2x+R2RLrcvZ5/0RPZrWgjfZNd+j7oELRdSaiUKZyvevzwvmZ5yDzmaEkrE/a07Wl7E22Hu7TNGyoZp0wRg5Y2BFUH4GPBi9jV6GO/s3DgPGgK4DG4xmcIIXM1SpgfXwzG08N3eyz3WL4Jy9kulldPH1vMn0jLHQawjgDvdaBYF3XXsdZBc9LIRW4zxReEPYl7Et9E4tF3SYTM2cLojEJnfoSQK2UgRQgHOFwNQUHedJghNFbfNQhrZRrcl8U9jD8PYysFqRU/ZYR7/vjhhQGzxmvaiORmK1JUHj0/edrla2d/5tlUIZWO31grjAApKkUiRqrWo/Vk9GLvUYUj3y/rgtU/tR4MumR8O/QezOqZZj/7Ltk3/nC+UiQS8dc/V0yBC7W+hfn5KXzGjZAPiS+J6hhDbQsXgejDdnZ5fgrnRhHfkXndTq7jjIOzGi1ckrK58jmce5c3GcFpvEMX/QF8BxkzWPdqQ/hwfd7davjew4v4fMHC2UCamsjx1/9mh0mvQxsJL4Itge9Vst8OPSxcjkFCNKlv96YECdfKa2W5tVCEK+c1j8+JvE4b4vbCqBAezZVw7LKmwrhk3uSauLZwPjrHx8PJcNxXG5VxteEA1i5QpWKdsSpm5IXJ8AQIMCDwQMiLoD4eSMJ7GtVGactHtvGGxzp6boSqNRs0EfIVvcwbn5sovZSidIF4wXabqoAfvWlb7r5r0G86ttYcm5QzfrNspShR5RH3rWBMEjHPMqyZ3FhkRbJbV/lcPFL+5wkXOtWwnY++vCIzqvdDym6eaW+33Ywr9xlt2wrZG0H8X7TLtm2/AcLPvtA=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrganizationsController_listRoles
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-users.ParamsDetails.json b/docs/api-reference/reference/organizations-controller-list-users.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-users.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-users.RequestSchema.json b/docs/api-reference/reference/organizations-controller-list-users.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-users.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-users.StatusCodes.json b/docs/api-reference/reference/organizations-controller-list-users.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-users.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-list-users.api.mdx b/docs/api-reference/reference/organizations-controller-list-users.api.mdx
new file mode 100644
index 0000000000..3fec33b3f8
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-list-users.api.mdx
@@ -0,0 +1,69 @@
+---
+id: organizations-controller-list-users
+title: "OrganizationsController_listUsers"
+description: "OrganizationsController_listUsers"
+sidebar_label: "OrganizationsController_listUsers"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu4zYQhl9lwKssQB/jthvduU5apMAiaU69CIyAkkYWdylSIUfeuIaep+/RJyuGUo4udjf3vjLFw/CfmY9jcitcjV6RdvY0F4k48ytl9d+xIyycJe+MQX9ndKDrgD4IKWrlVYXEH8ntUgqPoXY2YBDJVkzHY/7JMWRe12xGJEK0Usz+b+BGGZ3HzaBQ2mAuwXmgEsHjfYOBYK2dUYQBFKRN0BZDAN8YHAopMmcJLbFZVddGZ9HS6HNg21sRshIrxS3a1CgS4dLPmBF74Nlr0p1k9N7570/LXI4vZgXy2q6EFPigqtpw16/z47uLkz+vTy6vhHzj6SWp1CBUKiu1xYFHlceOuDmw7SFHqcIQ1Oo7++xEDQrnwVnk4FXOIxQaTR6ixT6QnN1v2cwns2k6y7PBtBhPB7OPP48H6U+HR4OjYlZMfylmk3H6ccephfMeu/RQqUPvzFdNJQT0a/SDoHME41aspRejPeYiue3i+ezxS6VLKUhT1HXCJo+RlDbH5HaMdLl7O/+iJ7Jb0Ub6Jrv0fdIhaLuSUClTOF/1+OFDzeYh85ijJa1M2NO2p+1dtB3u0jZvqGScMkUMWtoQVB2ATwUvYlejj/3OwoHzoCmAx+AanyGEzNUoYX58MRhPDz/ssdxj+S4sZ7tYXj3/2WL+TFruMIB1BPigA8W6qLuOtQ6ak0YucpspviDsSdyT+C4Sj75JImTOFkZnFDr5EUKulIEUIRzgcDUEBXnTYYbQWH3fIKyVaXBfFvcw/jiMrRSkVvyUEe7l44cXBswar2kjktutSFF59PzkaZdvnf2RZ1OFVDp+Y60wAqSoFIkYqVqP1pPRq71HFY6aflkXrP6p9SjokvHt0HuU1TPNfvZdsm/85nylSCTij7+umAIXan0H8/NT+IIbIR8TXxLVMYbaFi4C0Yft7PL8FM6NIr4j87qdXMcZB2c1WrgkZXPlczj3Lm8ygtN4hy76A/gBMmaw7q0N4dPNeXer4XsPL+LzBQtnA2lqIsf//jM7THo7tJHwKtgS+F4l++3Qw8LlGCRESX27lxIk3CivleXWQhGunNc8PifyOm2I2wujQniSK+HYZU2Fccm8yTVxbeF8dI6Ph5PhuK82KuNqwwGsXaBKxTpjVczIK8nwDAgwIPBIyKugPh1Iwgca1UZpy0e28YbHOnpuhao1C5oI+YZe5k1I0VG0lKJ0gXjBdpuqgNfetC133zfoNx1ba45Nyhm/XbZSlKjyiPtWMCaJmGcZ1kxuLLIi2a2rfC6eKP/9hAudaljnky9vyIzW+yFlNy9sb7fdjCv3BW3bCtmLIP4W7bJt2/8ACKG/EQ==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrganizationsController_listUsers
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-update.ParamsDetails.json b/docs/api-reference/reference/organizations-controller-update.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-update.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-update.RequestSchema.json b/docs/api-reference/reference/organizations-controller-update.RequestSchema.json
new file mode 100644
index 0000000000..bfedfc1405
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-update.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string","enum":["PENDING","ACTIVE","SUSPENDED","ARCHIVED","DELETED"]}},"title":"UpdateOrganizationDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-update.StatusCodes.json b/docs/api-reference/reference/organizations-controller-update.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-update.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/organizations-controller-update.api.mdx b/docs/api-reference/reference/organizations-controller-update.api.mdx
new file mode 100644
index 0000000000..be290dc0ae
--- /dev/null
+++ b/docs/api-reference/reference/organizations-controller-update.api.mdx
@@ -0,0 +1,69 @@
+---
+id: organizations-controller-update
+title: "OrganizationsController_update"
+description: "OrganizationsController_update"
+sidebar_label: "OrganizationsController_update"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9vGzcMwL+KwKcUkB0n8db23lzbWz2srRc72UMQFPKJ9qm9k64SL01m3OfZ99gnG6i7+E9cpCuwRz9FoSSKIn+kxVuDK9ErMs5ONCTwwa+UNX9FQRg6S97lOfqPVakVIUgolVcFEvoAyc0arCoQEjAaJHj8UhmPGhLyFUowFhIoFWUgIaQZFgqSNdBDyTsCeWNXUNe3zUYM9MbpB17xVE/qLKElnlJlmZs0Wnf6KTjLsgPVbvEJU2JbPV+ODAaebUw9MEBCIEVVOJySgLYqILmB6fj9aPL+V5AwGM4n12OQMLuasXQ8YuHl8O3kOg5H49/H8/EIbutaAhnKWd9VdN6ua0fkoK55jcdQOhsaE897Pf6jMaTelLwQEmAT+9+auFa50VGdWCqTo5bCeUEZitah4s64XBEGocSiCsZiCMJXOXbhf/Mqeu/895elTn/D+RLwXhVldNKbwejj5fiPq/FsDvLJTWekFjmKQqWZsdjxqHQUxMMF6+6ylwoMQa2+c86B18TSeeEssvMK51EsDeY6RI2tIzk1ntOpz/rni75OO+fL3nmn/+rnXmfx08Xrzutlf3n+ctk/6y1eHVxq6LzHJjyUmdBe5quhTAT0d+g7wWgUuVuxLfVuft00/tzeeNfS2y14Y1Y5QlImb4jbV9LE7un6y5bILaP93tkhfe9MCMaupChUvnS+aPHD+5LVi9SjRktG5eFI25G2H6Lt4pC2QUUZ45QqYtAWFYmiAXBT8CJ2Jfood1acOC8MBeExuMqnKELqSpRiMLrs9M4vXhyxPGL5Q1j2D7Gcb39sUW9J0w6DsI4E3ptAsS6aRnBnguGgkYvcpopfV0cSjyT+EImvnyVRpM4uc5NSaMyPEHKl5IcuihPsrrpCCV01mKGorPlSobhTeYXHsniE8b/DyE2OWnErCG63c+SNAdPKG3qIfeIClUcPyc0tN3z7l/1uz1kgZU43zWSaxSaUMkjgVJXm9O7sdO/o07XRNXec0U9s2o4tMya3oe7RohZnvmIrku3gF+cLRZDAb3/OGQAXSvNRDKYT8RkfQD7GPCMqo/s4PS63rez4EYFNl7yh47Hj3DSWNXfLSxdJav39YTadiGmuiB/XfOoBJHHFyYcSrZiRslp5Labe6SolMYmP72WbuS9EyvCWrbaueHc9bZ5D/GDiTZyYYuhsIENVTIB//u5fJK0eepBiL0pS8INMtsehF0OnMUgRTWrHrSlBimvljbI8GirClfOG5wdE3iwq4vEwVyFszJVi5NKqwLhlUGlDXJQ4ms3Fe92zbq8tUyrlMsXuL12gQtkdf++ZLLZkiQ1Zew7dZDHhPZ2WuTKWA1P5nOca5m5AlYaNOQP5BHkJiYkZlrlAvHK9XqiAVz6vaxZ/qdA/NDjesUMWHOabNWgTeKwhWao84IFRm2IMJ5dtgr4QW/z2jW2FyjKgsaDzFwQJTGz8TFPf1hIyVDpm47qdGDZndOa8fbvxoPjX8nHHIE2xpGfX3u5k7nQwH77lzGq/8RSx5oNXX7k+qa+Nla5sXMkfgVi2hlzZVRXrNjRKOdKq4lBswvUkbeO1vumH9bpZMXef0db1xi3E/7Nn6vpfBbmFew==
+sidebar_class_name: "patch api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+OrganizationsController_update
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/ospi-platform-api.info.mdx b/docs/api-reference/reference/ospi-platform-api.info.mdx
new file mode 100644
index 0000000000..73b0d77a3b
--- /dev/null
+++ b/docs/api-reference/reference/ospi-platform-api.info.mdx
@@ -0,0 +1,82 @@
+---
+id: ospi-platform-api
+title: "OSPI Platform API"
+description: "OSPI (Open Standard Product Identification) core platform. MVP scope per Project Constitution §43: Identity, Organizations, Auth, Producer Codes, OSPI Codes, Products, Variants, Categories, Attributes, Classification, Documents, Audit."
+sidebar_label: Introduction
+sidebar_position: 0
+hide_title: true
+custom_edit_url: null
+---
+
+import ApiLogo from "@theme/ApiLogo";
+import Heading from "@theme/Heading";
+import SchemaTabs from "@theme/SchemaTabs";
+import TabItem from "@theme/TabItem";
+import Export from "@theme/ApiExplorer/Export";
+
+
+
+
+
+
+
+
+
+OSPI (Open Standard Product Identification) core platform. MVP scope per Project Constitution §43: Identity, Organizations, Auth, Producer Codes, OSPI Codes, Products, Variants, Categories, Attributes, Classification, Documents, Audit.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Security Scheme Type:
+
+ http
+
+
+
+ HTTP Authorization Scheme:
+
+ bearer
+
+
+
+ Bearer format:
+
+ JWT or ospi_ API key
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-inventory.ParamsDetails.json b/docs/api-reference/reference/partner-controller-get-inventory.ParamsDetails.json
new file mode 100644
index 0000000000..a63581de43
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-inventory.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"productId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-inventory.RequestSchema.json b/docs/api-reference/reference/partner-controller-get-inventory.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-inventory.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-inventory.StatusCodes.json b/docs/api-reference/reference/partner-controller-get-inventory.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-inventory.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-inventory.api.mdx b/docs/api-reference/reference/partner-controller-get-inventory.api.mdx
new file mode 100644
index 0000000000..0b89dfec18
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-inventory.api.mdx
@@ -0,0 +1,69 @@
+---
+id: partner-controller-get-inventory
+title: "PartnerController_getInventory"
+description: "PartnerController_getInventory"
+sidebar_label: "PartnerController_getInventory"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQgF9lwFMC0L9x241urpMWKbCIm2TTQxAEtDSyuSuRCjnyxhX0PH2PPlkxlGI70WLToEBPPpnmz/zx44jDStgCnSJtzUUiIjFXjgy6mTXkbJahe1giXZg1GrJuI6QolFM5EjovortKGJWjiIR1S2X0n89ypHD4WGqHiYjIlSiFNiIShaKVkMLHK8yViCpBm4JXe3LaLEVdy63AwtmkjOk/yLrnhb6wxqPn8fFwyD8J+tjpgg0VkRC1FJNvDdyqTCfBHUiVzjCRYB3QCoGtQU+w1jZThB4ULEqvDXoPrsywL6SIrSE0xGJVUWQ6DpIGnz3LrrpG28VnjImj63g7SDcmo3PWvT0ttgl2IyAFPqm8yLjr5+nZw9X575/Or2+EfOXpNalFhpCreKUN9hyqJHQE5cCy+xylHL1Xyzf0dKIGqXVgDXLwcusQUo1Z4oPENpCM3fdkJqPJeDFJ4t44HY57kw8/DnuLH05Oe6fpJB3/lE5Gw8WHjlMz6xw220Mr7VtnvmpagUe3RtfzOkHI7JJtqfcZu2viufN439J7KUhTsOucRZ4hKZ2dke0Iafbu9fyrlshmRR3oG3Xp+6i912YpIVdZal3e4odPBYuH2GGChrTK/IG2A23vou2kS9u0pBXjFCti0BYlQd4AuE14AbsCXei3Bo6sA00eHHpbuhjBx7ZACdOzq95wfHJ8wPKA5buwnHSxvNl9bDHZkZZY9GAsAT5pTyEv6qZjrb3mTSMbuI0V318OJB5IfBeJp98lEWJr0kzH5BvzA4ScKT0pQjjC/rIPCpKywQyhNPqxRFirrMRDWjzA+O9hrKUgteQyi4sursp4ice4dJo2ofpaoHLoRHR3z+XOSzffrORypJXlmm+JgRsuqCIxUIUerEeDVuVgv7Lzg+ploVcP2jrND6ptxVYP9J6WJqTsxZ7x1wx5A+izCy35HI22S7aNX6zLFYlI/PbHDbNifaEfYDq/gC/IGlo8VkRFiLQ2qQ3YtMG9vJ5fwDxTxDdpXtchIsw4uizQwDUpkyiXwLxxBy7CTTttj+kxxExq0Urrw8fbeXP34dsRL+JTCDNrPGkqA+1//zU5iVo5tJFwuR9RCXz7kq06dDCzCXoJwaS23ZriJdwqp5Xh1kwRLq3TPD4lcnpRErdnmfJ+a66EMxuXOYYl0zLRxBmI96NxfNgf9YdtTlIx5yQOYGE95Spko7Yab1mCHUywRIJ9ml5EdHtmCZ9oUGRKGz7Vpct4rCHtTqhCszWj5lUhAC5fvCR4IUXUeVp4Ro4H958JdtTdS7GynlhHVS2Ux08uq2vufizRbRoW1xzLBRNyV4lEe24nIkpV5rHjzjZpi6Or9iAfw469l262ncpwXELi55cGKRjXzlMJv3n8j9p3AavvaylWqJKQQKp2fBrHWNDeys43ijPNNnX8es4fDVXyhm43/dX5DdK/aVVVNTNu7Bc0db01kvg/G1jX/wBeEGYJ
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+PartnerController_getInventory
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-product.ParamsDetails.json b/docs/api-reference/reference/partner-controller-get-product.ParamsDetails.json
new file mode 100644
index 0000000000..a63581de43
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-product.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"productId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-product.RequestSchema.json b/docs/api-reference/reference/partner-controller-get-product.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-product.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-product.StatusCodes.json b/docs/api-reference/reference/partner-controller-get-product.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-product.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-get-product.api.mdx b/docs/api-reference/reference/partner-controller-get-product.api.mdx
new file mode 100644
index 0000000000..4345154614
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-get-product.api.mdx
@@ -0,0 +1,69 @@
+---
+id: partner-controller-get-product
+title: "PartnerController_getProduct"
+description: "PartnerController_getProduct"
+sidebar_label: "PartnerController_getProduct"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMWKbBImmTTQxAEtDSyuCuRCjnyJhX0PH2PPlkxlGI70WLToEBPPpnmx/DP4Y8jDmthS3SKtDVniYjEhXJk0C2sIWfzHN39CunC2aSKSUhRKqcKJHReRLe1MKpAEQnrVsroP5+tSOHwodIOExGRq1AKbUQkSkWZkMLHGRZKRLWgp5JHe3LarETTyI3Bsp3wP9i644G+tMaj5/bpeMw/CfrY6ZKFikiIRorZtxpuVK6TsBxIlc4xkWAdUIbAatATrLXNFaEHBcvKa4Peg6tyHAopYmsIDbFZVZa5joOl0WfPtuu+aLv8jK13HW8G6VYyOmfd291im2DfA1LgoyrKnKt+np/cX57+/un06lrIVyu9IrXMEQoVZ9rgwKFKQkWYHNj2kL1UoPdq9cY8Pa9Bah1Yg+y8wjqEVGOe+GCxcyRD9z2byWQ2Xc6SeDBNx9PB7MOP48Hyh6PjwXE6S6c/pbPJePmht6iFdQ7b7aFM+24xXzVl4NGt0Q28ThByu2ItzS5jt60/tyveVXonBWkKuk7Z5AmS0vkJ2Z6Rdu9e97/siGxHNIG+SZ++j9p7bVYSCpWn1hUdfvhYsnmIHSZoSKvc72nb0/Yu2o76tM0ryhinWBGDtqwIihbATcAL2JXoQr01cGAdaPLg0NvKxQg+tiVKmJ9cDsbTo8M9lnss34XlrI/l9fZji8mWtMSiB2MJ8FF7CnFRtxVr7TVvGtnAbaz49rIncU/iu0g8/i6JEFuT5jom38oPEHKk9KQI4QCHqyEoSKoWM4TK6IcKYa3yCvdhcQ/jv4exkYLUitMsTro4J+MhHuPKaXoK2dcSlUMnots7TndeLvONPK5Ayizneyts0zrKRCRGqtSj9WTUTTjazev8qH6Z5jWjLkvzo3qTrzWclAU3svIdwVcMdgvls+yOdvZAVyW7wi/WFYpEJH7745r5sL7U9zC/OIMv+CTkMxIZURm8q01qAyqdQ8+vLs7gIlfEt2ce16Mg9Dg4L9HAFSmTKJdA5x04C7frtDuahxAznWVnbQgfby7a+w7fiHgQnzxYWONJUxUI//uv2VHU2aEnCee7fpTANy7ZTYcOFjZBLyFI6sqdFC/hRjmtDJcWinBlneb2OZHTy4q4vMiV9xu5Ek5sXBUYhsyrRBNHHd6PduHj4WQ47uKQijkOsQNL66lQIQJ1GXjHD2wBghUSbAl64c/NKSV8pFGZK234HFcu57aWrluhSs1aJu07QkBavng78EKKqPeY8IwZN24fBu6kyKwntlvXS+Xxk8ubhqsfKnRPLX1r9t6SmbitRaI9lxMRpSr32FvCJjSLg8vuuB7ClraXS+sqlWEeQ3jn9wQpGNDegwi/bPyPs2+d1Nw1UmSokhAm6q59HsdY0s7I3peI48kmRPx6yp8GVfEmbjb61YkN1r+pqq7bHtf2C5qm2Ygk/s8Cm+YfIKFaxw==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+PartnerController_getProduct
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-documents.ParamsDetails.json b/docs/api-reference/reference/partner-controller-list-documents.ParamsDetails.json
new file mode 100644
index 0000000000..a63581de43
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-documents.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"productId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-documents.RequestSchema.json b/docs/api-reference/reference/partner-controller-list-documents.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-documents.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-documents.StatusCodes.json b/docs/api-reference/reference/partner-controller-list-documents.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-documents.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-documents.api.mdx b/docs/api-reference/reference/partner-controller-list-documents.api.mdx
new file mode 100644
index 0000000000..1132c6b3f3
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-documents.api.mdx
@@ -0,0 +1,69 @@
+---
+id: partner-controller-list-documents
+title: "PartnerController_listDocuments"
+description: "PartnerController_listDocuments"
+sidebar_label: "PartnerController_listDocuments"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQgF9lwFMC0L9x241uqZMWKbCIm2TTQxAEtDi2uSuRCjnyJhX0PH2PPlkxlGI70WLToEBPPpnmz/zx44jDSrgCvSLj7LkWiZgpTxb91FnyLsvQ32cm0KlLyxwtBSFFobzKkdAHkdxWwqocRSKcXypr/nwWJIXHh9J41CIhX6IUxopEFIpWQoqQrjBXIqkEPRW8OpA3dinqWm4EFt7pMqX/IOuOF4bC2YCBx8fDIf9oDKk3BRsqEiFqKSbfGrhRmdHRHVgok6GW4DzQCoGtwUCwNi5ThAEUzMtgLIYAvsywL6RInSW0xGJVUWQmjZIGnwPLrrpGu/lnTImj63k/yDQmo/fOvz0tdRq7EZACH1VeZNz188np/eXZ75/Orq6FfOXpFal5hpCrdGUs9jwqHTuicmDZfY5SjiGo5Rt6OlGDhfPgLHLwcucRFgYzHaLENpDM3fdk6tFkPJ/otDdeDMe9yYcfh735D0fHvePFZDH+aTEZDecfOk5NnffYbA+tTGid+WpoBQH9Gn0vGI2QuSXbUu8ydtvEc+vxrqV3UpChaNcZizxFUiY7JdcR0uzd6/mXLZHNijrSN+rS99GEYOxSQq6yhfN5ix8+FiweUo8aLRmVhT1te9reRdtRl7aTklaMU6qIQZuXBHkD4CbhRewK9LHfWThwHgwF8Bhc6VOEkLoCJZycXvaG46PDPZZ7LN+F5aSL5fX2Y4t6S5p2GMA6Anw0gWJeNE3H2gTDm0YucpsqvsDsSdyT+C4Sj79LIqTOLjKTUmjMjxBypgykCOEA+8s+KNBlgxlCac1DibBWWYn7tLiH8d/DWEtBasllFhddXJbxkoBp6Q09xeprjsqjF8ntHZc7L918u5TLkVaOq74lRnC4okrEQBVmsB4NWp2D3dIuDKqXlV49aAu1MKg2JVs90DtampiyGzvWXzHlDaHPPrToczjaLtk2fnE+VyQS8dsf1wyLC4W5h5PZOXzBJyGf+VgRFTHUxi5c5KaN7sXV7BxmmSK+SvO6DhJxxsFFgRauSFmtvIZZ4w6cx6v2oj2nh5AyqkUrrQ8fb2bN5YevR7yIjyFMnQ1kqIy4//3X5Chp5dCThIvdiErg65ds1aGHqdMYJEST2nZrSpBwo7xRlltTRbh03vD4CZE385K4Pc1UCBtzJWw2nBVpQ5yCeD8ax4f9UX/YJiWVclLiABYuUK5iOmrL8RYm2NIETBPs4vQipJtTS/hIgyJTxvK5Ln3GYw1qt0IVhs0ZNe8KEXH54i2B5Sadx4Vn5nhw96Fgi92dFCsXiHVU1VwF/OSzuubuhxL9UwPjmoM5Z0RuK6FN4LYWyUJlATvubNK2OLhsj/IhbOF76WbbqSzjGVM/vzVIwbx2Hkv41eN/1L4NWH1XS7FCpWMKqdrxkzTFgnZWdr5SnGs2uePXM/5sqJI3dLPprw5wlP5Nq6qqmXHtvqCt642RxP/ZwLr+B7t9ZvE=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+PartnerController_listDocuments
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-products.ParamsDetails.json b/docs/api-reference/reference/partner-controller-list-products.ParamsDetails.json
new file mode 100644
index 0000000000..5647e888ab
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-products.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-products.RequestSchema.json b/docs/api-reference/reference/partner-controller-list-products.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-products.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-products.StatusCodes.json b/docs/api-reference/reference/partner-controller-list-products.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-products.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/partner-controller-list-products.api.mdx b/docs/api-reference/reference/partner-controller-list-products.api.mdx
new file mode 100644
index 0000000000..fa22db8a03
--- /dev/null
+++ b/docs/api-reference/reference/partner-controller-list-products.api.mdx
@@ -0,0 +1,69 @@
+---
+id: partner-controller-list-products
+title: "PartnerController_listProducts"
+description: "PartnerController_listProducts"
+sidebar_label: "PartnerController_listProducts"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM9u4zYQxl9lwFMC0H/jthvdXCctUmCxbpJND0EQ0NLI5i5FKuTIm9TQ8/Q9+mTFUIrtRItNc/fJNEWOPn78cczxRrgSvSLt7EUmEjFXniz6mbPknTHo740ONPcuq1IKQopSeVUgoQ8iud0IqwoUiXB+qaz++zmOFB4fKu0xEwn5CqXQViSiVLQSUoR0hYUSyUbQU8mzA3ltl6Ku73hiKJ0NGPj5eDjkjwxD6nXJwUUiRC3F5HsPbpTRWZQAudIGMwnOA60QWA0GgrV2RhEGULCogrYYAvjKYF9IkTpLaInDqrI0Oo2RBl8Cx950RbvFF0yJHfFsIelGMnrv/NvDUpdh1wEp8FEVpeGuX6dn95fnf34+v7oW8tVKr0gtDEKh0pW22POostgRXw4cu88uFRiCWr7xno5rkDsPziKbVziPkGs0WYgRWyMZlR/FzEaT8WKSpb1xPhz3Jh9+HvYWP52c9k7zST7+JZ+MhosPnUXNnPfYbA+tdGgX803TCgL6Nfpe0BmCcUvWUu8zdtv4uVvxvtI7KUhT1HXOIc+QlDZn5DpBmr17Pf6yJbKZUUf6Rl36PuoQtF1KKJTJnS9a/PCx5PCQeszQklYmHGg70PYu2k66tE0rWjFOqSIGbVERFA2A24QXsSvRx35n4ch50BTAY3CVTxFC6kqUMD277A3HJ8cHLA9YvgvLSRfL692PLWY70jKHAawjwEcdKOZF3XSsddC8aeQit6niO8eBxAOJ7yLx9IckQupsbnRKoZEfIeRMGUgRwhH2l31QkFUNZgiV1Q8VwlqZCg9p8QDj/4exloLUkksjLpS4kuIpAdPKa3qKFdMClUcvkts7LndeLvPN6qtAWjmu05YYueGCKhEDVerBejRoXznYr8bCYPOyOKsH5S5eYx7r3ZN5xTg3KD6LbRnndbddsm385nyhSCTij7+umQoXSn0P0/kFfMUnIZ9BWBGV0VNtcxcBaW38dDW/gLlRxHdmntfZ+zji6FOJFq5I2Uz5DFpL4CLeqfP2QB5DykyWbbQ+fLyZN7ccvgfxJD5vMHM2kKYqcv3vP5OTpI1DTxI+7Xsnge9Zsn0depi5DIOEKKltP++OhBvltbLcminCpfOan0+JvF5UxO2ZUSFs5Uo4c2lVYJwyrTJNnGt4P5qFD/uj/rDNPirl7MMGli5QoWLeaYvvlhrYYQOMDexx88LR7ekkfKRBaZS2fH4rb/hZw9StUKVmNaOm5o8oyxd1PsdNOoX/Fq47KVYuEIfabBYq4Gdv6pq7Hyr0Tw1ya7ZswSDcbkSmA7czkeTKBOyo3mZhcXTZnsxj2CH2cjVtp7IMYczk/NeBFExl5/+K+q6WYoUqiwdz0w6apimWtDe9k/v5BG+P5O/nnIxVxfZtLX51WmL070rbbJoR1+4r2rreKiX+zgLr+j/C4RKN
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+PartnerController_listProducts
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-add-variant.ParamsDetails.json b/docs/api-reference/reference/products-controller-add-variant.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-add-variant.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-add-variant.RequestSchema.json b/docs/api-reference/reference/products-controller-add-variant.RequestSchema.json
new file mode 100644
index 0000000000..5af2001b92
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-add-variant.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"identity":{"description":"Segments to mint a distinct OSPI identity (own full code) for this variant. Every variant now requires its own identity (product owner decision, ADR-015 amendment, 2026-08-17) — provide either this or ospiIdentityId, exactly one, not neither.","allOf":[{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"}]},"ospiIdentityId":{"type":"string","description":"An already-issued, unattached OSPI identity ID for this variant. Provide either this or `identity`, exactly one."}},"required":["sku"],"title":"CreateVariantDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-add-variant.StatusCodes.json b/docs/api-reference/reference/products-controller-add-variant.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-add-variant.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-add-variant.api.mdx b/docs/api-reference/reference/products-controller-add-variant.api.mdx
new file mode 100644
index 0000000000..d5997c688d
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-add-variant.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-add-variant
+title: "ProductsController_addVariant"
+description: "ProductsController_addVariant"
+sidebar_label: "ProductsController_addVariant"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWdtuI7kR/ZUCn2ygdbXmpjeP7QAOsLBjeyYPXmOWalZLXLPJHrJatiIIyEfkH/Y/9lPyJUGR3ZIsKeMMkEe/tdgssi6nDptHS+Eq9JK0s5dKjMW1d6rOKZw5S94Zg/6bVOqr9FpaEpmopJclEvogxvdLYWWJYiy0Epnw+L3WHpUYk68xE9qKsagkzUQmQj7DUorxUtCiYotAXtupWK0ekiEG+uzUgmfsrpM7S2iJX8mqMjqP3vZ+D87y2N7SbvI75tFXz7GRxhDnPdYH9s+aEA680AotaYo+KQy51xVvLMbiFqclWgpADkptCSQoHUjbnODq9voSWlM4ck8WitoYyJ3CYyicB5rpAPOU0S5czNEv2p9g3RM08QfQFIDtN6tVqTo8ih4U5jpoZzM4Pb/p9AfvQJZoFbuWwbA/fN/pf+wMPhzDv//5L6i8m2uFgJpm2DjhPLhQ6ctm/UuVAT7LnMwCnMUMrCOwyaArMiGNuSpi2X+c6eQl+jOnkEF1ILe5JJw6v+Ap+xMygc+yrAwPDYYno3fvo40rK2kXDUIPLZzt1Om6caQTagYOKmgTmFJaaPRwdI5oYAR//jEYHb/Yut/vx91586ZAr/vLRmwQ0GtpPkvKZ68a9FujOfqgE6wbA1uXE/QiE6W2uqxLMR5kopTP6fkTR1zI2pAYD1bcSQH9HLdTM3HOoLR7ublJUxMQNgiLSBqOMlhn5eTDMWgbCKUCV4DHqQ6EHAZoAleT19MZRYzVAYvaRJBf3FxDWNi8N6nNI+iycp5Cr5S2LmROdTR/cv6xMO4pAM0kIw0Vd9TMGQUyNgxMsHCencRN6UJsqAXkHiWh6sIpkcxnjUPkQEKDkV7DW2AkoYdA2pi4awClPUags9+aQDkMDd6Rdw/ITEcIv4radpq8/iogEFZQaB9SxNIqKN08NisE8jLmghycnt1dfr3oiq2ifLGkzeugvbJmASVKq+2Us/mkaQbtGmNgToxbP83QxsSkd5EUwcgqYOiK1Wqbj+93W3KnAQ/01kMmSFME6GUINV5t8cQ5ObF6WGXiJXm8HtqpBWk8SrXoaF5UZVBbGauHaoc5L88PkOX1YRL7rbX67QWB7aeBz4CtyM4ighqQxKhWySJUzoZEZsP+YP8A4LKO+v39F1+l0SqVopDacIQxCITmkIO5dozGABImddAWQwBfG+yK/9tJh947//q0/FUu+3x6/u3m4m9fLm7v9mp5S3JiEMrYedjhqsaBuHls3gj+EkOQ01f22ctaLL2zyMkrmQAKjUaFpp1iIg/jbbOmGoyGk5HKO8OiP+yMPr7vdybvTj51PhWjYvihGA36k497QZ057zGVJ2IrBRM7MPaf7wSGn3HTAz2Wp1ZqI972dAtzF7zkOZLUJiHu5SKpdrvzbxpEbjA6OgTLX3QI2k4zKKUpnC8b+OFzxcszYcY+kSa8oe0NbT+FtpN9tJ3WNGM48VGiMpjUBGUC4JrwIuwq9HHcWThyPn7Vegyu9jlCyF2Fzffr8OT4DZZvsPwpWI72YXm3OWxRbZC2/sDDZx0o8qJOA3MdNBeNXMRtLvnW+4bENyT+FBI//RCJkDtbGJ1TSO5HEDJTBuJLxhF2p11WEeoEM4Ta6u81wlyaGt9o8Q2M/zsYV5kgOQ2bWx8FtgmY1z6qWfdLMUHp0Yvx/QPrb4dEk/+uAJZIM8dSYeVCUgRpJsaiJyvdmw967Z69pVarXnNzCyIKIvMkG255c8uwTZBrfWqwHLWLNJQ1D39xvpQkxuKvf79rtatvcHp9CY+4EFlb8BlRFXPHvXGz0RYv2vo3WuAGGY2Kuf69rfztilmbWS81rFaoOqRTbZSkHSEpqUU7YtFGEdoShAbb4k7SRXd0hS11bfdevi1q2sLF5mggFC/d10YS3xc4l/t6BM84uqrQwi1Jq6RXrb4Cl42MlsjoGHLux6pZrQu/fL1OX3j8DchGzDVw5mwgTXXs6T//GJ2MoXU2gys/lVb/I64XMuBvzAxaHQ84ayFLSkHz3MI1gwaiIYOzVBnN70+JvJ7UxM9nRoawdjeDc5fXUcjljZSm7nbGRb876PYb5pU5My+DilFfysi5DWxaD2DTMSCVgk3LvEjompgIn6lXGaktF6b2URtK3XQvZKXZmUFi5tTFmRhHoX3dVA+ZmHETju/FcjmRAb94s1rx8Pca/SK1Wpw94WLfL4XSgZ+VGBfSBNxzbX3KiKObhnmOYdNaL11uBqVdRKdMzb9EJrgb438CUSSaoVSRa5bNi7O0R+eOzTeGe6faKmstTvMcK/rh3IctYrq+imfSpPk/oUyt5uUT8658Sk66GHNknji2FEbaaR3PI5HW5HLLmrb12x1G2hbDX6ZhuUwz7twj2tVqnRXi35yY1eo/7E3GDw==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_addVariant
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-bulk.ParamsDetails.json b/docs/api-reference/reference/products-controller-create-bulk.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-bulk.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-bulk.RequestSchema.json b/docs/api-reference/reference/products-controller-create-bulk.RequestSchema.json
new file mode 100644
index 0000000000..f075a16045
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-bulk.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"type":"string"},"gtin":{"type":"string","description":"GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."},"identity":{"description":"Segments used to mint the OSPI identity for this product (Deel 4). Not required if you already issued an identity via POST /ospi-identities and pass ospiIdentityId instead.","allOf":[{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"}]},"ospiIdentityId":{"type":"string","description":"An already-issued, unattached OSPI identity ID"}},"required":["name"],"title":"CreateProductDto"}}},"required":["items"],"title":"BulkCreateProductDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-bulk.StatusCodes.json b/docs/api-reference/reference/products-controller-create-bulk.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-bulk.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-bulk.api.mdx b/docs/api-reference/reference/products-controller-create-bulk.api.mdx
new file mode 100644
index 0000000000..ba48d02904
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-bulk.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-create-bulk
+title: "ProductsController_createBulk"
+description: "ProductsController_createBulk"
+sidebar_label: "ProductsController_createBulk"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWdtuI7kR/ZUCX2IDrZut2Z3Rm8d2Fgqwa8f2TB68xoDqrpa4ZpM9ZFG2IgjIR+Qf9j/2U/IlQZHdkixp1hkgj35rsXkpVp1z2DxaClujk6SsGRdiJK6dLUJO/twaclZrdF9yh5LwY9CPIhO1dLJCQufF6P4hEw6/BvT00RYLMVrGn8phIUbkAmYit4bQEL+Sda1VHlfq/eat4Tafz7CS/ESLGsVI2MlvmBOv4zguUuj5rSKs/FY36ZxciGyv/RvDjaxwq5cnp8xUrDJRoM+dqjmmg+9zSTi1bsGpOfB6SurAuJ1pxU93418673uDk97gtDcYwtHZxU2n3393DP/5178hn2H+6EPVmUutCklYZGAsQW5NqVyFBcipVMYT/HQ7+IsHh1PlyS26HIAq0JCimPqXi97itEJDHoLHAshCpQwBzRCubq/H0A6E0jqgmfJQp8LD0QWihuFxF36xBG09QZWwsAGkdiiLBSjvA4dmNjPNlYTrq9s76Flfq07TrtCDNAXU0nvgF+Om/7gA3hXKoisyIbW+KsXo/rVKpijRndsCv1GUtmbc5VBx8FlWteamwcnp8N0PcYytamkWDfgPTbxb1OsmkI4PjGss1glMGy8VujaX8Mfvg+Hxi6X7/X5cnRefS6ekodfj5UE8wKNTUn+UlM9eHdBvB83R+ZcwN6GaoBOZqJRRVajEaJCJSj6n5w+841IGTWI0WDHRPbo5bqdmYq1GafZyc5O6Jlyt8ZFgfzLMYJ2V0x+PWxCALRtoI28DFIEN5NR0RpEmwWMZdITr5c01+IXJe5OgH0FVtXXke5U0oZQ5hTj8ybrHUtsnDzSTBAYTCWZWFyAhtwXCBEvrMFJiXToPZdB6AUnyii6cEcl81gREFiQ0GOl9TlUDLQkdeFJax1U9FMphTnoR41YEhUUfKR2jkOCRRZQQfhXBdJq8/irAE9ZQKufTjpk1lZ2j5zk8ORlzQRbOzu/Gny8j/9uifDKk9OugvTJ6ARVKo8yUs/mkaAbtHCNgyY5LP83QxMSkd1GzQcvao++K1Srbkvn7XUruEPAAtx4yQYoiQMcsI1dbqnBBVqweVpl4KRWvb+3MtNrUSdqUQTAyVg+LHc0bX+xtIp4QW4GdRwA0Mcegdkeko2drCB+Qh4alMtXW+CRhJ/3BvlxzMYf9/v6Lz+lU4AKUUmneV1RshObkhbmyjEEPEibBK4Pegwsau+L/dvyic9a93i1/VcE+nl18ubn8+6fL27u9Ct6SnGiEKvINO1zL2BAXj5SNkK/Qezl9ZZ29rEXhsAY5eRXTvlSoC9+QKCbyMMo2cxaD4clkWOSdk7J/0hm+/6Hfmbw7/dD5UA7Lkx/L4aA/eb+3qXPrHKbyRDVMm4m8i6xzHa8KBG2nB5iVJwK1O96OdAt3lzzlBZJUOiHu5SSpdrv9bxpEbjA6PATLn5X3ykwzqKQuLX+NRPjhcx0/CnKHkVNS+ze0vaHtu9B2uo+2s0AzhlOevoIngaBKAFwLXoRdjS62WwNH1oEi/ir2Nrgcwee2xgzSt8bp8Rss32D5XbAc7sPybnPYYrFB2vqzDp+Vp6iLKjXMlVdcNLIRt7nka/QbEt+Q+F1I/PCnSIz+gFY5+RR+BCErpSe+Whxhd9oFCUVIMEMIRn0NCHOpA77J4hsY/3cwrjJBcuo3dz2K9x6PeXDRe7pfiglKh44twdXDYavk25ZihTSz7D3W1kfgSJqJkejJWvXmg167Zrzui+h+zNf2YxvELaM1Ia0NpYFwNCpSU9Y8/NW6SpIYib/9446LznfNL3B2PYZHZFexqfOMqI4pY0rcbHzOy7bsa1/yvrUYv3U7XTdvG4qb1uQjbn5v23q7jtf+XMk4at2sQ2bWxm7acZuSpbTjKG1soy3XaLDtACVvd8d82LLgdi/v61d8s1emtJFNDebi3fxaS+ILBldh37bgHkdXNRq4JWkK6YrWhoFx47Yl9TqGnAlcN7N14efP1+mTkD8aeRCLE5xb40lRiCLwx+/D0xG04WZw5abSqH/G+XwG/FGaQWv3AefNZ8lQaJ5bfGfQeEI+g/NUG8Xvz4icmgTi53MtvV+Hm8GFzUP0aXmhQlF3O+ei3x10+41Uy5ylmuHINKmk2Rjba4bBhmKNhQUNxw4b3YTP1Ku1VIarFly0kBL97oWsFQczSFKeaJ+JSMKHTMyYq6N7sVxOpMdPTq9W3Pw1oFskakagTbjE91z2GcoiKsRSMMtY/uL507njWLi7DtHa3z2LVlk74izPsaY/7fuwJSdsRnPEzV8TVUK8k0+slvKJXZdM2JiTKByxbSm0NNMQTxGR5uScy0DbXuuOoGwb19IstiJcLlOPO/uIZrUSWbMV4t/Mh9Xqv1SIyOk=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_createBulk
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-relationship.ParamsDetails.json b/docs/api-reference/reference/products-controller-create-relationship.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-relationship.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-relationship.RequestSchema.json b/docs/api-reference/reference/products-controller-create-relationship.RequestSchema.json
new file mode 100644
index 0000000000..34b0fb59c2
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-relationship.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targetProductId":{"type":"string"},"relationshipType":{"type":"string","enum":["REPLACEMENT_FOR","ACCESSORY_FOR","COMPATIBLE_WITH","PART_OF","CONTAINS","VARIANT_OF","SUPERSEDES","REQUIRES"]},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"],"description":"Default PRIVATE (Deel 7 §42) — an internal/ERP relationship is not automatically public."},"metadata":{"type":"object"},"validFrom":{"type":"string"},"validUntil":{"type":"string"}},"required":["targetProductId","relationshipType"],"title":"CreateProductRelationshipDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-relationship.StatusCodes.json b/docs/api-reference/reference/products-controller-create-relationship.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-relationship.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create-relationship.api.mdx b/docs/api-reference/reference/products-controller-create-relationship.api.mdx
new file mode 100644
index 0000000000..d20d1576b1
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create-relationship.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-create-relationship
+title: "ProductsController_createRelationship"
+description: "ProductsController_createRelationship"
+sidebar_label: "ProductsController_createRelationship"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uIjkQgK9S8lMidQJJ2J0Z3ggQLavJwALJaIWiyHQX4Bm33WNXZ8KilvYQe4e5xxxlT7IqdycQQPMj7SNPNP4p18/nsssrYTN0kpQ1vUQ0xcDZJI/Jt60hZ7VGdx87lIRD1GGUX6hMRCKTTqZI6LxoTlbCyBRFU6hERMLhp1w5TESTXI6RUEY0RSZpISLh4wWmUjRXgpYZz/DklJmLorgrJ6KnS5ssecS2nNgaQkPcJbNMqzjoU/vgreG2HdF2+gFjYl0d20gKfeiVbo5U2ck27+jCmqyNHYfO7UGRQJOnojkRw+7gbavdve6+G99f9YciEq12uzsa9Yd/Vv/b/etBa9y7fNu9f98b/yYiMWgNx/f9q9D3btzqvRuJSNy2hr3Wu6p9dDPoDkfdTpd7ht0/bnrD7kjcFZF4UF5NlVa0/JZWg2HvtjXu8lo3l297bXEXiQR97FTGhomm6OBM5pqgGglHHUQNr+Drl8b5Mfz79z8gDShD6IzUte5wAJteAeXBWAKZk00lqVhqvYQsn2oVn7ILUySZSNoTELZBapVcOZvu9X7ovTGk9D5QNgGb7ERzT+zuIkGKNAtpB5Sr0ZtEd8iKoiiF+8waX7JyXj/jn5eOYxUb9fpuxy3rHUTCTCqNSQTWAS0QKrLhQVktCT1ImOZeGfQeXK7xVPxveKNz1n1/WGyT/VQ/yjQLvrpsde4ZvO5oLLbZGZGcaoRUxgtl8MShTEJDWBxYdsWA93L+nXV2vAYz68AaZOel1iHMFOrEn4riOUXs27abMpOzxvm0kcQn57P6+Unj9a/1k+kvF29O3swas/NXs8ZZffp6x6i2dYEd9EAL5StjPitagEf3gO7EqwRB2znrssVh8Ofa4k1NN/jrssgOklS6JO6lkDJ22+OHFZFrRhv7sLxW3iszjyCVemZdWuGHjxmLh9hhgoaU1P5A24G2n6LtYpe2Vk4LximWxKBNc4K0BPA54QXsMnSh3Ro4sg4UeXDobe5iBB/bDCNodYYn9fOL4wOWByx/CsvGLpbj9WGLyZq0xGJ5XcFH5Snkxer+Em5TGoFs4JavMegOJB5I/CkS33yTRIitmWkVky/VDxBypvQkCeEIT+enICHJS8wQcqM+5QgPUud4SIsHGH8cxiISJOdck3NMQyXPczzGuQsV42QlpigdOtGc3BU7ReGPlv8p0sLye0FmfQCIy/umqMlM1R7Oak9r11YqKWqbFZnnR4DgMVZyQ7URM1zy96RgBTYbWzVF1ceVdakk0RS/vx8zCtZn6h5agx58xKWInqK/IMqCI3mjDNevC90nGPa8BqyR2X0E2FPrb1bjG0X3RvX7stxdi9+scjeKX2VmNihWhbk/GvRgoCXxnZ5N3GEzjDjqZ2hgRNIk0iVQGQS9cOefVQnjGGLeM1kl7RSubwflLYzvaTyJ8wG0rfGkKA/77uuXxkWzkkPLCPpuLo36q/RMBHwPjKrl0EHbJugjCCpV309IRXArnZKGv9qScG6d4v4WkVPTnPi7raX3z+pG0LFxnmKY0soTRZwLGZ3S8Prp2Wm9yo4y5uzIsWYiUxnyYvUq9aQBrKmGkmrYwvqFY5+TCOEj1TItleEA5S48S5TET4TMFCt1VmbRcsdFoqm2nyLCPlzwbmlOxGo1lR5vnC4Kbv6Uo1uW2+GBfTTlyE9WIlGevxPRnEntcUe/52NBHA2rVHEMa/xf6l01SrMs4cv5n4gE75jwclfw69ICZRKSw6rqaJdrnIQdsJ64cwwV0dOMVhxjRt8ce7eRQQb9cIhMq1e/NBw+wsnP7ED5uVTSBptDdghtK6GlmefhABGlTI69zDkoz4HbyhrBqr1uWK3KEWP7EU1RPHuF+D87pij+AzWkP0k=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_createRelationship
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create.ParamsDetails.json b/docs/api-reference/reference/products-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create.RequestSchema.json b/docs/api-reference/reference/products-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..20d70efaeb
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"type":"string"},"gtin":{"type":"string","description":"GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."},"identity":{"description":"Segments used to mint the OSPI identity for this product (Deel 4). Not required if you already issued an identity via POST /ospi-identities and pass ospiIdentityId instead.","allOf":[{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"}]},"ospiIdentityId":{"type":"string","description":"An already-issued, unattached OSPI identity ID"}},"required":["name"],"title":"CreateProductDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create.StatusCodes.json b/docs/api-reference/reference/products-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-create.api.mdx b/docs/api-reference/reference/products-controller-create.api.mdx
new file mode 100644
index 0000000000..e93b65b416
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-create
+title: "ProductsController_create"
+description: "ProductsController_create"
+sidebar_label: "ProductsController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWdtuIzcS/ZUCX9YGWjdbk8zozWN7Ay2Q2Gt7Zh8cY0B1V0uM2WQPWZStFQTsR+w/5D/yKfmSoMhuSZaUeAfYR7+1eC1WnXO6ebQUtkYnSVkzLsRIXDtbhJz8uTXkrNbovuQOJaHIRC2drJDQeTG6f8iEw68BPX20xUKMlvGncliIEbmAmcitITTEXbKutcrjLr1fvDXc5vMZVpKfaFGjGAk7+QVz4n0cx0QKPfcaWeHWKE9OmalYZaJAnztV86IH+3NJOLVuwec60D0ldWDezrLih7vxT533vcFJb3DaGwzh6OziptPvvzuG3//zX8hnmD/6UHXmUqtCEhYZGEuQW1MqV2EBciqV8QQ/3A7+5sHhVHlyiy4HoAo0pCjm7uWmtzit0JCH4LEAslApQ0AzhKvb6zG0E6G0DmimPNSpanB0gahheNyFnyxBWxBQJSxsAKkdymIByvvAoZnNSnMl4frq9g561teq07Qr9CBNAbX0Hrhj3IwfF8CnQll0RSak1lelGN2/VskUJbpzW+CfFKWtGQ85VBx8llWtuWlwcjp8912cY6tamkWD3EML7xb1ugmk4wMDE4t1AtPBS4WuzSX89utgePxi636/H3fnzefSKWno9Xh5Ek/w6JTUHyXls1cn9NtJc3T+JcxNqCboRCYqZVQVKjEaZKKSz+n5A5+4lEGTGA1WzFSPbo7bqZlYq1GavdzcpKEJV2t8JNifDDNYZ+X0++MWBGDLBtrIxwBFYAM5NZ1RpEnwWAYd4Xp5cw1+YfLeJOhHUFVtHfleJU0oZU4hTn+y7rHU9skDzSSBwUSCmdUFSMhtgTDB0jqMlFiXzkMZtF5A0quiC2dEMp81AZEFCQ1Gep9T1UBLQgeelNZxVw+FcpiTXsS4FUFh0UdKxygkeGQVJISfRTCdJq8/C/CENZTK+XRiZk1l5+h5DU9OxlyQhbPzu/Hny8j/tiifDCn9OmivjF5AhdIoM+VsPimaQbvGCFhz49ZPMzQxMakvii5oWXv0XbFaZVs6fb9LyR0CHuDWQyZIUQTomGXkaksVLsiK1cMqEy+l4vWjnZlWmzpJmzIIRsbqYbGjeeOLvUPEN8RWYOcRAE3MMahVmuJra3zSopP+YF93uSrDfn+/43OSd85kKZXmAKP0IjTvQJgry2DyIGESvDLoPbigsSv+by9CdM6614flr0rRx7OLLzeX//x0eXu3V4pbkhONUEXiYIeLEhvi5pF7EbsVei+nr+yzl7WoANYgJ69i/pYKdeEbNsREHobLZs1iMDyZDIu8c1L2TzrD99/1O5N3px86H8phefJ9ORz0J+/3DnVuncNUnihr6TCRQJE+ruNVgaDt9ABF8sSE9sTbkW5h7pKXvECSSifEvVwk1W53/E2DyA1Gh4dg+aPyXplpBpXUpeXPigg/fK7j2z13GMkhtX9D2xvavgltp/toOws0Yzjl6XN2EgiqBMC14EXY1ehiuzVwZB0o4s9bb4PLEXxua8wgfTScHr/B8g2W3wTL4T4s7zYvWyw2SFt/n+Gz8hR1UaWGufKKi0Y24jaXfJl9Q+IbEr8JiR/+Eonxoq9VTj6FH0HISumJ7whH2J12QUIREswQglFfA8Jc6oBvsvgGxv8djKtMkJz6zaWNPM/xmAcXTaT7pZigdOjYnFs9HPY8Dht7FdLMsvtXWx9BI2kmRqIna9WbD3rr/aJ7MV/7f+3etwzSBLA2gga50WhITVnz8HfrKkliJP7xrzuuNd8Vv8DZ9RgecSGytrwzojpmiplwszEaL9tqt8bgn90p183bNuCmNbl/m9/bZtyuT7W/VrJ7Wg/qkAW1MYl2PKJkBO34QBuzZ8vrGWz7NslS3bEMtoyz3Sv3VpcypY3EaeAV79PXWhLfJTjz+1YDjzi6qtHALUlTSFe01gmMG4csCdUx5MzVulmtCz9+vk5ff/x9yJNYh+DcGk+KQuT7b78OT0fQBpvBlZtKo/4d1/MZ8PdnBq1FB5w1nyUToHluoZxB4+P4DM5TZRT3nxE5NQnEz+daer8ON4MLm4forfJGhaLudsZFvzvo9htVljmrMkOQWVFJs4W5NgLYsAnWbDrsSxM+U6/WUhmuSXDR8UlEuxeyVhzHIAn2mtwzpuPoXiyXE+nxk9OrFTd/DegWiYIRWhMu6z0bLzOURRSApWA2sbrF10vnjoPg4TpwMHuvmlXWzjjLc6zpL8c+bCkGm8bM7eY/gCph3MknFkP5xKZKJmxMRhSI2LYUWpppiC8JkdbkPMtA257ojnBsG8zSLLYiXC7TiDv7iGa1EllzFOLf7EitVn8Ayb6SyA==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-find-one.ParamsDetails.json b/docs/api-reference/reference/products-controller-find-one.ParamsDetails.json
new file mode 100644
index 0000000000..08719de9ac
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-find-one.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"locale","required":true,"in":"query","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-find-one.RequestSchema.json b/docs/api-reference/reference/products-controller-find-one.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-find-one.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-find-one.StatusCodes.json b/docs/api-reference/reference/products-controller-find-one.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-find-one.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-find-one.api.mdx b/docs/api-reference/reference/products-controller-find-one.api.mdx
new file mode 100644
index 0000000000..ea71be5f9d
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-find-one.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-find-one
+title: "ProductsController_findOne"
+description: "ProductsController_findOne"
+sidebar_label: "ProductsController_findOne"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1OKzcQx19l5CuQnE/S9rB3aaAVlY6gwKEXCCFnPZv4HK+92LMcaLTP0/fok1XjXUIgp5wi9TJX2fXH+O+Zn2c9WQlfYVBkvDvRIhNnwes6pzjzjoK3FsNtYZw+dSikqFRQJRKGKLLrlXCqRJEJo4UUAe9qE1CLjEKNUhgnMlEpWgopYr7EUolsJeix4hmRgnEL0TRybcT6XFn8N0N3NYbHNy3d8MxYeRcxcv94OOQfjTEPpuLtiUyIRorJtzqulDU6OQEKZSxqCT4ALRFYDkaCe+OtIoygYF5H4zBGCLXFvpAi947QEZtVVWVNniwNPke2vdoW7eefMSf2Z2Dnk2klYwg+fH9Y7jVue0AKfFBlZbnp5+nR7fnx75+OLy6FfLXTC1Jzi1CqfGkc9gIqnRrS4sC2++ylEmNUi++ss+U1KHwA75CdV/qAUBi0OiaLnSMZsrds6tFkPJ/ovDcuhuPe5MOPw978h4PD3mExKcY/FZPRcP5ha1MzHwK24aGlid1mvhpaQsRwj6EXjUawfsFamk3Irlt/Pu94U+mNFGQo6Tpmk0dIytgj8ltG2ti9Hn/eEdnOaBJ9o236PpoYjVtIKJUtfCg7/PChYvOQB9ToyCgbd7TtaHsXbQfbtE1rWjJOuSIGbV4TlC2A64SXsKswpHbvYM8HMBQhYPR1yBFi7iuUMD067w3HB/s7LHdYvgvLyTaWl88fW9TPpGmPEZwnwAcTKeVF0zbcm2g4aOQTt7niy8qOxB2J7yLx8E0SIfeusCan2MpPEHKmjKQIYQ/7iz4o0HWLGULtzF2NcK9sjbu0uIPxv8PYSEFqwYUVxzTVYDwnYl4HQ4+p4JqjChhEdn3D9c7Lfb5ZuJVIS8/l3QITNFyXZWKgKjO4Hw2e1husjG64ykp+YSkbAi6Y1JayJxkdvrylrkl2D7/4UCoSmfjtj0sOuI+VuYXp2Ql8Qa7juhgviarkLuMKn2Lfeej04uwEzqwivg7zvK2wphF7pxU6uCDltAoaOhfASbouF91Z24eccas6a334eHXWXmD4isOT+CjBzLtIhuqE7N9/TQ6yzg49SjgNC+XMn8lelMBXKNkthwFmXmOUkCR1z0/RkHClglGOn2aKcOGD4f4pUTDzmvh5ZlWMa7kSjnxel5imTGttiNMIx6Pd+LA/6g+7xKJyTizswMpHKlVKKV1B/aQAnoEABgJaIl54c33oCB9oUFllHB/LOljua2m5FqoyrGTUZp2WUCkyk87C0kfiQavVXEX8FGzTcHNbuDO72kROJlpkhbIRtxSsE6XYO+8Ozz48o/JSGVO08Z9BSrepvr/hl2B4pf9/1a5RucfNNZ/UGC2am0aKJSqdDumq65jmOVa0MWXrQ8Cy10f012POzKpmp68D8+p8JevflLNatSMu/Rd0TbNWR/zOApvmH1l7Iy8=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_findOne
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-relationships.ParamsDetails.json b/docs/api-reference/reference/products-controller-list-relationships.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-relationships.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-relationships.RequestSchema.json b/docs/api-reference/reference/products-controller-list-relationships.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-relationships.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-relationships.StatusCodes.json b/docs/api-reference/reference/products-controller-list-relationships.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-relationships.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-relationships.api.mdx b/docs/api-reference/reference/products-controller-list-relationships.api.mdx
new file mode 100644
index 0000000000..04699855ab
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-relationships.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-list-relationships
+title: "ProductsController_listRelationships"
+description: "ProductsController_listRelationships"
+sidebar_label: "ProductsController_listRelationships"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMWKbBImmTTQxAEtDiyuEuRCjlKkxp6nr5Hn6wYSnE+vNjd3H0yTXKGfw5/HHO8Fr7GoMh4d6JFJs6C101OceEdBW8thltrIp2jTXNiaeoopKhVUBUShiiy67VwqkKRCaOFFAHvGhNQi4xCg1IYJzJRKyqFFDEvsVIiWwt6rNkiUjBuJdr2hg1j7V3EyOPT8Zg/NMY8mJqXFpkQrRSzrw1cKWt0EgiFMha1BB+ASgRWg5Hg3nirCCMoWDbROIwRQmNxKKTIvSN0xG5VXVuTJ0+jz5F9r7dF++VnzImjEDh4ZDrJGIIP35+We43bEZACH1RVW+76dX50e37856fji0sh3+z0gtTSIlQqL43DQUClU0daHNj3kKNUYYxq9Z11tqIGhQ/gHXLwKh8QCoNWx+SxDyRD8i2fejKbLmc6H0yL8XQw+/DzeLD86eBwcFjMiukvxWwyXn7Y2tTCh4Dd8VBpYr+Zvw2VEDHcYxhEoxGsX7GW9iVj1108n3f8UumNFGQo6Tpml0dIytgj8ltOurN7O/+8J7KzaBN9k236PpoYjVtJqJQtfKh6/PChZveQB9ToyCgbd7TtaHsXbQfbtM0bKhmnXBGDtmwIqg7ATcJL2NUYUr93sOcDGIoQMPom5Agx9zVKmB+dD8bTg/0dljss34XlbBvLy+cfW9TPpGmPEZwnwAcTKeVF03Xcm2j40MgnbnPFj40diTsS30Xi4TdJhNy7wpqcYic/QciZMpIihD0croagQDcdZgiNM3cNwr2yDe7S4g7GH4exlYLUisshPtNUQ7FNxLwJhh5TmbREFTCI7PqG653X+/zBwqtCKj0XaitM+HBdlYmRqs3ofjJ6Wnm0NrodhTe2XbxY4gthF0xwR9+TvB5r3mrfJfvGbz5UikQm/vjrkkHwsTa3MD87gS/4KOTT2ZdEdQqjcYVPTPSRO704O4Ezq4ifyWy3ddxpxt5pjQ4uSDmtgoY+NHCSntFFfwf3IWcM697bED5enXUPG376sBFfMVh4F8lQk1D+79/ZQdb7oUcJp2GlnPmni5IEflrJfjkMsPAao4QkqW8/nZKEKxWMctxaKMKVD4bH50TBLBvi9sKqGDdyJRz5vKkwmcwbbYjTC59Ht/HxcDIc9wlH5ZxwOIC1j1SplGr6GvtJATyDAgwKvCXlVVw315LwgUa1VcbxxW2C5bGOomuhasOaJl1e6hiWIuvL+pfub6QofSQ2Wq+XKuKnYNuWu+8aDI8dYvccoiUf/PVaaBO5rUVWKBtxS98m0Yq98/7y7cMzUq91953KMXQpWfO/A1IwhelviPamlaJEpdN1W/cD8zzHml6YbKV0vpebK/b7MedY1XBwNgF8cyOS96/KWa+7GZf+C7q23agj/s4C2/Z/VsMALw==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_listRelationships
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-serialized-units.ParamsDetails.json b/docs/api-reference/reference/products-controller-list-serialized-units.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-serialized-units.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-serialized-units.RequestSchema.json b/docs/api-reference/reference/products-controller-list-serialized-units.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-serialized-units.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-serialized-units.StatusCodes.json b/docs/api-reference/reference/products-controller-list-serialized-units.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-serialized-units.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-serialized-units.api.mdx b/docs/api-reference/reference/products-controller-list-serialized-units.api.mdx
new file mode 100644
index 0000000000..5e673e9cec
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-serialized-units.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-list-serialized-units
+title: "ProductsController_listSerializedUnits"
+description: "ProductsController_listSerializedUnits"
+sidebar_label: "ProductsController_listSerializedUnits"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMWKbBIGifpIQgCWhzZ3JVIhRxlkzX0PH2PPlkxlGwn0WJ3c/fJNKkZ/Tn8zZjjtXAlekXG2TMtEnHhna5SCjNnybs8R3+fm0Bz9Ebl5ivqa2soCClK5VWBhD6I5HYtrCpQJMJoIYXHh8p41CIhX6EUxopElIpWQoqQrrBQIlkLei7ZIpA3dinq+o4NQ+lswMDr4+GQPzSG1JuSBYpEiFqKybcWblRudNwGZMrkqCU4D7RCYDUYCB6NyxVhAAWLKhiLIYCvcuwLKVJnCS2xW1WWuUmjp8GnwL7XXdFu8QlT4ih4Dh+ZRjJ67/yPH0udxm4EpMAnVZQ5T/0+Pbm/PP37+nR+JeSbnc5JLXKEQqUrY7HnUek4EV8O7LvPUSowBLX8wXs6UYPMeXAWOXiF8wiZwVyH6LENJGPyPZ96NBkvJjrtjbPhuDf58Ouwt/jl6Lh3nE2y8W/ZZDRcfOhsaua8x+Z4aGVCu5kvhlYQ0D+i7wWjEXK3ZC31S8Zum3judvxS6Z0UZCjqOmWXJ0jK5CfkOk6as3v7/GVLZGNRR/pGXfo+mhCMXUooVJ45X7T44VPJ7iH1qNGSUXnY07an7V20HXVpm1a0YpxSRQzaoiIoGgC3BS9iV6KP887CgfNgKIDH4CqfIoTUlShhenLZG46PDvdY7rF8F5aTLpZXux9b1DvStMMA1hHgkwkU66JpJh5NMHxo5CK3qeLrxp7EPYnvIvH4uyRC6myWm5RCIz9CyJUykCKEA+wv+6BAVw1mCJU1DxXCo8or3JfFPYw/D2MtBaklt0N8prGLYpuAaeUNPcc2aYHKoxfJ7R33O6/3+dOtV4G0ctysLTECxJ1VIgaqNIPH0WDz7sHa6HoQtta9qjVvgsY6X6ibM8YNghuNLdu833ZKtoM/nC8UiUT89c8V0+BCae5henEGn/FZyA0AK6IyxtLYzEUw2vCdzy/O4CJXxHdltuuceXzi4LxEC3NSViuvoY0PnMW7dNYm4iGkzGLZeuvDx5uL5nbD9x824jyDmbOBDFWR5//+nRwlrR96lnDul8qar9FfkMD3K9m+Dj3MnMYgIUpqx5ujknCjvFGWRzNFuHTe8PqUyJtFRTye5SqErVwJJy6tCowm00ob4hrD59FsfNgf9Ydt1VEpVx0OYOkCFSrWm7bR3iiAHS3AtMAOF9jw8iq02/QkfKJBmStjOYErn/Naw9KtUKVhWaOmPjUsS5HE9r6D1J0UKxeI7dbrhQp47fO65umHCv1zA9ojB2rBx3+7FtoEHmuRZCoP2JG4rbni4LLNw0PYgfVaejupLKMX6zb/USAFsxj/kajvailWqHTMvHW7ME1TLOmFSae6c4puc+3PUy63quL4bGP4Ji+i92/KWa+bJ67cZ7R1vVVH/J0F1vX/JJwEiw==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_listSerializedUnits
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-translations.ParamsDetails.json b/docs/api-reference/reference/products-controller-list-translations.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-translations.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-translations.RequestSchema.json b/docs/api-reference/reference/products-controller-list-translations.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-translations.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-translations.StatusCodes.json b/docs/api-reference/reference/products-controller-list-translations.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-translations.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-translations.api.mdx b/docs/api-reference/reference/products-controller-list-translations.api.mdx
new file mode 100644
index 0000000000..e41f1cf535
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-translations.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-list-translations
+title: "ProductsController_listTranslations"
+description: "ProductsController_listTranslations"
+sidebar_label: "ProductsController_listTranslations"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1uGzcQx19lwJMNUJ9W23hvquwWLhDYtR33YBgGtZyVmHDJNTmrWhX2efoefbJiuGv5Q0ES33USRXKGfw5/HHG0Eb7CoMh4d6ZFJi6C13VOceYdBW8thntrIl0H5aJN06KQolJBlUgYoshuN8KpEkUmjBZSBHyoTUAtMgo1SmGcyESlaCmkiPkSSyWyjaB1xRaRgnEL0TR3bBgr7yJGHh8Ph/yhMebBVLysyIRopJh8beBGWaOTOCiUsagl+AC0RGA1GAlWxltFGEHBvI7GYYwQaot9IUXuHaEjdquqypo8eRp8jux7syvazz9jThyFwLEj00rGEHz4/rTca9yNgBT4qMrKctev05P7y9M/P51eXQv5ZqdXpOYWoVT50jjsBVQ6daTFgX33OUolxqgW31lnJ2pQ+ADeIQev9AGhMGh1TB67QDIj3/KpR5PxfKLz3rgYjnuTDz8Pe/Ofjo57x8WkGP9STEbD+YedTc18CNgeDy1N7Dbzt6ElRAwrDL1oNIL1C9bSvGTsto3n845fKr2TggwlXafs8gRJGXtCfsdJe3Zv5192RLYWTaJvtEvfRxOjcQsJpbKFD2WHHz5W7B7ygBodGWXjnrY9be+i7WiXtmlNS8YpV8SgzWuCsgVwm/ASdhWG1O8dHPgAhiIEjL4OOULMfYUSpieXveH46HCP5R7Ld2E52cXy+vnHFvUzadpjBOcJ8NFESnnRtB0rEw0fGvnEba74rbEncU/iu0g8/iaJkHtXWJNTbOUnCDlTRlKEcID9RR8U6LrFDKF25qFGWClb4z4t7mH8cRgbKUgtuBziM00lFNtEzOtgaJ3KpDmqgEFkt3dc77ze54/VXSXS0nOZtsBED5dVmRioygxWo8HTwoON0c2AXpu20WKBL2RdMb8te0/iOqh5o12X7Bq/+VAqEpn4469rxsDHytzD9OIMvuBayKeTXxJVKYjGFT4R0cXt/OriDC6sIn4ks93OYacZB+cVOrgi5bQKGrrAwFl6RBfdDTyEnCGsOm99+Hhz0T5r+OHDRnzBYOZdJEN1Avm/fydHWeeH1hLOw0I5808bIQn8sJLdchhg5jVGCUlS1346Iwk3KhjluDVThAsfDI9PiYKZ18TtmVUxbuVKOPF5XWIymdbaECcXPo9248P+qD/s0o3KOd1wACsfqVQp0XQV9pMCeMYEGBN4w8mrsG7vJOEjDSqrjONbWwfLYy1Dt0JVhiWN2qTUAixFlmr6VyjdSbH0kdhms5mriJ+CbRrufqgxrFvAVhygOR/77UZoE7mtRVYoG3FH3jbJioPL7uIdwjNQr2V3ncoxcilR8z8DUjCD6S+I5q6RYolKp6u26QameY4VvTDZSed8J7f36/dTzq+q5ths4/fmPiTvX5Wz2bQzrv0XdE2zVUf8nQU2zf8aEP4x
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_listTranslations
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-variants.ParamsDetails.json b/docs/api-reference/reference/products-controller-list-variants.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-variants.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-variants.RequestSchema.json b/docs/api-reference/reference/products-controller-list-variants.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-variants.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-variants.StatusCodes.json b/docs/api-reference/reference/products-controller-list-variants.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-variants.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list-variants.api.mdx b/docs/api-reference/reference/products-controller-list-variants.api.mdx
new file mode 100644
index 0000000000..6542ff6ed7
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list-variants.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-list-variants
+title: "ProductsController_listVariants"
+description: "ProductsController_listVariants"
+sidebar_label: "ProductsController_listVariants"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1uIzcMx1+F0CkB5M+47WZurpMWKbDYNMmmhyAI5BFta1cjTSSON64xz9P36JMV1IztJF5smrtPHuuD8xf5Iy16LXyJQZHx7kKLTFwGr6uc4sQ7Ct5aDA/WRLpVwShHUUhRqqAKJAxRZHdr4VSBIhNGCykCPlYmoBYZhQqlME5kolS0EFLEfIGFEtla0KrkHZGCcXNR1/e8MZbeRYw8P+z3+UNjzIMpWZnIhKilGH1v4lZZo5N+mCljUUvwAWiBwGowEiyNt4owgoJpFY3DGCFUFrtCitw7QkdsVpWlNXmy1PsS2fZ6X7SffsGc2AuB/UamkYwh+PD2stxr3PeAFPikitLy0K/js4er8z8/n1/fCPnqpNekphahUPnCOOwEVDoNpJcD2+6ylwqMUc3feM+e12DmA3iH7LzCB4SZQatjstg6kvn4kU09GA2nI513hrP+sDP68HO/M/3p5LRzOhvNhr/MRoP+9MPeoSY+BGzCQwsT28N8M7SAiGGJoRONRrB+zlrq54zdNf7cnfi50nspyFDSdc4mz5CUsWfk94w0sXu9/qolstlRJ/oG+/R9NDEaN5dQKDvzoWjxw6eSzUMeUKMjo2w80Hag7V20nezTNq5owTjlihi0aUVQNABuC17CrsSQxr2DIx/AUISA0VchR4i5L1HC+Oyq0x+eHB+wPGD5LixH+1je7H5sUe9I0x4jOE+ATyZSqoumGViaaDho5BO3ueJ7xoHEA4nvIvH0hyRC7t3MmpxiIz9ByJUykiKEI+zOu6BAVw1mCJUzjxXCUtkKD2XxAOP/h7GWgtSc2yGOaWqfeE/EvAqGVqlNmqIKGER2d8/9zstzvt1zFUgLz+3ZHBM53FJloqdK01sOepuX9tZG173lblvjJRb2TM41c9swtxHVwswHbIdk+/CbD4UikYk//rrh8PtYmgcYX17AV1wJuYn4gqhMzjNu5hMJrb8+XV9ewKVVxJdj3rcX5LTi6FOJDq5JOa2ChtYhcJEuz7M2844hZ/jK1loXPt5eNtcZvvDwJk4smHgXyVCVAP73n9FJ1tqhlYRPYa6c+TvZixL4QiXb12GAidcYJSRJ7fMmNhI24ZAwUYRzHwzPj4mCmVbEzxOrYtzKlXDm86rAtGVcaUNcVDgezcH73UG335YZlXOZYQeWPlKhUoFpO+uNAtjhAYwHPOPjhUu3eUj4RL3SKuM4U6tgea5h506o0rCcQVOIGmilyFIfv0XoXoqFj8Tr1+upivg52Lrm4ccKw6oBK62ecrjv1kKbyM9aZDNlI+5J2xZVcXTVJtox7EB6KbkdVG6VRNmKvwkpmL30l0N9X0uxQKVTaq3biXGeY0nPtuyVb87BbU79fs71VFXsl63vXuVBsv5dOet1s+LGf0VX11t1xN9ZYF3/B5GD9Y8=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_listVariants
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list.ParamsDetails.json b/docs/api-reference/reference/products-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..04896d1517
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"pageSize","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"sortBy","required":false,"in":"query","description":"Field to sort by","schema":{"type":"string"}},{"name":"sortDir","required":false,"in":"query","schema":{"default":"asc","enum":["asc","desc"],"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list.RequestSchema.json b/docs/api-reference/reference/products-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list.StatusCodes.json b/docs/api-reference/reference/products-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-list.api.mdx b/docs/api-reference/reference/products-controller-list.api.mdx
new file mode 100644
index 0000000000..0d1a3a10ce
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-list
+title: "ProductsController_list"
+description: "ProductsController_list"
+sidebar_label: "ProductsController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9v2zYQwL/KgU8pIDu2422N31w7HTKgSBan2UMQBLR0stlSpEKe0qSGPs++xz7ZcBRjO1HmNnv2G0WR9/fHE08rYUt0kpQ1p5kYiXNnsyolP7GGnNUa3a1WnkQiSulkgYTOi9H1ShhZoBiJUi5QJMLhXaUcZmKUS+0xEcqIkbir0D2KRPh0iYUUo5UolFFFVYhRPxEZ5rLSFMb0WLI0UxVzdKKuk2cKZur7/1VSyIc47vW2VA56u3R66+jD4w81ZuhTp0qOnRiJjwp1BmSBd8P8uUlRlyenzKKla6rcG9xbOyGkT0Ui0LB/1/GJjRI3SUvjDSvwpTUePUsZ9HqNsG0fRJ2I4WsvrqRWWaAEcqk0ZglYB7REYKvRE9wrqyWhBwnzyiuD3oOrNHZFIlJrCA2xWFmWWqVB0uEXz7JX7TDZ+RdMA3OO6STVmIzOWffjZanNsB3zROCDLErNUx/G09uLkz8/n8wuW2mckZxrhEKmS2Ww41BmYSIoB5bd5SgV6D2jv1NPK2qQWwfWIAevsA4hZ2h8kBgDyadwl8ysPxzMh1naGeS9QWf4/tdeZ/7L0XHnOB/mg9/yYb83f99yamKdwyY9tFQ+OvNN0RI8unt0Ha8yBG0XbEu9zeJ1E8+Nx9uWMmeKgl0nLHKKJJWekm0JaXL3cv1FJLLZUQf6+m36PinvlVkkUEidW1dE/PChZPGQOszQkJLa72nb0/Ym2o7atI0rWjJOqSQGbV4RFA2A64IXsCvRhXlr4MA6UOTBobeVSxF8aktMYDy96PQGR+/2WO6xfBOWwzaWl5uPLWYb0jKLHowlwAflKdRF1UzcK684aWQDt6nk29yexD2JbyLxeCeJkFqTa5WSb8wPEHKl9CQJ4QC7iy5IyKoGM4TKqLsK4V7qCvdlcQ/jz8NYJ4LkgptPzmloUnmPx7Ryih5DUzpH6dCJ0fUN9zvP/fzvzrZAWlpufhfYNLq0FCNxKEt1eN8/XCtjXRwPNmFL8YwJbeh6Uh+xZVfiVBIHH60rJLduf/x1yYm2vlS3MD4/ha/IXV7M7ZKoDGFSJrch5zEyZ7PzUzjXkvgazPta6QwrDs5KNDAjaTLpMoiuw2m4JufxjL2DlDEro7QufLo6by4ufLXhTXyEYGKNJ0VVQPWfv4dHoyiHHhM4cwtp1PcgzyfAV6ckqkMHE5uhTyCYFMdPWUjgSjolDY8mknBhneL3YyKn5hXxeKKl92tzE5jatCowbBlXmSIuH5yPxvFet9/txYIiUy4oHMDSeipkKCWx4X6yADYgQAThWSTXB43wgQ5LLZXho1g5ze8aSK6FLBVb0W8qzZrKpfXEr1erufT42em65ummmWdSM+W5dGyafc7/+ndKKI9NP75zafwxsnv5C6/WBfe1PxavutzoW/8U+RnjNn81Nqtv+MEpXh5OaCKWKLNwXFdx2zhNsaStXa1PAktZn9ffT7hGy4pTsU7XixMXpMdX0mzbv1o1Ky7tVzR1LZ5sJ34W9U1d1/8Ci4aF7g==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-publish.ParamsDetails.json b/docs/api-reference/reference/products-controller-publish.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-publish.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-publish.RequestSchema.json b/docs/api-reference/reference/products-controller-publish.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-publish.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-publish.StatusCodes.json b/docs/api-reference/reference/products-controller-publish.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-publish.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-publish.api.mdx b/docs/api-reference/reference/products-controller-publish.api.mdx
new file mode 100644
index 0000000000..9300cefed2
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-publish.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-publish
+title: "ProductsController_publish"
+description: "ProductsController_publish"
+sidebar_label: "ProductsController_publish"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEElDiyuSuRCjlKkxp6nr5Hn6wYSraTeJFt7j6ZJjWjP2d+HHO8Fq5Cr8g4e6FFIube6TqjMHOWvCsK9PdVnRYmrIQUlfKqREIfRLJYC6tKFIkwWkjh8aE2HrVIyNcohbEiEZUiNgvZCkslkrWg54otAnljl6Jp7tgwVM4GDLw+Ho74Q2PIvKlYlEiEaKSYDIf7C7eqMDpKh1yZArUE54FWCKwGA8GjcYUiDKAgrYOxGAL4usC+kCJzltASu1VVVZgsehp8Dex7vS/apV8xI46C55CRaSWj987/+LHMadyPgBT4pMqq4Klfp2f3V+d/fDm/vhHyzU6vSaUFQqmylbHY86h0nIgvB/bd5yiVGIJa/uA9e1GD3HlwFjl4pfMIucFCh+ixCySj8Z5PPZqM04nOeuN8OO5NPv087KU/nZz2TvNJPv4ln4yG6ae9Tc2c99imh1YmdJv5y9AKAvpH9L1gNELhlqylecnYoo3nbscvld5JQYairnN2eYakTHFGbs9Jm7u3z191RLYWTaTvO1h+NiEYu5RQqiJ3vuzww6eK3UPmUaMlo4pwoO1A24doO9mnbVrTinHKFDFoaU1QtgBuC17ErkIf552FI+fBUACPwdU+QwiZq1DC9OyqNxyfHB+wPGD5ISwn+1je7H5sUe9I0w4DWEeATyZQrIumnXg0wXDSyEVuM8VXjAOJBxI/ROLpuyRC5mxemIxCKz9CyJUykCKEI+wv+6BA1y1mCLU1DzXCoypqPJTFA4z/H8ZGClJLboc4p7FzYpuAWe0NPcc2KUXl0Ytkccf9zut9vttulUgrx01Z5UKkhtupRAxUZQaPo8HmhYO10c1gZ9YGiDW9UHLNyLa4bfR0HPPeuinZDX5zvlQkEvH7nzeceRcqcw/T+QV8w2chN8leEVUxbsbmLkLQheryen4B80IR34vZbi+/8YmjywotXJOyWnkNXSzgIt6b8+7QHUPG3FWdtz58vp23Nxm+67ARnymYORvIUB3Z/fefyUnS+aFnCZd+qaz5O/oLEvguJbvXoYeZ0xgkREndeJMWCbfKG2V5NFOES+cNr0+JvElr4vGsUCFs5Uo4c1ldYjSZ1toQ1xPOR7vxYX/UH3YVRmVcYTiAnOBSxdrSNdUbBbAjA3YpfhXM7eEjfKJBVShj+XjWvuC1FpqFUJVhIaO2+rSkSpHE5n3j+E6KFaOWLMR6naqAX3zRNDz9UKN/bol65IiknOfFWmgTeKxFkqsi4J6ybSEVR1fd4TqGHUGvFXeTyjJjsRhz9y8FQxf/ZmjuGilWqHQ8TutuYZplWNELk72Szedue5jml7GIqprjso3dmxMQ3X9Xz3rdPnHjvqFtmq084u+ssGn+Azen71M=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_publish
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-recall.ParamsDetails.json b/docs/api-reference/reference/products-controller-recall.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-recall.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-recall.RequestSchema.json b/docs/api-reference/reference/products-controller-recall.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-recall.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-recall.StatusCodes.json b/docs/api-reference/reference/products-controller-recall.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-recall.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-recall.api.mdx b/docs/api-reference/reference/products-controller-recall.api.mdx
new file mode 100644
index 0000000000..bf62b88984
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-recall.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-recall
+title: "ProductsController_recall"
+description: "ProductsController_recall"
+sidebar_label: "ProductsController_recall"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEEtDiyuUuRCjlKkxp6nr5Hn6wYSnE+vMg2d59Mk5rRnzM/jjneCF9hUGS8O9MiE/PgdZ1TnHlHwVuL4TZgrqwVUlQqqBIJQxTZYiOcKlFkwmghRcC72gTUIqNQoxTGiUxUitZCipivsVQi2wh6rNgiUjBuJZrmhg1j5V3EyOvj4Yg/NMY8mIo1iUyIRorJcLi7cK2s0Uk5FMpY1BJ8AFojsBqMBPfGW0UYQcGyjsZhjBBqi30hRe4doSN2q6rKmjx5GnyN7HuzK9ovv2JOHIXAESPTSsYQfPjxY7nXuBsBKfBBlZXlqV+nJ7cXp398Ob28EvLNTi9JLS1CqfK1cdgLqHSaSC8H9t3nKJUYo1r94D07UYPCB/AOOXilDwiFQatj8tgFksl4z6ceTcbLic5742I47k0+/TzsLX86Ou4dF5Ni/EsxGQ2Xn3Y2NfMhYJseWpvYbeYvQ2uIGO4x9KLRCNavWEvzkrFFG8/nHb9UeiMFGUq6TtnlCZIy9oT8jpM2d2+fv+iIbC2aRN93sPxsYjRuJaFUtvCh7PDDh4rdQx5QoyOjbNzTtqftQ7Qd7dI2rWnNOOWKGLRlTVC2AG4LXsKuwpDmvYMDH8BQhIDR1yFHiLmvUML05KI3HB8d7rHcY/khLCe7WF49/9iifiZNe4zgPAE+mEipLpp24t5Ew0kjn7jliwWGPYl7Ej9E4vG7JELuXWFNTrGVnyDkShlJEcIB9ld9UKDrFjOE2pm7GuFe2Rr3ZXEP4/+HsZGC1IrbIc5papzYJmJeB0OPqU1aogoYRLa44X7n9T7f67ZKpLXnlqzyMUHD3VQmBqoyg/vR4Ol9g43RzWBr1YaHFb3QccnAtrA9qeko5p11U7Ib/OZDqUhk4vc/rzjvPlbmFqbzM/iGj0I+pXpNVKWoGVf4hEAXqPPL+RnMrSK+FbPdTnbTEwfnFTq4JOW0Chq6SMBZujUX3ZE7hJypqzpvffh8PW/vMXzTYSM+UTDzLpKhOpH77z+To6zzQ48SzsNKOfN38hcl8E1Kdq/DADOvMUpIkrrxU1IkXKtglOPRTBGufDC8PiUKZlkTj2dWxbiVK+HE53WJyWRaa0NcTTgf7caH/VF/2NUXlXN94QByfkuVKkvXUj8pgGcuYJvhV7HcnjzCBxpUVhnHZ7MOltdaZBZCVYZ1jNrS02IqRdZ17snvjRRr5ixbiM1mqSJ+CbZpePquxvDY8nTP8VhylhcboU3ksRZZoWzEHWHbIioOLrqDdQjP/LwW3E0qx4SlQsydvxSMXPqLoblppFij0ukobbqFaZ5jRS9Mdso1n7ntSZqfpwKqag7LNnRv+E/uv6tns2mfuPLf0DXNVh7xd1bYNP8BxJPsvw==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_recall
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-unit.ParamsDetails.json b/docs/api-reference/reference/products-controller-register-serialized-unit.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-unit.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-unit.RequestSchema.json b/docs/api-reference/reference/products-controller-register-serialized-unit.RequestSchema.json
new file mode 100644
index 0000000000..f710cce330
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-unit.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"variantId":{"type":"string","description":"Optional — registers the unit under a specific variant rather than the base product."},"serialBatch":{"type":"string","description":"The real per-unit/per-batch value (Deel 4 segment [EEEEEEEE]) — not the \"00000000\" placeholder.","example":"00000001"}},"required":["serialBatch"],"title":"RegisterSerializedUnitDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-unit.StatusCodes.json b/docs/api-reference/reference/products-controller-register-serialized-unit.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-unit.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-unit.api.mdx b/docs/api-reference/reference/products-controller-register-serialized-unit.api.mdx
new file mode 100644
index 0000000000..5668d7fe99
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-unit.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-register-serialized-unit
+title: "ProductsController_registerSerializedUnit"
+description: "ProductsController_registerSerializedUnit"
+sidebar_label: "ProductsController_registerSerializedUnit"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4JMNrCzJVttEb47sAi5Q2LWd9MExgtFypGXCJTfkrGNHWKCH6B16jx6lJymGu5Isy0hqoI/Si2n+DOfn4yyHC+UrCsjGuzOtxuoieF3nHCfecfDWUvgQaG4iU7iiYNCar6TfOsMqUxUGLIkpRDW+WSiHJamxMlplKtDn2gTSasyhpkwZp8aqQi5UpmJeUIlqvFD8UMmKyMG4uWqa23YhRX7j9YPMeCon947JsQxhVVmTJ837H6N30rcl2k8/Up50DWInG4oyeofBoGOx+KkWmdIU82AqEazG6jw10MI/f/wJS1dE4IKgdoahdpoCIMSKcjMzOXSyISAXFIALdGn2FCNB1br3QDWZismfb5Dz4vtqXBcEgdBCRaEnG/elMZXFcIe2Jtg7IbIwgkjzkhzDzWn3u91PujvPSY/3atD93iuoLOZUeKspHKhM0T2WlRU1uilD1TSPo3mzofVtpthwmn/5LCQn7FXTtCJi5V1s3X84GMqfTQvFJaPBYHvgHVqjU5xhhsaSzsCHZEoHC9wZb5EpAsK0jsZRjBBqS2LS/0QMheDD96flXtNzwVw79s3xyYfL09/enl5dbwX5inFqCUrMC+OoFwh16kibg8hO4JQUI86/s8+W12DmA3hH4rzSB4KZIatjktg58vnzsJaph6PD6UjnvcPZ4LA3evXjoDf94eh17/VsNDv8aTYaDqavtoya+BCoDQ8XJnbGfDFcQKRwR6EXjSawfi66PKEt+XNt8WNNH8F3KiJPiNHYlrhNIW3sns6/7IhcMzp6DstfTYzGzTMo0c58KDv86L4S8ZAH0uTYoI072na0vYi2o23ajmsuBKccWUCb1gxlC+Aq4SXsKgqp3zvY8wEMRwgUfR1ygpj7ijI4PrnsDQ6P9ndY7rB8EZajbSyv1x9b0mvStKeY7hV0byKnvGjajjsTjQSNfeI2R7lJ7kjckfgiEl9/k0TIvZtZk3Ns1U8QSqaMjEywRwfzA0DQdYtZuq9/rqm9Lu/S4g7G/w5jkynGuZS5qqvgoqyJlNfB8EMqf6eEgYIa39xKHbtp50uq6pK48FKKVz62VTYXaqz6WJn+3bC/3L+/MLrpx9XqVBRGlcrKu7Ykf6ThlaDcYrjUs+NbbO66sq7xsw8lshqrX36/FiJ8rMwHOL44g0/0oLIlBAVzlfwp5+VyXbefLpnYqLPXzGzUvY8KTXklmPlEWReL86uLM7iwyHLxFgW2q3OZsXdekYMrRqcxaOicDWfpYj7rTvU+5AJ21Uk7gF/fXbRXJblMySI5tDDxLrLhOh2Ov/8aHY07OfyQwXmYozNfk7yYgVzWsm47CjDxmmIGSaWuvYx7Bu9aT8QMJsg098HI+DFzMNOapT2xGONK3QxOfF5LIZ820oYlYUlgW8MHB8ODQZfCMJcUJpEQZEpMyat7jVlqAGv0Vq8YsGYPOvg2vLs67kz33K8sGidRqoOVsZbLG4WVEc2Gbb5rz0amxukZaAvP20wVgvX4Ri0W8iLyNtimke7PNYWHFtpEzVQIuFkobaK0tRrP0EbaUnGVw9XeZXeu92EN6abqXSc6wTh9B+ThIVPCdXq5am6bTBWEOp3kRTcwaffoXcvy9cKtb0aTLVcc5zlV/M25t4+O+sV5yvjT7tWrTF8KFfCLZDX80irpk83pDKe+hbLo5nXK9qqVKQxgzY/fk56c7WTVs25YLNoZ1/4TuaZZeYXlf3FM0/wL9p/uVQ==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_registerSerializedUnit
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-units-bulk.ParamsDetails.json b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-units-bulk.RequestSchema.json b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.RequestSchema.json
new file mode 100644
index 0000000000..28ca6eb4c0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"variantId":{"type":"string","description":"Optional — registers the unit under a specific variant rather than the base product."},"serialBatch":{"type":"string","description":"The real per-unit/per-batch value (Deel 4 segment [EEEEEEEE]) — not the \"00000000\" placeholder.","example":"00000001"}},"required":["serialBatch"],"title":"RegisterSerializedUnitDto"}}},"required":["items"],"title":"BulkRegisterSerializedUnitDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-units-bulk.StatusCodes.json b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-register-serialized-units-bulk.api.mdx b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.api.mdx
new file mode 100644
index 0000000000..74fd21f951
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-register-serialized-units-bulk.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-register-serialized-units-bulk
+title: "ProductsController_registerSerializedUnitsBulk"
+description: "ProductsController_registerSerializedUnitsBulk"
+sidebar_label: "ProductsController_registerSerializedUnitsBulk"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF1uGzcQgK8y4JMNrP5stU32zZZdwAUCu7aTPihCQC1HWiZcckPOOnaEBXqI3qH36FF6kmK4q383qYE+Si9e82c4nPk45MxCuBK9JO3slRKpuPFOVRmFkbPknTHoP3ic60Do79BrafRXVG+tpnBemU8iEaX0skBCH0Q6XggrCxSp0EokwuPnSntUIiVfYSK0FakoJeUiESHLsZAiXQh6KnlGIK/tXNT1pJmIgc6deuIRu3IyZwktcZcsS6OzqH7vY3CW2/ZEu+lHzIh19bxZ0hi4VxMWYWOY9F4+iWSv/V+mP0ivpSW22u4mEqEwZF6XrJdIxXX8kAb+/v0PWJozAOUIldUElVXoQUIoMdMznUErG7ykHD1QLm0cPZUBoWxc1BV1IkL0ybmkLP++Gvc5gkdpoETf4YV7/DHlyfAgTYVwdIFoYAgB5wVagvFl+5scR92to6jHe9Fvf+8FlEZmmDuj0HdFIvBRFqVhNdohA1HXmzCMt7SeJII0xfG3z4J2QU7UuxIaH23MZRq/OT8KCKWzoXHfSX/Af7YtxCYd9vv7He+k0SpiBjOpDaoEnI+maFmFB+2MJAwgYVoFbTEE8JVBNsn/BCx67/z3h2VO4XMwrB1zfnbx4fby17eXd/d7kNyRnBqEQma5ttjxKFVsiIsDy47gFRiCnH9nnT2rwcx5cBbZeIXzCDONRoUosTXk8+dpLVMNhifToco6J7P+SWf46sd+Z/rD6evO69lwdvLTbDjoT1/tbWrkvMfGPZTr0G7mi6YcAvoH9J2gFYJxc9Zlh7Voz/WONzXdAPCSRV4gSW0a4raFNL7bHX/bErlmdPgclm90CNrOEyikmTlftPjhY8niIfOo0JKWJhxoO9D2ItpO92k7qyhnnDJJDNq0IigaAFcBL2JXoo/tzsKR86ApgMfgKp8hhMyVmMDZxW2nf3J6fMDygOWLsBzuY3m/vmxRrUlTDkN8l+CjDhTjom4aHnTQ7DRykdtM8mv2QOKBxBeR+PqbJELm7MzojEKjfoSQI2UgSQhH2J13QYKqGszie/9zhc1z+xAWDzD+dxjrRJCcc5Yt2gwwJkABs8preorZ9xSlRy/S8YTT6O19vjizL5ByxzWB0oVIEmfuqejJUvceBr2lEr2FVnUvrETEzDL0po2QxoSs9Yaudwx1A+RS45Z03n3blLQfPztfSBKp+OW3e2bDhVJ/gLObK/iEnK63OOREZbQsn5zbdQHhcknHKuEfb+Xua462cumN5HVSc+li5iJ7rYeu726u4MZI4uc4K7Of8/OIo+sSLdyRtEp6Ba0L4Co+12ftWT+GjHEvW2ldePPupnlA8ROLJ/FRhpGzgTRV8cj89efwNG3l0FMC134urf4a5YUE+AmXtMuhh5FTGBKIKrXfSxoSeNfYIiQwkoRz5zX3nxF5Pa2Iv0dGhrBSN4ELl1VcHogLKU0cxtjJzcb73UG33wY2mXFgY68wQ4WMIa0tES01gDWQq9oIrImEiCS0TG7ZeBUKCB+pVxqpLQeLyhvua3AdC1lq1m/QxMLm3CQijRWqXWoZOl5okoicoU/HYrHgostbb+qamz9X6J8amiNEU8ZhvBBKB/5WIp1JE3BP01WYF0e37dE/hjW92ztYFqQs8x2vCq5NJIKBj7W1yGSOUsXDvmg7Rs0anXuevp64d63UyXLGWZZhSd8cO9kIBDfX8VKYtnW5Il4mwssvHPjkl0ZJF/ccD3dsWwgj7byKF4JoZDIQsqLNktXOoY+7etYMi0Uz4t59QlvXK6sQ/8+Gqet/ALFKKZo=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_registerSerializedUnitsBulk
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-relationship.ParamsDetails.json b/docs/api-reference/reference/products-controller-remove-relationship.ParamsDetails.json
new file mode 100644
index 0000000000..9711f0f2b6
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-relationship.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"relationshipId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-relationship.RequestSchema.json b/docs/api-reference/reference/products-controller-remove-relationship.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-relationship.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-relationship.StatusCodes.json b/docs/api-reference/reference/products-controller-remove-relationship.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-relationship.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-relationship.api.mdx b/docs/api-reference/reference/products-controller-remove-relationship.api.mdx
new file mode 100644
index 0000000000..cedf66d369
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-relationship.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-remove-relationship
+title: "ProductsController_removeRelationship"
+description: "ProductsController_removeRelationship"
+sidebar_label: "ProductsController_removeRelationship"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urp0CKbrYNMmmhyAIaHFscVciFXLkJhX0PH2PPlkxlOI49mJ300NPPpnmx/DP4Y8jDmvhSvSKjLPnWiTiwjtdpRRmzpJ3eY7+3mPh1niJeewVMlMKKUrlVYGEPojkthZWFSgSYbSQwuNDZTxqkZCvUApjRSJKRZmQIqQZFkoktaCnkkcE8sauRNPIjRG/NdP5fzd4xwND6WzAwO3j4ZB/NIbUm5InEIkQjRSTLzXcqNzoKAOWyuSoJTgPlCGwGgwEa+NyRRhAwaIKxmII4Ksc+0KK1FlCS2xWlWVu0mhp8Cmw7XpftFt8wpTYrZ63g0wrGb13/tvdUqdx3wNS4KMqypyrfp7O7y/Pfv94dnUt5M5Kr0gtcoRCpZmx2POodKyIkwPb7rOXCgxBrb4xz57XYOk8OIvsvMJ5hKXBXIdosXMkY/c1m3o0GS8mOu2Nl8Nxb/Lux2Fv8cPJae90OVmOf1pORsPFu71FzZyPGGEAykzoFvOnoQwC+jX6XjAaIXcr1tJsM3bb+vNlxdtK76QgQ1HXGZucIymTz8ntGWn3brf/ZUdkO6KJ9I326XtvQjB2JaFQ+dL5osMPH0s2D6lHjZaMysOBtgNtb6LtZJ+2aUUZ45QqYtAWFUHRArgJeBG7En2sdxaOnAdDATwGV/kUIaSuRAnT+WVvOD45PmB5wPJNWE72sbx++diifiFNOwxgHQE+mkAxLpq2Ym2C4U0jF7lNFV9fDiQeSHwTiadfJRFSZ5e5SSm08iOEHCkDKUI4wv6qDwp01WKGUFnzUCGsVV7hISweYPx+GBspSK04v+I9jVkZjwmYVt7QU8y7Fqg8epHc3nG+83qd35vKFUiZ49xPY46EMbmjTCRioEozWI8Gz7MPaqObwXZ6Fgb162yt4ZQsOpF1b6m9YqxbJJ81d6zz+rsq2RV+cb5QJBLx6x/XTIcLpbmH6cU5fMYnIZ+ByIjK6Ftjly6C0rnzw9XFOVzkivjuzOP2GIg9jj6UaOGKlNXKa+j8Befxbr3sDuYxpMxm2Vnrw/ubi/a2w/chHsTnDmbOBjJURb7/+XtyknR26EnCB79S1vzV+kkC37dkNx16mDmNQUKU1JWft07CjfJGWS7NFOHKecPtUyJvFhVxeZarEDZyJcxdWhUYh0wrbYhjDu9Hu/Bhf9QfdlFIpRyF2IGlC1SoGH+6JPxZAbzQAy09sIPPK8duDivhIw3KXBnLx7nyObe1XN0KVRoWNWqjVUu2FEn3erCFF9fuPAfcSZG5QGymrhcq4EefNw1XP1Ton1rq1uy1BbNwWwttApe1SJYqD7ineBOQxdFld0iP4YWy1yvpKpVlDmNQ51cEKRjM+P7BDxn/44w73mnuGikyVDoGhbrrNE1TLGlr+N6Hh6PHJg7Mz347uz4TUqiK92uzpzunNE7wRXV13fa4dp/RNs1GLPF/1tg0/wJIAlad
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_removeRelationship
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-translation.ParamsDetails.json b/docs/api-reference/reference/products-controller-remove-translation.ParamsDetails.json
new file mode 100644
index 0000000000..c686b24895
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-translation.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"locale","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-translation.RequestSchema.json b/docs/api-reference/reference/products-controller-remove-translation.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-translation.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-translation.StatusCodes.json b/docs/api-reference/reference/products-controller-remove-translation.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-translation.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-remove-translation.api.mdx b/docs/api-reference/reference/products-controller-remove-translation.api.mdx
new file mode 100644
index 0000000000..d83ffca3d6
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-remove-translation.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-remove-translation
+title: "ProductsController_removeTranslation"
+description: "ProductsController_removeTranslation"
+sidebar_label: "ProductsController_removeTranslation"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1uGzcQgF9lwJMNUL9W23hvquQCLhrEtRX3YBgGtRxJTLjkmpxV7Qr7PH2PPlkx3LVkW0ES99CTTqZJznB+Po44uxG+xKDIeHeuRSYugtdVTnHiHQVvLYa7gIVf4ywoF23aKKQoVVAFEoYospuNcKpAkQmjhRQB7ysTUIuMQoVSGCcyUSpaCSlivsJCiWwj6LFkiUjBuKWoa7lVYn2uLP5nRbcsGEvvIkZeH/b7/EdjzIMpk/mZELUUoy8tXCtrdHISFspY1BJ8AFohsDUYCdbGW0UYQcG8isZhjBAqi10hRe4doSNWq8rSmjxp6n2KrHuzb7Sff8KcOJyBs0CmMRlD8OHb23KvcT8CUuCDKkrLUz+Pp3eXZ79/PLuaCfnK0ytSc4tQqHxlHHYCKp0m0uHAurscpQJjVMtvnLMXNVj4AN4hB6/wAWFh0OqYNLaBZNq+plMPRsP5SOed4aI/7Ize/djvzH84Oe2cLkaL4U+L0aA/f7fn1MSHgE16aGVi68yfhlYQMawxdKLRCNYv2Zb6OWM3TTx3Hj+39FYKMpTsOmOVUyRl7JT8npImd6/3X7ZENhJ1om+wT997E6NxSwmFsgsfihY/fChZPeQBNToyysYDbQfa3kTbyT5t44pWjFOuiEGbVwRFA+C24CXsSgxp3js48gEMRQgYfRVyhJj7EiWMp5ed/vDk+IDlAcs3YTnax3K2+7FFvSNNe4zgPAE+mEipLppmYm2i4aSRT9zmil8tBxIPJL6JxNOvkgi5dwtrcoqN+QlCrpSRFCEcYXfZBQW6ajBDqJy5rxDWylZ4KIsHGL8fxloKUkvuqzinqRljmYh5FQw9pn5rjipgENnNLfc7L/38zg6uQFp57vg0WiRMPR2tRCZ6qjS99aD3dHhvY3Tdo51w7G2aHq3mRiyFjq19ZuMVw9yA+GRpSzh73U7JdvCLD4UikYlf/5gxEz6W5g7GF+fwGR+FfMJgRVSmiBq38AmPNogfri7O4cIq4hczy+1lPu04+lCigytSTqugoY0SnKcX9aK9jseQM5Flq60L768vmjcOv4JYiG8bTLyLZKhKVP/z9+gka/XQo4QPYamc+asJlQR+Zcn2OAww8RqjhGRSO35KmIRrFYxyPJoowqUPhtfHRMHMK+LxxKoYt+ZKmPq8KjCJjCttiCsN56NxvN8ddPtt7VE51x4OYOkjFSpVnbblfrIAdsxAwwy8hOZFXLc3lPCBeqVVxvEdroLltYamG6FKwzYNmhLV4CxFlj4VPIeKJ9vW/1aKlY/E0pvNXEX8GGxd8/R9heGxYW3NsZozATcboU3ksRbZQtmIe4Zui684umwv5DHs2HrpQDupHNOXCjh/MZCCcUzfOPhjxf94YhuV+raWYoVKp4u/aRfHeY4lPRPb+3HhCrG97NOz385mZ0IKVXF6til8dSfTAV+0arNpdsz8Z3R1vTWS+H+2sa7/BUmwR3I=
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_removeTranslation
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-retire.ParamsDetails.json b/docs/api-reference/reference/products-controller-retire.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-retire.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-retire.RequestSchema.json b/docs/api-reference/reference/products-controller-retire.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-retire.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-retire.StatusCodes.json b/docs/api-reference/reference/products-controller-retire.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-retire.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-retire.api.mdx b/docs/api-reference/reference/products-controller-retire.api.mdx
new file mode 100644
index 0000000000..521e74cb3d
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-retire.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-retire
+title: "ProductsController_retire"
+description: "ProductsController_retire"
+sidebar_label: "ProductsController_retire"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEElDiyuSuRCjly4xp6nr5Hn6wYSnE+vMg2d59Mk5rRnzM/jjneClehV2ScvdAiEXPvdJ1RmDlL3hUF+nuPZDwKKSrlVYmEPohksRVWlSgSYbSQwuNDbTxqkZCvUQpjRSIqRSshRchWWCqRbAVtKrYI5I1diqa5Y8NQORsw8Pp4OOIPjSHzpmJNIhGikWIyHO4v3KrC6KgccmUK1BKcB1ohsBoMBGvjCkUYQEFaB2MxBPB1gX0hReYsoSV2q6qqMFn0NPga2Pd2X7RLv2JGHAXPESPTSkbvnf/xY5nTuB8BKfBRlVXBU79Oz+6vzv/4cn59I+SbnV6TSguEUmUrY7HnUek4EV8O7LvPUSoxBLX8wXv2oga58+AscvBK5xFyg4UO0WMXSCbjPZ96NBmnE531xvlw3Jt8+nnYS386Oe2d5pN8/Es+GQ3TT3ubmjnvsU0PrUzoNvOXoRUE9Gv0vWA0QuGWrKV5ydiijefzjl8qvZOCDEVd5+zyDEmZ4ozcnpM2d2+fv+qIbC2aSN93sPxsQjB2KaFURe582eGHjxW7h8yjRktGFeFA24G2D9F2sk/btKYV45QpYtDSmqBsAdwVvIhdhT7OOwtHzoOhAB6Dq32GEDJXoYTp2VVvOD45PmB5wPJDWE72sbx5/rFF/UyadhjAOgJ8NIFiXTTtxNoEw0kjF7nNFN8wDiQeSPwQiafvkgiZs3lhMgqt/AghV8pAihCOsL/sgwJdt5gh1NY81AhrVdR4KIsHGP8/jI0UpJbcDnFOY+PENgGz2hvaxDYpReXRi2Rxx/3O632+122VSCvHLVnlQoSGu6lEDFRlBuvR4Ol9g63RzWBn1YaHFb3Qcc3AtrA9qeko5p11U7Ib/OZ8qUgk4vc/bzjvLlTmHqbzC/iGGyGfUr0iqmLUjM1dRKAL1OX1/ALmhSK+FbPdXnbjE0eXFVq4JmW18hq6SMBFvDXn3ZE7hoypqzpvffh8O2/vMXzTYSM+UTBzNpChOpL77z+Tk6TzQxsJl36prPk7+gsS+CYlu9ehh5nTGCRESd34KSkSbpU3yvJopgiXzhtenxJ5k9bE41mhQtjJlXDmsrrEaDKttSGuJpyPduPD/qg/7OqLyri+cAA5v6WKlaVrqZ8UwDMXsMvwq1juTh7hIw2qQhnLZ7P2Ba+1yCyEqgzrGLWlp8VUiqTr3KPfOylWzFmyENttqgJ+8UXT8PRDjX7T8rTmeKSc5cVWaBN4rEWSqyLgnrBdERVHV93BOoZnfl4L7iaVZcJiIebOXwpGLv7F0Nw1UqxQ6XiUtt3CNMuwohcme+Waz9zuJM0vYwFVNYdlF7o3/Ef339Wz3bZP3LhvaJtmJ4/4Oytsmv8AVWXtNw==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_retire
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-set-translation.ParamsDetails.json b/docs/api-reference/reference/products-controller-set-translation.ParamsDetails.json
new file mode 100644
index 0000000000..c686b24895
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-set-translation.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"locale","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-set-translation.RequestSchema.json b/docs/api-reference/reference/products-controller-set-translation.RequestSchema.json
new file mode 100644
index 0000000000..ff79526071
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-set-translation.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}},"title":"SetProductTranslationDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-set-translation.StatusCodes.json b/docs/api-reference/reference/products-controller-set-translation.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-set-translation.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-set-translation.api.mdx b/docs/api-reference/reference/products-controller-set-translation.api.mdx
new file mode 100644
index 0000000000..413446dbdb
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-set-translation.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-set-translation
+title: "ProductsController_setTranslation"
+description: "ProductsController_setTranslation"
+sidebar_label: "ProductsController_setTranslation"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtuGzcQhl9lwCsHWB1sq22iO0V2ARcI4tpOemEYwWg5kphwyQ0569gV9nn6Hn2yYsi1JFtGDkXRK11pxcNw+PPjkMOV8jUFZOPdmVZjdR68bkqOU+84eGspfIjEVwFdtKmVKlSNAStiClGNr1fKYUVqrIxWhQr0uTGBtBpzaKhQxqmxqpGXqlCxXFKFarxSfF9Lj8jBuIVq22JtxPoSLf1rQze5I0V+7fW9tHhqp/SOybFUYV1bU6ZJDT5G76Rsx7SffaSSZdJBhGJDUWqzuzsOFEpTLIOpk1LPzVSxYStFl8Sd1lvinrBXbSvNAsXau5hHOxoO5eeRbSWjjZ6reI/W6GQO5mgs6QJ8AF4SdNrArfEWmSIgzJpoHMUIobHUV/+ZQBSCD99uVnr9jI6Fojus6qTT68nJh4vT39+dXl6pJ/KqS8aZJaiwXBpHvUCoU0EaHMR2X1SqKEZcfGOcHdVg7gN4RyJe5QPB3JDVMVnshJQd8zWb+nB0NBvpsnc0Hx71Ri9/HvZmPx2/6r2aj+ZHv8xHh8PZy51JTX0IlJeHlyZ2k/lieAmRwi2FXjSawPqF+NJub5XrrOdmxtue3mzYOxWTJ8RobCbusZG8dk/bX3REbhgdDQ936XtjYjRuUUCFdu5D1eFHd7WYhzKQJscGbdzTtqfth2g73qVt0vBScCqRBbRZw1BlANcBL2FXU0jl3sGBD2A4QqDom1ASxNLXVMDk5KI3PDp+scdyj+UPYTnaxfJqc9iS3pCmPUVwnoHuTOQUF00uuDXRyKKxT9yWKDevPYl7En+IxFdfJRFK7+bWlByz+wlCiZSRkQkOqL/oA4JuMmYEjTOfG4JbtA3tw+Iexu+HUfIcXEh6KGuaEkrpE6lsguH7lDbOCAMFNb6+kbTt8Ty/JwutiJdeUta6SexIbjhWA6zN4PZw8DDsYGV0O+BNzzhY5SSzlUwyiSZ+bnl3KRhnBB987NiW+XZFRffxqw8Vshqr3/64Ehp8rM0HmJyfwSe6V8UDAEvmOmkpe+Vik6KePvCwzoDXqDxWZJNhGjf3Ca1uAd5enp/BuUWW27aMvNM3tTh4W5ODS0anMWjoFIazdBufd1v5BZRCc91Z68Ob9+f5fiQ3KOkkOxWm3kU23KQd8fdfo+NxZ4fvC3gbFujMn1nsAuSGVnTDUYCp1xQLSC513w+LXcB7DAadfE2RaeGDkfoJczCzhuV7ajHGtbsFnPiyqSh1mTTasEQpWdE88WH/sD/s4haWErdkCWofuUK3pfmDB7DhDSIxPAbu+dSe6Y4HtUXjZHGaYKUuw3itsDbi0GGObXkfFGqcnkq2mZTC7unjplBLH1l6r1YzjPQu2LaV4s8NhfuM6q0INZPlv14pbaJ8azWeo4204+g6aquDi24nv4ANmo8n0BWiE3hT5JenhkIJzemNRx5r/scRO1Xam7ZQS0KdIsaqq5zmcXpXYmLTeedsEp9zj0lZUs1fbXuzFVrO38nBMuvekqp0IKmAXyR44pfsp6/zEspjk5StlEW3aNKhorJJoQ4bQWKNzZMwkib1rBKrVW5x5T+Ra9u1MCz/RZe2/QcZk8kB
+sidebar_class_name: "put api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_setTranslation
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-unpublish.ParamsDetails.json b/docs/api-reference/reference/products-controller-unpublish.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-unpublish.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-unpublish.RequestSchema.json b/docs/api-reference/reference/products-controller-unpublish.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-unpublish.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-unpublish.StatusCodes.json b/docs/api-reference/reference/products-controller-unpublish.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-unpublish.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-unpublish.api.mdx b/docs/api-reference/reference/products-controller-unpublish.api.mdx
new file mode 100644
index 0000000000..5eea552cc2
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-unpublish.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-unpublish
+title: "ProductsController_unpublish"
+description: "ProductsController_unpublish"
+sidebar_label: "ProductsController_unpublish"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2TTgxEElDiyuSuRCjlKkxp6nr5Hn6wYSrGdeLFp7j6ZJjWjP2d+HHO8Fq5Cr8g4e6FFIube6TqjMHOWvCsK9Pe1req0MGElpKiUVyUS+iCSxVpYVaJIhNFCCo8PtfGoRUK+RimMFYmoFLFZyFZYKpGsBT1XbBHIG7sUTXPHhqFyNmDg9fFwxB8aQ+ZNxbJEIkQjxWQ43F+4VYXRUTzkyhSoJTgPtEJgNRgIHo0rFGEABWkdjMUQwNcF9oUUmbOEltitqqrCZNHT4Gtg3+t90S79ihlxFDwHjUwrGb13/v3HMqdxPwJS4JMqq4Knfp2e3V+d//Hl/PpGyDc7vSaVFgilylbGYs+j0nEivhzYd5+jVGIIavnOe/aiBrnz4Cxy8ErnEXKDhQ7RYxdIhuNHPvVoMk4nOuuN8+G4N/n087CX/nRy2jvNJ/n4l3wyGqaf9jY1c95jmx5amdBt5i9DKwjoH9H3gtEIhVuylmaXsUUbz+2Od5XeSUGGoq5zdnmGpExxRm7PSZu7t89fdUS2Fk2k7ztYfjYhGLuUUKoid77s8MOnit1D5lGjJaOKcKDtQNuHaDvZp21a04pxyhQxaGlNULYAbgpexK5CH+edhSPnwVAAj8HVPkMImatQwvTsqjccnxwfsDxg+SEsJ/tY3mx/bFFvSdMOA1hHgE8mUKyLpp14NMFw0shFbjPFl4wDiQcSP0Ti6Q9JhMzZvDAZhVZ+hJArZSBFCEfYX/ZBga5bzBBqax5qhEdV1HgoiwcY/z+MjRSkltwOcU5j78Q2AbPaG3qObVKKyqMXyeKO+53X+3yn4SqRVo4bs8qFyA03VIkYqMoMHkeDl1cO1kY3g13DNkisa0fNNWPbIveiqWOZ99dNyW7wm/OlIpGI3/+84ey7UJl7mM4v4Bs+C/mS8BVRFWNnbO4iCF24Lq/nFzAvFPHdmO32chyfOLqs0MI1KauV19DFAy7i3TnvDt4xZMxe1Xnrw+fbeXub4fsOG/G5gpmzgQzVkd9//5mcJJ0fepZw6ZfKmr+jvyCB71Oyex16mDmNQUKU1I1fUiPhVnmjLI9minDpvOH1KZE3aU08nhUqhI1cCWcuq0uMJtNaG+KawvloNz7sj/rDrsqojKsMB5BTXKpYX7rG+kUBbOmA3SS/CufmCBI+0aAqlLF8SGtf8FoLzkKoyrCUUVuDWl6lSGILv3V9J8WKgUsWYr1OVcAvvmgann6o0T+3VD1yVFLO9WIttAk81iLJVRFwT9umoIqjq+6QHcOWoteau0llmbNYlPlfACkYvPh3Q3PXSLFCpeOxWncL0yzDinZM9ko3n7/NkZpfxmKqao7MJnpvTkF0/10963X7xI37hrZpNvKIv7PCpvkPSv3zwg==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_unpublish
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-update.ParamsDetails.json b/docs/api-reference/reference/products-controller-update.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-update.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-update.RequestSchema.json b/docs/api-reference/reference/products-controller-update.RequestSchema.json
new file mode 100644
index 0000000000..56f49eb713
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-update.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"type":"string"},"status":{"type":"string","enum":["DRAFT","ACTIVE","PUBLISHED","RECALLED","DISCONTINUED","ARCHIVED"]},"publicationState":{"type":"string","enum":["PRIVATE","PARTNER_ONLY","PUBLIC","SCHEDULED"],"description":"Audience dimension, independent of `status` (ADR-024, Deel 7 §68-69). Not yet wired into any cross-org visibility check — see ADR-024 consequences."},"gtin":{"type":"string","description":"GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."},"expectedVersion":{"type":"number","description":"Optimistic concurrency (ADR-024, Deel 22 §110-111). Optional — omit for the previous last-write-wins behavior; supply the version you last read to get a real 409 VERSION_CONFLICT if someone else updated the product first."}},"title":"UpdateProductDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-update.StatusCodes.json b/docs/api-reference/reference/products-controller-update.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-update.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-update.api.mdx b/docs/api-reference/reference/products-controller-update.api.mdx
new file mode 100644
index 0000000000..b8c6aeaef1
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-update.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-update
+title: "ProductsController_update"
+description: "ProductsController_update"
+sidebar_label: "ProductsController_update"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWF1uGzkSvkqBL2sDrV9rMrH2SZGUiRYeyyvJXgwMw0OxSxIn3WSHrJatFRrYQ+wdco8cZU+yKHZLcixPZgLMo5/U4k/VV1VfFcnaCpuhk6StGcWiK66cjXNFvm8NOZsk6O7zLJaEIhKZdDJFQudF93YrjExRdIWORSQcfsq1w1h0yeUYCW1EV2SSViISXq0wlaK7FbTJeIcnp81SFMVduRE9vbPxhlc8l6OsITTEUzLLEq0C0sZv3hoeOxJt57+hIsbq2C7S6Hm2hHoEIBIxeuV0xkJfnFeScGndhn3zwrQnSbk/nooEmjwV3VsxmPTez0Qkev3Z6GYoInF1/e5iNP0wHIhITIb93sVF+ByMpv3x5Wx0eR3+9ib9D6Ob4UDcFZHI8vnO8ilxKL6h72oyuunNgqLeZHY5nNyPLy9+2enti0hM+x+Gg2vWevfMftHLY41GIcQ6ReO1NRFoE2OGJkZDYBfwa2nyr3DSG0xqzXYnggFiAj/Cl89v3tbenJ/W4dISbJDggSMJ2pAFaTagnPW+Zt0S1trruU40bUCtUH2E//3nv+ARoZIJyhrPxDAKfZ0dvST9QoCe4/9pNrqsvW202o3WWaPVqTA2fzgNCoIqn6e1tUw0UzqOwFhiZQvtUoxBLqU2nuCnaetvHhwutSe3CQDwMUNFGN+g81+TxeTpHN0RlnFGOtWetGIFKncOjdo8d1u7DV8+t1rNWqvVOq3DOOyWScBrU02wsA5ohZA5XGube0ikp9qD04S1B208zHEl19q6v4PPsyzZhNXrEiVsbB42gEMZA1lYIoHkfwl0mudwM5xMR+PL+/748v3FqD8DvQBvU7QGAROPUOZ+XEEIpQEW2nmqi6KIBGlK2AfXYVlVOwZkRVHwtEOfcSRDhrSbTf752kvs2s5LEzdljNiIhdQJx6ryRFUxYK1tIgk9SJjnXhv0HlyeYF38ZWUDnbPuj5cpG7+ck48yzYJ/3vUG95PhP6+H09kRUaYk5wlCKtVKG6xxpMJAUA4sOxAwRe/l8g/0HHkt8IejaR2k1iEsNCZxmVOVI18qbU9lxq1Oe96JVa29aLZrnbdvmrX5D2fntfNFZ9H+cdFpNedvj4zqW+ewDA+ttK+MedC0Ao9uja7mdYyQ2KUvmXQo/LelPw8WP0V6d+DckEUOkKROSsZ9LaSM3fP1k4qRB452mq1j9v2svddmGUEqk4Xl2hDoh49ZKGnKIddDLRP/yrZXtn0X286O2dbLacV0UuWZNM8J0pKA+4IXaJehC+PWwIl1oInPKG9zpxC8shlG1QF6dvpKy1dafhctO8e0nB0OW4wPTIst+nBvwkftKdRFXQ6Ea12CfM9g3irJz4dXJr4y8buYeP5NJobbeqIV+RJ+ICFXSn6XIJxgfVkHCXFe0gwhN/pTjrCWSY6vZfGVjH+ejPy+kUvudYjq6eN5j0eVO02b0AOZo3ToRPf2rjh6TX+rlZIirWxc9kjUKvRWaCW6oiEz3Vi3GjuFja2OC+6hBMcwlicIpkzVkmY7HBV/2aZqKKo+3luXShJd8Y9/zTji1mf6HnpXI/iIGxHtgrwiyoK/OB8mh+bMcBfzfd/nd97g++GnrZPD6K5jsm+MHDc3nvQwymf/U+Y9e4U3C+41LWygaRXM8fRqBFeJJL65s4XHb3NecTLO0MCUpImli6GKFozCzX5RQToFxZmRVdLq8PPNVXnX4tsYb+Ksh741njTlIbu+fO6cdSs5tIlg7JbS6H8HeT4Cvu1FlTp00Lcx+ggCpOp7R5wIbqTT0vBXv/Sm5vkekdPznPi7n0jv93AjGFiVpxi2cDeHuOKtd94SzXqr3qxqoFRcAznUmfWUSvMktjsEcOAu7Ln7cs+M8JEaWSK14fqRu4TnSlbfCplpxtEqy2OZSpHo6pC0K+uJF223c+nx2iVFwcOfcnSbkvBrdsOcg3u7FbH2/B2L7kImHo/w7Ou7OJlUOX8KB4J/jbMalIZTIJwR3JSIBOdEaG0W3IBboYxDlm+riX6pozbj7YeNR+dJEe129JTCjL659u5JWbjqzfofOHervmgajhHh5AOXPPlQorTB6FAAwthWJNIs83AUiFIox1fmHIV9pJ4VhmDWi37YbssVM/sRTVHs3UL8nz1TFP8HcCKXNw==
+sidebar_class_name: "patch api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_update
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-validate.ParamsDetails.json b/docs/api-reference/reference/products-controller-validate.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-validate.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-validate.RequestSchema.json b/docs/api-reference/reference/products-controller-validate.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-validate.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-validate.StatusCodes.json b/docs/api-reference/reference/products-controller-validate.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-validate.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/products-controller-validate.api.mdx b/docs/api-reference/reference/products-controller-validate.api.mdx
new file mode 100644
index 0000000000..ea0aeca16c
--- /dev/null
+++ b/docs/api-reference/reference/products-controller-validate.api.mdx
@@ -0,0 +1,69 @@
+---
+id: products-controller-validate
+title: "ProductsController_validate"
+description: "ProductsController_validate"
+sidebar_label: "ProductsController_validate"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIG2fTgxEEtDiyuSuRCjly4xp6nr5Hn6wYSnGceJFt7j6ZJsXRnzO/GXO8Fa5Er8g4e6VFIqbe6SqlMHGWvMtz9A9rlRutCIUUpfKqQEIfRDLfCqsKFIkwWkjh8bEyHrVIyFcohbEiEaWilZAipCsslEi2gjYl7wjkjV2Kur7njaF0NmDg9WF/wB8aQ+pNyapEIkQtxajfP1y4a5QZZyFTJkctwXmgFQKrwUCwNi5XhAEULKpgLIYAvsqxK6RInSW0xGZVWeYmjZZ6XwPb3h6KdouvmBJ7wbPPyDSS0Xvnf/xY6jQeekAKfFJFmfPUr+OLh5vLP75czm6FfHPSGalFjlCodGUsdjwqHSfiy4Ftd9lLBYaglj94z4HXIHMenEV2XuE8QmYw1yFabB3JbLxnUw9Gw8VIp51h1h92Rp9+7ncWP52dd86zUTb8JRsN+otPB4eaOO+xCQ+tTGgP85ehFQT0a/SdYDRC7paspd5nbN748+XE+0rvpSBDUdclm7xAUia/IHdgpInd2+dvWiKbHXWk7ztYfjYhGLuUUKg8c75o8cOnks1D6lGjJaPycKTtSNuHaDs7pG1c0YpxShUxaIuKoGgA3BW8iF2JPs47CyfOg6EAHoOrfIoQUleihPHFTac/PDs9YnnE8kNYjg6xvH35sUX9Qpp2GMA6AnwygWJdNM3E2gTDQSMXuU0V3zGOJB5J/BCJ5++SCKmzWW5SCo38CCFXykCKEE6wu+yCAl01mCFU1jxWCGuVV3gsi0cY/z+MtRSkltwOcUxj68R7AqaVN7SJbdIClUcvkvk99zuvz/l+v1UgrRy3ZaULERvupxLRU6XprQe95zf2tkbXvb19jYtY1Z6WGUPbAPesqCWZT9dOyXbwm/OFIpGI3/+85di7UJoHGE+v4BtuhHwO94qojJ4zNnMRg9ZZ17PpFUxzRXwz5n0HEY5PnFyXaGFGymrlNbTegKt4c87atDuFlMkrW2td+Hw3be4yfNvhTZxVMHE2kKEq0vvvP6OzpLVDGwnXfqms+TvaCxL4NiXb16GHidMYJERJ7fg5MBLulDfK8miiCJfOG14fE3mzqIjHk1yFsJMr4cKlVYFxy7jShriicDyag/e7g26/rTEq5RrDDuQIFypWl7atflYAL2zAXoxfeXOXf4RP1CtzZSxnaOVzXmuwmQtVGlYyaApQA6sUSezfd5bvpVgxbclcbLcLFfCLz+uapx8r9JuGqTX7ZMGRnm+FNoHHWiSZygMeSNsVU3Fy0ybYKbww9FpyO6nsphFV8TchBWMX/2qo72spVqh0TKltuzBOUyxpb8tB2ebc2+XT9DoWUlWxY3bOe5MD0fx39Wy3zRO37hvaut7JI/7OCuv6P3Y/8PI=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+ProductsController_validate
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-assign.ParamsDetails.json b/docs/api-reference/reference/roles-controller-assign.ParamsDetails.json
new file mode 100644
index 0000000000..ad009d9545
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-assign.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-assign.RequestSchema.json b/docs/api-reference/reference/roles-controller-assign.RequestSchema.json
new file mode 100644
index 0000000000..2bce2400f0
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-assign.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"roleId":{"type":"string"}},"required":["roleId"],"title":"AssignRoleDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-assign.StatusCodes.json b/docs/api-reference/reference/roles-controller-assign.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-assign.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-assign.api.mdx b/docs/api-reference/reference/roles-controller-assign.api.mdx
new file mode 100644
index 0000000000..dad2056343
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-assign.api.mdx
@@ -0,0 +1,69 @@
+---
+id: roles-controller-assign
+title: "RolesController_assign"
+description: "RolesController_assign"
+sidebar_label: "RolesController_assign"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMCyJ9x241uXicFUmAR18mmByMIaHFsc5ciFXKUjWvoefoefbJiKPkjcbrbAD36FIUihzP/+XGs4Vq4Ar0k7eyVEqmYOINh5Cx5Zwz6BxmCXliRiEJ6mSOhDyKdroWVOYpUlAH9lRKJ8PhYao9KpORLTIS2IhWFpKVIRMiWmEuRrgWtCl4VyGu7EFV1Xy/EQB+dWvGM13YyZwkt8StZFEZn0dXOl+Asjx2YdrMvmBH76zkw0hiiWWeQ4zt0Yd/16WbefSJIk+GJwygAy3JBTlRVvSIUzobadL/b4z8KQ+Z1wd6JVIgqEYNu9/DFnTRaxRhgLrVBlYDzQEuERgh40s5IwgASZmXQFkMAXxpsi/9NDfTe+R9Py5zCQ8kSgc8yL6I4H4cXD5PL3z9f3tyK5FWkNyRnBiGX2VJbbHmUKg7EzYFtt1mlHEOQix/sc6AazJ0HZ5HFy51HmGs0KkSLjZBvpXvfpuoN+rOBylr9ebffGnz4udua/XR23jqfD+b9X+aDXnf24SCokfMe6/TQUocmmG+alhDQP6FvBa0QjFuwL6/ginruIt73dA+4SzZ5gSS1qYl7aaTO3ev5k4bIHaODt7D8pEPQdpFALs3c+bzBD58LNg+ZR4WWtDThSNuRtnfRdnZI27CkJeOUSWLQZiVBXgO4LXgRuwJ9HHcWTpwHTQE8Blf6DCFkrsAEhheTVrd/dnrE8ojlu7AcHGJ5u/uxRbUjTTkMYB0BPutAsS7qeuBJB81JIxe5zSR/GR1JPJL4LhLPv0siZM7Ojc4o1O5HCLlSBpKEcILtRRskqLLGDKG0+rFEeJKmxGNZPML432GsEkFyETbtTuAFAbPSa1rF3m6G0qMX6fSeG7SXQf5rf5gjLR13kIULERfu/VLRkYXuPPU63CiGzrruF6tOvTHvy8KwL3tO3DCqNWYbVxp+OaZmKGkefnU+lyRS8dsft5xxFwr9AMPxFXzFlUg2SV4SFVEvPg+TXc95ucn5rkfc9obcxc5dJKXR8/pmfAVjI4k/nnmTAwjijJPrAi3ckLRKegVj71SZEVzFj+t5czJPIWM4i8ZaGz7djevPHf4g4kV88GDkbCBNZQT8778GZ2ljh1YJXPuFtPrPaC8kwB9cSbMdehg5hSGB6FLz3LgSEriTXkvLTyNJuHBe8/shkdezkvh5ZDi5G3cTuHBZmWNcMiyVJi46nLw68G671+42ZUhmXIZYbYYhl7EANTcGESDYEQRbgl4IuT2dhM/UKYzUlhNSesPvarimQhaaneiJJN5EMFHp7kpiA/eSiUynYr2eyYCfvakqHn4s0a9q8p5YjBmneLoWSgd+ViKdSxPwwLFtoRUnk+bwncKOtJcON4PSMouxWPPtQCIYzu31SXVfJWKJUsVTt25ejup9WrdsYrf4oLhXyWbFMMuwoO/Ovd87qePrWJpnzdVLHku68PIbiye/1Y66GHd9icJja2GkXZSxLIvaJidalpyRbdZeHdIY1ZtSrNf1jFv3FW1VbZUh/p+Fqap/AKPdYwA=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+RolesController_assign
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-create.ParamsDetails.json b/docs/api-reference/reference/roles-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-create.RequestSchema.json b/docs/api-reference/reference/roles-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..edc865be68
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"permissions":{"type":"array","description":"Real, enforced permission codes — see src/auth/permissions.ts. Use ['*'] via the default Owner role, not here, for full access.","items":{"type":"string","enum":["producers:write","products:write","orders:write","offers:write","connections:write","inventory:write","org:manage","dpp:manage","documents:write","attributes:write","classification:manage","sharing:write","roles:manage","webhooks:manage","categories:govern"]}},"resourceType":{"type":"string","enum":["CATEGORY","LOCATION"],"description":"Scopes this role to a single Category or Location (ADR-023) instead of the whole organization. Requires resourceId. Only meaningfully enforced for the one permission each type covers (CATEGORY -> products:write, LOCATION -> inventory:write) — see src/auth/scope.util.ts."},"resourceId":{"type":"string","description":"The Category or Location id this role is scoped to. Required if resourceType is set."}},"required":["name","permissions"],"title":"CreateRoleDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-create.StatusCodes.json b/docs/api-reference/reference/roles-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-create.api.mdx b/docs/api-reference/reference/roles-controller-create.api.mdx
new file mode 100644
index 0000000000..a4d1258063
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: roles-controller-create
+title: "RolesController_create"
+description: "RolesController_create"
+sidebar_label: "RolesController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmOFu2zYQx1/lwC9NB9pxEm9r/WGA62RDhnbOErfDYBgFLZ4sthSpkpQdzxCwh9g77D32KHuS4Sg5luO2W4F99CdbJMXj3f3uJP03zBboRFDWXEs2YLdWox9ZE5zVGt3bxKEIyDgrhBM5BnSeDaYzzhx+KNGHF1au2WATL5VDyQbBlchZYk1AE2hKFIVWSTRx+s5bQ2M+yTAX9C+sC2QDZufvMAlkx9GBgkJPs0bk2Frlg1NmwSrOCnS58l5Z41vzwjmxZpxJ9IlTBZkkn1BoDmhS6xKUsLsVEivRw9+//wEeEbxLTkUZstPW5t3gu/DaI0yffPVkBkslIGQIElNR6gDjlUEHzmrkYGyADB1ySK2DtNQaRJKg913GmQqY+0NPOENT5mwwJb9lmaDzg5VTdcTjSNgNWCfb8zZN25eJNQYTcnk3pswSTbBu3dpjMciFEQu6kEXRurBJmaNp2RMhODUvA7aMaOG9Spt07m72mSB/HtZRRPxueoXzzNr3rZFEBFxYp9APFnaJzrBZVRFV3pYuwUmM0qejNRpOrn4Y3/7KOHs5Hg0n1+Of2Oxx3u8SW6CHkCkfUwTBggCvzEIjjOoDrME6eGlrf+BkeHnb6Z1fPAVlfEAhwaYx36uM7rduIYz6La7twm2NvIftoa9lF8ZGryFHYZRZEALrHXdEBe1lDbYZRJFkQH5CQoHwcLJ1DjrfwT4EHLbe0tyj7D49BNlTBLplUJo4Zq0AU7Efhnc/fpPsE2FSshVU5SGakRDsQ1AkqBTayYzLMHRZneVts5jWFb5fzzPOggqaTjaK7Yea0mWwrKoaRgprfN0gzntn9LN/cHK03+sdTrwRWsnah1QojZJDk5SmncFSWS0CehAwL70y6D24UmOX/W89DZ2z7t+XUW/6aAnci7yIwXkxvHx7e/Xz66u7yUHu7oKYa4RcJJky2HEoZByIxmPfizjk6D0V5GftHEQtokwYWwe5dQipQi23gMVAfpyv3Z7yrH8+78ukc572zjv9Z9/0OvOvL553nqf99PzbtH/Wmz87cGpkncM6PZG/2pmVChl4dEt0Ha8kgrYLfwhajOfO4/ZJW8Bd0ZaXGITSNXH7m9S5e7z+tiFyx2j/Y1i+IsDNgkMudGpd3uCH90WsmMShRBOU0P5I25G2L6Lt4pC2YRkywometJLDvAyQ1wA+NLyIXetRdGIdqLB7oNWNncP2qXjE8ojlF2HZP8RysnvYotyRJi36+AaN98qH2BdVPbBUXs3rlzfiNhH0XXIk8UjiF5H4/LMkQmJNqlUSfH38CCF1Sh9EQDjB7qILAmRZY4ZQGvWhRFgKXeKxLR5h/O8wVpwFsSARpf5Iphs8JqVTYc0G0w2bo3DoSGSpDr5oP6nO5BgyS/pNYX3ERYSMDdipKNTp8uy0tkSGKBKNgrO1ekds1lxtbTfAkhPNEG/+fG9dLgIbsB9/mVCKrS/UWxjeXMN7JOWlyWoWQhEDRAVwu5OKrrZJ3ko7u/zvKTqHesjssTjQ1gDaX7UtkUiZ1EbUmoSM726u4UaLQG/fdOgDiuKKk3GBBu6CMFI4CTf1Jzhcx7fzrfbxFBKiu2h268KrNzf1+xK9UdFNVLkwssYHFcpYIX/92b8YNPuENYdxS0/wHOiNjTfm0MGIxCkO8UjN/+YonsMb4ZQw9G/0oKRwGD4oNhxGe1INh8utvkOGpArUtQiG2vFe96zba/qYSKiPUfaIplyYVroigbBDEB4Q3AvkQ3kHvA+nhRbKUEJKp2mupnPKRKHoEGdbwYiSnBHAgynbbObC42unq4qGP5To1jW3S3J9TgmdzirOMhQy1suGEYLUCWIr7kRMaLkuozb4uC1XfHvHMEmwCJ9dO2vV2M04NtV5I33msRkzJ1bkh1iRAMGZjZGIVRXHNkwLsyhjQ2X1nhRhkmla4XpUbdGrrbZp1q0Tbjb1iol9j6aqGG9cCXTNqllVVf8AtQyKPg==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+RolesController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-for-user.ParamsDetails.json b/docs/api-reference/reference/roles-controller-list-for-user.ParamsDetails.json
new file mode 100644
index 0000000000..ad009d9545
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-for-user.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-for-user.RequestSchema.json b/docs/api-reference/reference/roles-controller-list-for-user.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-for-user.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-for-user.StatusCodes.json b/docs/api-reference/reference/roles-controller-list-for-user.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-for-user.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-for-user.api.mdx b/docs/api-reference/reference/roles-controller-list-for-user.api.mdx
new file mode 100644
index 0000000000..7382e06938
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-for-user.api.mdx
@@ -0,0 +1,69 @@
+---
+id: roles-controller-list-for-user
+title: "RolesController_listForUser"
+description: "RolesController_listForUser"
+sidebar_label: "RolesController_listForUser"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmN1OKzcQx19l5CuQnE/S9rB3aYCKSkeH8tULhJCznk18jtde7FkKjfZ5+h59smq8SwLkiFPucxXHH+O/x7+ZeLISvsKgyHh3qkUmzr3FOPOOgrcWw501kU58uIoYhBSVCqpEwhBFdrMSTpUoMlFHDKdaSBHwvjYBtcgo1CiFcSITlaKlkCLmSyyVyFaCnipeFSkYtxBNc8sLY+VdxMjj4+GQPzTGPJiKlYlMiEaKyfcGrpU1OumHQhmLWoIPQEsEVoOR4MF4qwgjKJjX0TiMEUJtsS+kyL0jdMRmVVVZkydLg6+Rba+2Rfv5V8yJPRHYb2RayRiCDz+elnuN2x6QAh9VWVnu+nV6dHd+/MfV8cWlkG9OekFqbhFKlS+Nw15ApVNH2hzYdp+9VGKMavGDfba8BoUP4B2y80ofEAqDVsdksXMk8/GeTT2ajOcTnffGxXDcm3z6edib/3Rw2DssJsX4l2IyGs4/bR1q5kPA9npoaWJ3mL8MLSFieMDQi0YjWL9gLc1Lxm5af25O/FLprRRkKOk6ZpNHSMrYI/JbRtq7ezv/vCOyXdEk+kbb9H02MRq3kFAqW/hQdvjhY8XmIQ+o0ZFRNu5o29H2IdoOtmmb1rRknHJFDNq8JihbANcJL2FXYUj93sGeD2AoQsDo65AjxNxXKGF6dN4bjg/2d1jusPwQlpNtLC83P7aoN6RpjxGcJ8BHEynlRdN2PJho+NLIJ25zxU+NHYk7Ej9E4uG7JELuXWFNTrGVnyDkTBlJEcIe9hd9UKDrFjOE2pn7GuFB2Rp3aXEH4/+HsZGC1IJLIhG4fOIFEfM6GHpKddIcVcAgsptbLnZeH/L9gqtEWnquyxaYkOFaKhMDVZnBw2jAhVccrNr6qxm0m/Pe7BzW80LIBePaovYsp2OYz9V1ya5x4kOpSGTi9z8v+dZ9rMwdTM9O4Rs+Cfl80UuiKvnMuMInADo3fbk4O4Uzq4jfxLxu627TjL0vFTq4IOW0ChrOgtd1TnCa3sxFF3D7kDNzVWetD5+vz9pXDL9zeBHHE8y8i2SoTtz++8/kIOvs0JOEL2GhnPk72YsS+B0lu+0wwMxrjBKSpK7dSYkSrlUwynFrpggXPhgenxIFM6+J2zOrYlzLlXDk87rEtGRaa0OcS/g+2oMP+6P+sMsuKufswg6sfKRSpbzSFdWJC9iAAQwGnPgAHRqv/LmOPcJHGlRWGcfRWQfLYy02N0JVhrWMhEw1O7OSbYr3Z3SXPhLPXq3mKuJVsE3D3fc1hqeWqQf2yZxv+mYltInc1iIrlI24JWydRsXeeRda+7Bh6LXgrlM5piylYq79pWDs1n80NLeNFEtUOsXUqhuc5jlW9GLZVtLm4FsH1G/HnEVVzZ5Ze+9NGCTr35W0WrUzLv03dE2zVkj8nQU2zX++JfBf
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+RolesController_listForUser
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-permissions.ParamsDetails.json b/docs/api-reference/reference/roles-controller-list-permissions.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-permissions.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-permissions.RequestSchema.json b/docs/api-reference/reference/roles-controller-list-permissions.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-permissions.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-permissions.StatusCodes.json b/docs/api-reference/reference/roles-controller-list-permissions.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-permissions.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list-permissions.api.mdx b/docs/api-reference/reference/roles-controller-list-permissions.api.mdx
new file mode 100644
index 0000000000..03bb782184
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list-permissions.api.mdx
@@ -0,0 +1,69 @@
+---
+id: roles-controller-list-permissions
+title: "RolesController_listPermissions"
+description: "RolesController_listPermissions"
+sidebar_label: "RolesController_listPermissions"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu4zYQhl9lwKssIDu247Yb3blOWqTAYt0km14ERkBRI4u7FKmQIzeuoefpe/TJiqEU5+Bi09z7yjQPP+fwcURuhavRS9LOXuQiFZfOYJg7S94Zg/7O6EAL9JUOQTsbRCJq6WWFhD6I9HaZCI+hdjZgEOlWTEYj/skxKK9rVhWpEG0ipv81cCONzuPeUEhtME/AeaASweN9g4FgrZ2RhAEkZE3QFkMA3xgcikQoZwktsaysa6NVVDr+Glh7K4IqsZLcok2NIhUu+4qK2APPPpPuTEbvnX97mnI5PpsVyGu7EonAB1nVhrt+np3dXZ7//uX86lokrzy9IpkZhEqqUlsceJR57IibA2sPOUoVhiBXb+yzFzUonAdnkYNXOY9QaDR5iIp9IDm339PMx9NJNs3VYFKMJoPpxx9Hg+yHk9PBaTEtJj8V0/Eo+7jn1Nx5j116qNShd+ZPTSUE9Gv0g6BzBONWbEtvjPaYi/S2i+eTx88tXSaCNEW7zlnyDElqc0ZuT6TL3ev5lz2R3Yo20jfep+8TM21XCVTSFM5XPX74ULM8KI85WtLShANtB9reRdvJPm2zhkrGSUli0LKGoOoA3BW8iF29K7Zw5DxoCuAxuMYrhKBcjQnMzi4Ho8nJhwOWByzfheV0H8vrp48t5k+k5Q4DWEeADzpQrIu661jroDlp5CK3SvI14UDigcR3kXj6XRJBOVsYrSh05kcIuVIGkoRwhMPVECTkTYcZQmP1fYOwlqbBQ1k8wPj/YWwTQXLFTxnh+enDCwKqxmvaiPR2KzKUHj0/ddrlayfffixVSKXjd9UKIzaSSpGKY1nr4/X4uH4xt4tL/6p6tOGKSe0oe7Skx5dd6ruSvvGL85UkkYrf/rjmhLtQ6zuYLS7gG25E8pjjkqiO4dK2cDH3fYQ+Xy0uYGEk8XWY1+2lNc44+lyjhSuSNpc+h4V3eaMILuJ1uejP2gdQjFvdqw3h082iu8DwFYcX8VGCubOBNDUR2X/+np6kvQ5tEvjsV9Lqv6JeSICvUEm/HXqYuxxDAtGkvt2bEhK4kV5Ly625JFw5r3l8RuR11hC350aGsDM3gTOnmgrjklmTa+IywvnoHB8Nx8NRX1ik4sLCAaxdoErGkmJlzEhEAp6YAGYCXkLxIqS7k0f4QMe1kdry2Wy84bEOmFsha83mjJmhZ1rLRJQuEM/YbjMZ8Is3bcvd9w36TYfSmkORcYJvl20iSpR5BHormIpUzJTCmumM5VOk+xWTyd+R/Os5lzDZsGE741+BGNX7IWk3z7S3227GtfuGtm1F0htB/F+0y7Zt/wWjDLBF
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+RolesController_listPermissions
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list.ParamsDetails.json b/docs/api-reference/reference/roles-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list.RequestSchema.json b/docs/api-reference/reference/roles-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list.StatusCodes.json b/docs/api-reference/reference/roles-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-list.api.mdx b/docs/api-reference/reference/roles-controller-list.api.mdx
new file mode 100644
index 0000000000..a2301b2131
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: roles-controller-list
+title: "RolesController_list"
+description: "RolesController_list"
+sidebar_label: "RolesController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu4zYQhl9lwKssIDu247Yb3blOWqTAYtMkm14EQUBJI4u7FKkMR25cQ8/T9+iTFUMph8btbnPvqzA8/HP6NCa3yjdImo13Z4VK1YW3GJbeMXlrke6sCawS1WjSNTJSUOnNbaIIQ+NdwKDSrZpNJvKnwJCTaURKpUp1iZr/28K1tqaIBqHUxmKRgCfgCoHwvsXAsDbeasYAGrI2GIchALUWxypRuXeMjkVWN401eVQ6/BxEe6tCXmGtZcSbBlWqfPYZ8xgBSaBsepeRyNO3t+W+wBe7ApNxK5UofNB1Y2Xqx8XJ3cXpr59OL69U8irSS9aZRah1XhmHI0JdxIloHER7LFmqMQS9+oadnaxB6Qm8Q0le7QmhNGiLEBWHREpBv6ZZTOezbF7ko1k5mY3m77+fjLLvjo5Hx+W8nP1QzqeT7P1OUEtPhH15uDJhCOZ3wxUEpDXSKJgCwfqV+DI4YwgLld70+XyO+KWnt4liw9GvU5E8QdbGnrDfEelr93r/xUBkf6KL9E136ftgQjBulUCtbempHvDDh0bkIScs0LHRNuxp29P2JtqOdmlbtFwJTrlmAS1rGeoewKeGF7FrkOK8d3DgCQwHIAy+pRwh5L7BBBYnF6PJ7OjdHss9lm/Ccr6L5dXzjy0Wz6QVHgM4z4APJnDsi6afWJtgpGjsI7e5lrvBnsQ9iW8i8firJELuXWlNzqF3P0IonTKwZoQDHK/GoKFoe8wQWmfuW4S1ti3u2+Iexv8PY5co1it5yiiS944cCJi3ZHij0putylATkjx1utvXQf7HC6lGrry8oFbYP5i4Uqk61I05XE8PezNiRdIwPKIeTV4KmD1Uj4YHWiWCYSoZBj95qjWrVP3y25XU14fG3MHi/Ay+4EYljyWtmJuYHeNKH0s9JOTj5fkZnFvNcvuVcztVjDsOPjbo4JK1KzQVcE6+aHOGs3g7LodP6x3kQlczqI3hw/V5f1+RG40cki8Hlt4FNtxGQv/6c36UDjq8SeAjrbQzf0S9kIDcmJLBHBIsfYEhgejSMB5cCQlcazLayWipGVeejKwvmMlkLct4aXUIT+4mcOLztsZ4ZNEWhqVrSD36wCfj6Xgy9BGdSx+RBDY+cK1jB3E6ViQSAM8IwIDAP9L49HExPvBhY7Vx8vm1ZGWtx+NG6caIC1PB/ZHEygeWte020wE/ke06mb5vkTY9OGsJPJNy3tx2iapQF5HWrRIGUrXIc2zEo9gbVbrbDgXrJ2J/PpX+pFtx6cntV9hF9WFJu80L7e2233Hlv6DrOpUMTrD8r7rbruv+Bj4knSM=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+RolesController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-revoke.ParamsDetails.json b/docs/api-reference/reference/roles-controller-revoke.ParamsDetails.json
new file mode 100644
index 0000000000..cd570b2cf1
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-revoke.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"roleId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-revoke.RequestSchema.json b/docs/api-reference/reference/roles-controller-revoke.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-revoke.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-revoke.StatusCodes.json b/docs/api-reference/reference/roles-controller-revoke.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-revoke.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/roles-controller-revoke.api.mdx b/docs/api-reference/reference/roles-controller-revoke.api.mdx
new file mode 100644
index 0000000000..ab42212444
--- /dev/null
+++ b/docs/api-reference/reference/roles-controller-revoke.api.mdx
@@ -0,0 +1,69 @@
+---
+id: roles-controller-revoke
+title: "RolesController_revoke"
+description: "RolesController_revoke"
+sidebar_label: "RolesController_revoke"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1uGzcQx19lMCcboD5sq228N9V2ARcN4tqOezAMg1qOJCZcckPOqnaFfZ6+R5+sGO5GdqI0qVGgJ51EkcvhnzM/znJ2jaGmqNkGf26wwMvgKJ0EzzE4R/E+0iq8J1RY66grYooJi9s1el0RFtgkiucGFUb60NhIBguODSm0HgusNS9RYSqXVGks1siPtcxKHK1fYNuqjaEYHP0HQ3cyMdXBJ0oyfjgey4+hVEZby+6wQGwVTr40cKOdNdkHMNfWkVEQIvCSQNRQYljZ4DRTAg2zJllPKUFsHA1RYRk8k2cxq+va2TJbGr1LYnu9LTrM3lHJ4tIovmfbSaYYQ/z2Y2UwtO0BhfSgq9pJ14/T0/vLs1/fnl1do/psp1esZ46g0uXSehpE0iZ35MVBbA/FSxWlpBffWGfLazAPEYIncV4VIsHckjMpW+wdKYx9zaY5mBzOJqYcHM7Hh4PJq+/Hg9l3R8eD4/lkfvjDfHIwnr3a2tRJiJG68PDSpn4zv1teQqK4ojhI1hC4sBAt7XPGbjt/Pu34udI7hWw56zoTk6fE2rpTDltGuth9/vxlT2Q3o830HWzT99qmZP1CQaXdPMSqx48eajEPZSRDnq12aUfbjrYX0Xa0Tdu04aXgVGoW0GYNQ9UBuEl4GbuaYu4PHvZCBMsJIqXQxJIglaEmBdPTy8H48Gh/h+UOyxdhOdnG8vrpZUvmiTQTKIEPDPRgE+e8aLuOlU1WgsYhc1tqua7sSNyR+CISj79KIpTBz50tOXXyM4SSKRNrJtij4WIIGkzTYUbQePuhIVhp19AuLe5g/PcwtgpZL6S2yqVQkgmJyiZafswF14x0pIjF7Z0UO59u8h+Ltop4GaSsM+SIuzKOl1jgSNd2tDoYSf2WRuuujGtHeenRuivGWqm4so9E1jM9V0JtR9xHVT3Ksr2+S/WNn0KsNGOBP/92LcEPqbb3ML04h/f0iOpjvJfMdXad9fOQOei99ebq4hwunGa5Gsu8rRDnJ/be1OThirU3Ohq4iME0JcN5vjrP+3O3D6WgV/fWhvD65qK7zMh1RybJsYKT4BNbbjK+f/05OSp6O/yo4E1caG//yPaSArlOqX45inASDCUFWVLf7qUkBTc6Wu2ldaKZFiFaGZ8yRztrWNonTqe0kavgNJRNRXnKtDGWJaVIPLqNj4cHw3GfZHQpSUYcWIfElc7ppa+tMx7wxAds+PjEkZuzx/TAo9pp6+V0NtHJWAfOLeraiogDVLn4T6iwePoKkNFVWPTl/J3CZUgs89brmU70Nrq2le4PDcXHDquVuGUmwb5do7FJ2gaLuXaJtiRuEiruXfaHbB+eMPpUet+pvYCWk7J8BVAo5G2+XchHiP9x1d4z7V2rcEna5DO97genZUk1P5u29dKQw7851adnv5xdn6FC3UhwNgH87AjmBb6oar3unrgO78m37UYky3/R2LZ/A/6BMh0=
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+RolesController_revoke
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/addorderlinedto.Schema.json b/docs/api-reference/reference/schemas/addorderlinedto.Schema.json
new file mode 100644
index 0000000000..8aaf4cdc55
--- /dev/null
+++ b/docs/api-reference/reference/schemas/addorderlinedto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"offerId":{"type":"string"},"quantity":{"type":"number","description":"Decimal, not just whole units (ADR-024, Deel 17 §29) — e.g. 4.5 kg, 10.75 m."}},"required":["offerId","quantity"],"title":"AddOrderLineDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/addorderlinedto.schema.mdx b/docs/api-reference/reference/schemas/addorderlinedto.schema.mdx
new file mode 100644
index 0000000000..25ae5ef656
--- /dev/null
+++ b/docs/api-reference/reference/schemas/addorderlinedto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: addorderlinedto
+title: "AddOrderLineDto"
+description: ""
+sidebar_label: "AddOrderLineDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"offerId":"string","quantity":0}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/assignclassificationdto.Schema.json b/docs/api-reference/reference/schemas/assignclassificationdto.Schema.json
new file mode 100644
index 0000000000..6c1ce231fc
--- /dev/null
+++ b/docs/api-reference/reference/schemas/assignclassificationdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"productId":{"type":"string"},"classificationNodeId":{"type":"string"}},"required":["productId","classificationNodeId"],"title":"AssignClassificationDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/assignclassificationdto.schema.mdx b/docs/api-reference/reference/schemas/assignclassificationdto.schema.mdx
new file mode 100644
index 0000000000..5330bbed09
--- /dev/null
+++ b/docs/api-reference/reference/schemas/assignclassificationdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: assignclassificationdto
+title: "AssignClassificationDto"
+description: ""
+sidebar_label: "AssignClassificationDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"productId":"string","classificationNodeId":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/assignroledto.Schema.json b/docs/api-reference/reference/schemas/assignroledto.Schema.json
new file mode 100644
index 0000000000..bc2c341282
--- /dev/null
+++ b/docs/api-reference/reference/schemas/assignroledto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"roleId":{"type":"string"}},"required":["roleId"],"title":"AssignRoleDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/assignroledto.schema.mdx b/docs/api-reference/reference/schemas/assignroledto.schema.mdx
new file mode 100644
index 0000000000..f54a7d0b1c
--- /dev/null
+++ b/docs/api-reference/reference/schemas/assignroledto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: assignroledto
+title: "AssignRoleDto"
+description: ""
+sidebar_label: "AssignRoleDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"roleId":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/bulkcreateproductdto.Schema.json b/docs/api-reference/reference/schemas/bulkcreateproductdto.Schema.json
new file mode 100644
index 0000000000..5e1a284d70
--- /dev/null
+++ b/docs/api-reference/reference/schemas/bulkcreateproductdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"type":"string"},"gtin":{"type":"string","description":"GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."},"identity":{"description":"Segments used to mint the OSPI identity for this product (Deel 4). Not required if you already issued an identity via POST /ospi-identities and pass ospiIdentityId instead.","allOf":[{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"}]},"ospiIdentityId":{"type":"string","description":"An already-issued, unattached OSPI identity ID"}},"required":["name"],"title":"CreateProductDto"}}},"required":["items"],"title":"BulkCreateProductDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/bulkcreateproductdto.schema.mdx b/docs/api-reference/reference/schemas/bulkcreateproductdto.schema.mdx
new file mode 100644
index 0000000000..8c98a1502a
--- /dev/null
+++ b/docs/api-reference/reference/schemas/bulkcreateproductdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: bulkcreateproductdto
+title: "BulkCreateProductDto"
+description: ""
+sidebar_label: "BulkCreateProductDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"items":[{"name":"string","description":"string","categoryId":"string","gtin":"string","identity":{"producerCodeId":"string","categoryCode":"123456","companyProductId":"00012345","variantCode":"0001","serialBatch":"00000001","version":1,"reserved":true,"reservedUntil":"string"},"ospiIdentityId":"string"}]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/bulkregisterserializedunitdto.Schema.json b/docs/api-reference/reference/schemas/bulkregisterserializedunitdto.Schema.json
new file mode 100644
index 0000000000..c8c71f96bb
--- /dev/null
+++ b/docs/api-reference/reference/schemas/bulkregisterserializedunitdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"variantId":{"type":"string","description":"Optional — registers the unit under a specific variant rather than the base product."},"serialBatch":{"type":"string","description":"The real per-unit/per-batch value (Deel 4 segment [EEEEEEEE]) — not the \"00000000\" placeholder.","example":"00000001"}},"required":["serialBatch"],"title":"RegisterSerializedUnitDto"}}},"required":["items"],"title":"BulkRegisterSerializedUnitDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/bulkregisterserializedunitdto.schema.mdx b/docs/api-reference/reference/schemas/bulkregisterserializedunitdto.schema.mdx
new file mode 100644
index 0000000000..612b056bc8
--- /dev/null
+++ b/docs/api-reference/reference/schemas/bulkregisterserializedunitdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: bulkregisterserializedunitdto
+title: "BulkRegisterSerializedUnitDto"
+description: ""
+sidebar_label: "BulkRegisterSerializedUnitDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"items":[{"variantId":"string","serialBatch":"00000001"}]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createapiclientdto.Schema.json b/docs/api-reference/reference/schemas/createapiclientdto.Schema.json
new file mode 100644
index 0000000000..a43d4fa59a
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createapiclientdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"scopes":{"type":"array","example":["products:write"],"description":"Real, enforced permission codes — see src/auth/permissions.ts. '*' grants full org-wide access, same as the Owner role.","items":{"type":"string","enum":["producers:write","products:write","orders:write","offers:write","connections:write","inventory:write","org:manage","dpp:manage","documents:write","attributes:write","classification:manage","sharing:write","roles:manage","webhooks:manage","categories:govern","*"]}}},"required":["name","scopes"],"title":"CreateApiClientDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createapiclientdto.schema.mdx b/docs/api-reference/reference/schemas/createapiclientdto.schema.mdx
new file mode 100644
index 0000000000..ced364716f
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createapiclientdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createapiclientdto
+title: "CreateApiClientDto"
+description: ""
+sidebar_label: "CreateApiClientDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","scopes":["products:write"]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createattributedefinitiondto.Schema.json b/docs/api-reference/reference/schemas/createattributedefinitiondto.Schema.json
new file mode 100644
index 0000000000..5a407ff3a4
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createattributedefinitiondto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"dataType":{"type":"string","enum":["STRING","TEXT","INTEGER","DECIMAL","BOOLEAN","DATE","DATETIME","ENUM","MEASUREMENT","REFERENCE","URL","EMAIL"]},"enumValues":{"description":"Required when dataType = ENUM","type":"array","items":{"type":"string"}},"unitCode":{"type":"string","description":"Default unit code, used when dataType = MEASUREMENT"}},"required":["code","name","dataType"],"title":"CreateAttributeDefinitionDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createattributedefinitiondto.schema.mdx b/docs/api-reference/reference/schemas/createattributedefinitiondto.schema.mdx
new file mode 100644
index 0000000000..8f30d3461f
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createattributedefinitiondto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createattributedefinitiondto
+title: "CreateAttributeDefinitionDto"
+description: ""
+sidebar_label: "CreateAttributeDefinitionDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"string","name":"string","dataType":"STRING","enumValues":["string"],"unitCode":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createcategorydto.Schema.json b/docs/api-reference/reference/schemas/createcategorydto.Schema.json
new file mode 100644
index 0000000000..09599f5883
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createcategorydto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string"},"scope":{"type":"string","description":"'organization' (default): private to your org, usable immediately, no review. 'global': a PROPOSAL for the shared cross-org registry (ADR-020) — created PENDING, only usable once a `categories:govern` holder approves it via POST /categories/:id/approve.","enum":["organization","global"]}},"required":["code","name"],"title":"CreateCategoryDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createcategorydto.schema.mdx b/docs/api-reference/reference/schemas/createcategorydto.schema.mdx
new file mode 100644
index 0000000000..8c6b3bf428
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createcategorydto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createcategorydto
+title: "CreateCategoryDto"
+description: ""
+sidebar_label: "CreateCategoryDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"string","name":"string","parentId":"string","scope":"organization"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createclassificationnodedto.Schema.json b/docs/api-reference/reference/schemas/createclassificationnodedto.Schema.json
new file mode 100644
index 0000000000..f887fd94f1
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createclassificationnodedto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string"}},"required":["code","name"],"title":"CreateClassificationNodeDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createclassificationnodedto.schema.mdx b/docs/api-reference/reference/schemas/createclassificationnodedto.schema.mdx
new file mode 100644
index 0000000000..e65964263d
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createclassificationnodedto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createclassificationnodedto
+title: "CreateClassificationNodeDto"
+description: ""
+sidebar_label: "CreateClassificationNodeDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"string","name":"string","parentId":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createclassificationschemedto.Schema.json b/docs/api-reference/reference/schemas/createclassificationschemedto.Schema.json
new file mode 100644
index 0000000000..cffcac9f12
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createclassificationschemedto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["code","name"],"title":"CreateClassificationSchemeDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createclassificationschemedto.schema.mdx b/docs/api-reference/reference/schemas/createclassificationschemedto.schema.mdx
new file mode 100644
index 0000000000..561a1ff543
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createclassificationschemedto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createclassificationschemedto
+title: "CreateClassificationSchemeDto"
+description: ""
+sidebar_label: "CreateClassificationSchemeDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"string","name":"string","description":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdocumentdto.Schema.json b/docs/api-reference/reference/schemas/createdocumentdto.Schema.json
new file mode 100644
index 0000000000..e713804c2c
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdocumentdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["PRIMARY_IMAGE","GALLERY_IMAGE","TECHNICAL_DRAWING","DATASHEET","MANUAL","CERTIFICATE","DECLARATION","SAFETY_DOCUMENT","INSTALLATION_GUIDE","VIDEO","OTHER"],"default":"OTHER"},"validFrom":{"type":"string","description":"Deel 7 §52 — essential for certificates, meaningful for any document type."},"validUntil":{"type":"string"},"sortOrder":{"type":"number"},"certificateMetadata":{"type":"object","description":"Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."},"name":{"type":"string"},"mimeType":{"type":"string"},"storageRef":{"type":"string","description":"Opaque reference to the actual file in object storage."},"productId":{"type":"string"},"visibility":{"type":"string","enum":["PUBLIC","RESTRICTED","PRIVATE"],"default":"PRIVATE"},"checksum":{"type":"string","description":"SHA-256 hex, if known — this endpoint has no bytes to compute one from itself."}},"required":["name","mimeType","storageRef"],"title":"CreateDocumentDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdocumentdto.schema.mdx b/docs/api-reference/reference/schemas/createdocumentdto.schema.mdx
new file mode 100644
index 0000000000..37de5d58de
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdocumentdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createdocumentdto
+title: "CreateDocumentDto"
+description: ""
+sidebar_label: "CreateDocumentDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"documentType":"OTHER","validFrom":"string","validUntil":"string","sortOrder":0,"certificateMetadata":{},"name":"string","mimeType":"string","storageRef":"string","productId":"string","visibility":"PRIVATE","checksum":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdppprofiledto.Schema.json b/docs/api-reference/reference/schemas/createdppprofiledto.Schema.json
new file mode 100644
index 0000000000..3507bea3fe
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdppprofiledto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"version":{"type":"string","example":"1.0"},"description":{"type":"string"},"requiredAttributeCodes":{"description":"AttributeDefinition codes required for VALID status","type":"array","items":{"type":"string"}}},"required":["code","name","version","requiredAttributeCodes"],"title":"CreateDppProfileDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdppprofiledto.schema.mdx b/docs/api-reference/reference/schemas/createdppprofiledto.schema.mdx
new file mode 100644
index 0000000000..1f907f68db
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdppprofiledto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createdppprofiledto
+title: "CreateDppProfileDto"
+description: ""
+sidebar_label: "CreateDppProfileDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"string","name":"string","version":"1.0","description":"string","requiredAttributeCodes":["string"]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdpprecorddto.Schema.json b/docs/api-reference/reference/schemas/createdpprecorddto.Schema.json
new file mode 100644
index 0000000000..25c8813cd4
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdpprecorddto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"productId":{"type":"string"},"profileId":{"type":"string"}},"required":["productId","profileId"],"title":"CreateDppRecordDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdpprecorddto.schema.mdx b/docs/api-reference/reference/schemas/createdpprecorddto.schema.mdx
new file mode 100644
index 0000000000..b58a6feca0
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdpprecorddto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createdpprecorddto
+title: "CreateDppRecordDto"
+description: ""
+sidebar_label: "CreateDppRecordDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"productId":"string","profileId":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdraftorderdto.Schema.json b/docs/api-reference/reference/schemas/createdraftorderdto.Schema.json
new file mode 100644
index 0000000000..31b530d4a5
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdraftorderdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"shippingAddress":{"type":"object"},"notes":{"type":"string"}},"title":"CreateDraftOrderDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createdraftorderdto.schema.mdx b/docs/api-reference/reference/schemas/createdraftorderdto.schema.mdx
new file mode 100644
index 0000000000..824425218e
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createdraftorderdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createdraftorderdto
+title: "CreateDraftOrderDto"
+description: ""
+sidebar_label: "CreateDraftOrderDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"shippingAddress":{},"notes":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createlegalentitydto.Schema.json b/docs/api-reference/reference/schemas/createlegalentitydto.Schema.json
new file mode 100644
index 0000000000..f2264b2503
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createlegalentitydto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"vatNumber":{"type":"string"}},"required":["name","country"],"title":"CreateLegalEntityDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createlegalentitydto.schema.mdx b/docs/api-reference/reference/schemas/createlegalentitydto.schema.mdx
new file mode 100644
index 0000000000..e2f80de41d
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createlegalentitydto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createlegalentitydto
+title: "CreateLegalEntityDto"
+description: ""
+sidebar_label: "CreateLegalEntityDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","country":"string","vatNumber":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createlocationdto.Schema.json b/docs/api-reference/reference/schemas/createlocationdto.Schema.json
new file mode 100644
index 0000000000..bf78b3ac0c
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createlocationdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["WAREHOUSE","STORE","DISTRIBUTION_CENTER","FACTORY","SERVICE_CENTER","PICKUP_POINT","OFFICE"]},"country":{"type":"string"},"region":{"type":"string"},"postalCode":{"type":"string"},"city":{"type":"string"},"address":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"timezone":{"type":"string"}},"required":["name","type"],"title":"CreateLocationDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createlocationdto.schema.mdx b/docs/api-reference/reference/schemas/createlocationdto.schema.mdx
new file mode 100644
index 0000000000..f254dd95ad
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createlocationdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createlocationdto
+title: "CreateLocationDto"
+description: ""
+sidebar_label: "CreateLocationDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","type":"WAREHOUSE","country":"string","region":"string","postalCode":"string","city":"string","address":"string","latitude":0,"longitude":0,"timezone":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createofferdto.Schema.json b/docs/api-reference/reference/schemas/createofferdto.Schema.json
new file mode 100644
index 0000000000..396e83ad8e
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createofferdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"productId":{"type":"string"},"variantId":{"type":"string","description":"Prices a specific variant instead of the base product (ADR-015) — e.g. different sizes/colors with different prices. Never a serial/batch: pricing is always at product/variant (SKU) level, never per physical unit."},"price":{"type":"number"},"currency":{"type":"string","example":"EUR"},"minimumQuantity":{"type":"number","default":1,"description":"Decimal, not just whole units (ADR-024, Deel 17 §29) — e.g. 4.5 kg."},"salesUnit":{"type":"string","default":"EA"},"validFrom":{"type":"string"},"validUntil":{"type":"string"},"conditions":{"type":"object"}},"required":["productId","price","currency"],"title":"CreateOfferDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createofferdto.schema.mdx b/docs/api-reference/reference/schemas/createofferdto.schema.mdx
new file mode 100644
index 0000000000..ef90685183
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createofferdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createofferdto
+title: "CreateOfferDto"
+description: ""
+sidebar_label: "CreateOfferDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"productId":"string","variantId":"string","price":0,"currency":"EUR","minimumQuantity":1,"salesUnit":"EA","validFrom":"string","validUntil":"string","conditions":{}}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createproducerdto.Schema.json b/docs/api-reference/reference/schemas/createproducerdto.Schema.json
new file mode 100644
index 0000000000..30a1db9ed6
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createproducerdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"title":"CreateProducerDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createproducerdto.schema.mdx b/docs/api-reference/reference/schemas/createproducerdto.schema.mdx
new file mode 100644
index 0000000000..333011dbfa
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createproducerdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createproducerdto
+title: "CreateProducerDto"
+description: ""
+sidebar_label: "CreateProducerDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createproductdto.Schema.json b/docs/api-reference/reference/schemas/createproductdto.Schema.json
new file mode 100644
index 0000000000..c07a708206
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createproductdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"type":"string"},"gtin":{"type":"string","description":"GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."},"identity":{"description":"Segments used to mint the OSPI identity for this product (Deel 4). Not required if you already issued an identity via POST /ospi-identities and pass ospiIdentityId instead.","allOf":[{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"}]},"ospiIdentityId":{"type":"string","description":"An already-issued, unattached OSPI identity ID"}},"required":["name"],"title":"CreateProductDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createproductdto.schema.mdx b/docs/api-reference/reference/schemas/createproductdto.schema.mdx
new file mode 100644
index 0000000000..9c32fc8527
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createproductdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createproductdto
+title: "CreateProductDto"
+description: ""
+sidebar_label: "CreateProductDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","description":"string","categoryId":"string","gtin":"string","identity":{"producerCodeId":"string","categoryCode":"123456","companyProductId":"00012345","variantCode":"0001","serialBatch":"00000001","version":1,"reserved":true,"reservedUntil":"string"},"ospiIdentityId":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createproductrelationshipdto.Schema.json b/docs/api-reference/reference/schemas/createproductrelationshipdto.Schema.json
new file mode 100644
index 0000000000..f048adfa6f
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createproductrelationshipdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"targetProductId":{"type":"string"},"relationshipType":{"type":"string","enum":["REPLACEMENT_FOR","ACCESSORY_FOR","COMPATIBLE_WITH","PART_OF","CONTAINS","VARIANT_OF","SUPERSEDES","REQUIRES"]},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"],"description":"Default PRIVATE (Deel 7 §42) — an internal/ERP relationship is not automatically public."},"metadata":{"type":"object"},"validFrom":{"type":"string"},"validUntil":{"type":"string"}},"required":["targetProductId","relationshipType"],"title":"CreateProductRelationshipDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createproductrelationshipdto.schema.mdx b/docs/api-reference/reference/schemas/createproductrelationshipdto.schema.mdx
new file mode 100644
index 0000000000..544b7c0225
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createproductrelationshipdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createproductrelationshipdto
+title: "CreateProductRelationshipDto"
+description: ""
+sidebar_label: "CreateProductRelationshipDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"targetProductId":"string","relationshipType":"REPLACEMENT_FOR","visibility":"PRIVATE","metadata":{},"validFrom":"string","validUntil":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createroledto.Schema.json b/docs/api-reference/reference/schemas/createroledto.Schema.json
new file mode 100644
index 0000000000..99366e9d10
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createroledto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"permissions":{"type":"array","description":"Real, enforced permission codes — see src/auth/permissions.ts. Use ['*'] via the default Owner role, not here, for full access.","items":{"type":"string","enum":["producers:write","products:write","orders:write","offers:write","connections:write","inventory:write","org:manage","dpp:manage","documents:write","attributes:write","classification:manage","sharing:write","roles:manage","webhooks:manage","categories:govern"]}},"resourceType":{"type":"string","enum":["CATEGORY","LOCATION"],"description":"Scopes this role to a single Category or Location (ADR-023) instead of the whole organization. Requires resourceId. Only meaningfully enforced for the one permission each type covers (CATEGORY -> products:write, LOCATION -> inventory:write) — see src/auth/scope.util.ts."},"resourceId":{"type":"string","description":"The Category or Location id this role is scoped to. Required if resourceType is set."}},"required":["name","permissions"],"title":"CreateRoleDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createroledto.schema.mdx b/docs/api-reference/reference/schemas/createroledto.schema.mdx
new file mode 100644
index 0000000000..bc42c46be1
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createroledto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createroledto
+title: "CreateRoleDto"
+description: ""
+sidebar_label: "CreateRoleDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","permissions":["producers:write"],"resourceType":"CATEGORY","resourceId":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createsharinggrantdto.Schema.json b/docs/api-reference/reference/schemas/createsharinggrantdto.Schema.json
new file mode 100644
index 0000000000..733fc165d8
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createsharinggrantdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"connectionId":{"type":"string","description":"Must be an ACTIVE Connection the caller's organization is part of"},"targetType":{"type":"string","enum":["PRODUCT","PRODUCT_CATEGORY","ALL_PRODUCTS"]},"targetId":{"type":"string","description":"productId or categoryId, depending on targetType. Omit for ALL_PRODUCTS."},"dataCategories":{"type":"array","items":{"type":"string","enum":["PRODUCT_DATA","CONTENT","DPP","INVENTORY","ORDERING"]}},"expiresAt":{"type":"string"},"ruleFilter":{"description":"Rule-based/dynamic scoping (ADR-022), e.g. [{ attributeCode: \"region\", operator: \"eq\", value: \"EU\" }]. ANDed with each other and with targetType — a product must also match every rule to be in scope. Omit for no extra filtering.","type":"array","items":{"type":"object","properties":{"attributeCode":{"type":"string","description":"Code of an AttributeDefinition visible to your organization (global or your own)."},"operator":{"type":"string","enum":["eq","neq","in","contains"]},"value":{"type":"object","description":"Value to compare against. Must be an array when operator is \"in\"."}},"required":["attributeCode","operator","value"],"title":"SharingRuleDto"}}},"required":["connectionId","targetType","dataCategories"],"title":"CreateSharingGrantDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createsharinggrantdto.schema.mdx b/docs/api-reference/reference/schemas/createsharinggrantdto.schema.mdx
new file mode 100644
index 0000000000..6038de84dc
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createsharinggrantdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createsharinggrantdto
+title: "CreateSharingGrantDto"
+description: ""
+sidebar_label: "CreateSharingGrantDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"connectionId":"string","targetType":"PRODUCT","targetId":"string","dataCategories":["PRODUCT_DATA"],"expiresAt":"string","ruleFilter":[{"attributeCode":"string","operator":"eq","value":{}}]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createvariantdto.Schema.json b/docs/api-reference/reference/schemas/createvariantdto.Schema.json
new file mode 100644
index 0000000000..98182ae2d4
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createvariantdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"identity":{"description":"Segments to mint a distinct OSPI identity (own full code) for this variant. Every variant now requires its own identity (product owner decision, ADR-015 amendment, 2026-08-17) — provide either this or ospiIdentityId, exactly one, not neither.","allOf":[{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"}]},"ospiIdentityId":{"type":"string","description":"An already-issued, unattached OSPI identity ID for this variant. Provide either this or `identity`, exactly one."}},"required":["sku"],"title":"CreateVariantDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createvariantdto.schema.mdx b/docs/api-reference/reference/schemas/createvariantdto.schema.mdx
new file mode 100644
index 0000000000..7ef7bf19cd
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createvariantdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createvariantdto
+title: "CreateVariantDto"
+description: ""
+sidebar_label: "CreateVariantDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"sku":"string","name":"string","identity":{"producerCodeId":"string","categoryCode":"123456","companyProductId":"00012345","variantCode":"0001","serialBatch":"00000001","version":1,"reserved":true,"reservedUntil":"string"},"ospiIdentityId":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createwebhooksubscriptiondto.Schema.json b/docs/api-reference/reference/schemas/createwebhooksubscriptiondto.Schema.json
new file mode 100644
index 0000000000..2ed7880c2b
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createwebhooksubscriptiondto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"url":{"type":"string","example":"https://example.com/ospi/webhook"},"eventTypes":{"type":"array","items":{"type":"string","enum":["identity.registered","identity.activated","identity.suspended","identity.reactivated","identity.retired","product.created","product.published","product.unpublished","product.recalled","product.archived","order.created","order.updated"]}}},"required":["url","eventTypes"],"title":"CreateWebhookSubscriptionDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/createwebhooksubscriptiondto.schema.mdx b/docs/api-reference/reference/schemas/createwebhooksubscriptiondto.schema.mdx
new file mode 100644
index 0000000000..9c19b06340
--- /dev/null
+++ b/docs/api-reference/reference/schemas/createwebhooksubscriptiondto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: createwebhooksubscriptiondto
+title: "CreateWebhookSubscriptionDto"
+description: ""
+sidebar_label: "CreateWebhookSubscriptionDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"url":"https://example.com/ospi/webhook","eventTypes":["identity.registered"]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/errordetaildto.Schema.json b/docs/api-reference/reference/schemas/errordetaildto.Schema.json
new file mode 100644
index 0000000000..276d058fd6
--- /dev/null
+++ b/docs/api-reference/reference/schemas/errordetaildto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/errordetaildto.schema.mdx b/docs/api-reference/reference/schemas/errordetaildto.schema.mdx
new file mode 100644
index 0000000000..d3f22538ab
--- /dev/null
+++ b/docs/api-reference/reference/schemas/errordetaildto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: errordetaildto
+title: "ErrorDetailDto"
+description: ""
+sidebar_label: "ErrorDetailDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"BAD_REQUEST","message":"Validation failed for one or more fields.","requestId":"d142b4dc-2f02-4860-b539-9f4f27f410b8"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/errorresponsedto.Schema.json b/docs/api-reference/reference/schemas/errorresponsedto.Schema.json
new file mode 100644
index 0000000000..446987104f
--- /dev/null
+++ b/docs/api-reference/reference/schemas/errorresponsedto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/errorresponsedto.schema.mdx b/docs/api-reference/reference/schemas/errorresponsedto.schema.mdx
new file mode 100644
index 0000000000..bc647d5d78
--- /dev/null
+++ b/docs/api-reference/reference/schemas/errorresponsedto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: errorresponsedto
+title: "ErrorResponseDto"
+description: ""
+sidebar_label: "ErrorResponseDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"error":{"code":"BAD_REQUEST","message":"Validation failed for one or more fields.","requestId":"d142b4dc-2f02-4860-b539-9f4f27f410b8"}}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/inviteuserdto.Schema.json b/docs/api-reference/reference/schemas/inviteuserdto.Schema.json
new file mode 100644
index 0000000000..21763fdb56
--- /dev/null
+++ b/docs/api-reference/reference/schemas/inviteuserdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"roleIds":{"description":"Role IDs to assign — at least one is required.","type":"array","items":{"type":"string"}}},"required":["email","roleIds"],"title":"InviteUserDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/inviteuserdto.schema.mdx b/docs/api-reference/reference/schemas/inviteuserdto.schema.mdx
new file mode 100644
index 0000000000..2dea88cdc2
--- /dev/null
+++ b/docs/api-reference/reference/schemas/inviteuserdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: inviteuserdto
+title: "InviteUserDto"
+description: ""
+sidebar_label: "InviteUserDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"email":"string","firstName":"string","lastName":"string","roleIds":["string"]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/issueospiidentitydto.Schema.json b/docs/api-reference/reference/schemas/issueospiidentitydto.Schema.json
new file mode 100644
index 0000000000..1f5c54e744
--- /dev/null
+++ b/docs/api-reference/reference/schemas/issueospiidentitydto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"producerCodeId":{"type":"string"},"categoryCode":{"type":"string","example":"123456"},"companyProductId":{"type":"string","description":"Producer-supplied product identifier (Deel 4 §14)","example":"00012345"},"variantCode":{"type":"string","example":"0001"},"serialBatch":{"type":"string","example":"00000001"},"version":{"type":"number","minimum":1,"maximum":9,"default":1},"reserved":{"type":"boolean","description":"Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."},"reservedUntil":{"type":"string","description":"Only meaningful with reserved: true — when the reservation lapses."}},"required":["producerCodeId","categoryCode","companyProductId"],"title":"IssueOspiIdentityDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/issueospiidentitydto.schema.mdx b/docs/api-reference/reference/schemas/issueospiidentitydto.schema.mdx
new file mode 100644
index 0000000000..43e04caad7
--- /dev/null
+++ b/docs/api-reference/reference/schemas/issueospiidentitydto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: issueospiidentitydto
+title: "IssueOspiIdentityDto"
+description: ""
+sidebar_label: "IssueOspiIdentityDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"producerCodeId":"string","categoryCode":"123456","companyProductId":"00012345","variantCode":"0001","serialBatch":"00000001","version":1,"reserved":true,"reservedUntil":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/issueproducercodedto.Schema.json b/docs/api-reference/reference/schemas/issueproducercodedto.Schema.json
new file mode 100644
index 0000000000..da4a4b0569
--- /dev/null
+++ b/docs/api-reference/reference/schemas/issueproducercodedto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Desired producer code, A-Z0-9, max 12 characters","example":"ACME"}},"required":["code"],"title":"IssueProducerCodeDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/issueproducercodedto.schema.mdx b/docs/api-reference/reference/schemas/issueproducercodedto.schema.mdx
new file mode 100644
index 0000000000..3283eb872d
--- /dev/null
+++ b/docs/api-reference/reference/schemas/issueproducercodedto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: issueproducercodedto
+title: "IssueProducerCodeDto"
+description: ""
+sidebar_label: "IssueProducerCodeDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"ACME"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/logindto.Schema.json b/docs/api-reference/reference/schemas/logindto.Schema.json
new file mode 100644
index 0000000000..fac95b4276
--- /dev/null
+++ b/docs/api-reference/reference/schemas/logindto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"],"title":"LoginDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/logindto.schema.mdx b/docs/api-reference/reference/schemas/logindto.schema.mdx
new file mode 100644
index 0000000000..ca78ac61b0
--- /dev/null
+++ b/docs/api-reference/reference/schemas/logindto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: logindto
+title: "LoginDto"
+description: ""
+sidebar_label: "LoginDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"email":"string","password":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/refreshdto.Schema.json b/docs/api-reference/reference/schemas/refreshdto.Schema.json
new file mode 100644
index 0000000000..6df10a0038
--- /dev/null
+++ b/docs/api-reference/reference/schemas/refreshdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"],"title":"RefreshDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/refreshdto.schema.mdx b/docs/api-reference/reference/schemas/refreshdto.schema.mdx
new file mode 100644
index 0000000000..c5dbcff252
--- /dev/null
+++ b/docs/api-reference/reference/schemas/refreshdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: refreshdto
+title: "RefreshDto"
+description: ""
+sidebar_label: "RefreshDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"refreshToken":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/registerdto.Schema.json b/docs/api-reference/reference/schemas/registerdto.Schema.json
new file mode 100644
index 0000000000..3ab8bd565c
--- /dev/null
+++ b/docs/api-reference/reference/schemas/registerdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"organizationName":{"type":"string","description":"Name of the new organization"},"email":{"type":"string"},"password":{"type":"string","minLength":8},"firstName":{"type":"string"},"lastName":{"type":"string"}},"required":["organizationName","email","password"],"title":"RegisterDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/registerdto.schema.mdx b/docs/api-reference/reference/schemas/registerdto.schema.mdx
new file mode 100644
index 0000000000..28d17ab83a
--- /dev/null
+++ b/docs/api-reference/reference/schemas/registerdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: registerdto
+title: "RegisterDto"
+description: ""
+sidebar_label: "RegisterDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"organizationName":"string","email":"string","password":"string","firstName":"string","lastName":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/registerserializedunitdto.Schema.json b/docs/api-reference/reference/schemas/registerserializedunitdto.Schema.json
new file mode 100644
index 0000000000..7deb6c6ba3
--- /dev/null
+++ b/docs/api-reference/reference/schemas/registerserializedunitdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"variantId":{"type":"string","description":"Optional — registers the unit under a specific variant rather than the base product."},"serialBatch":{"type":"string","description":"The real per-unit/per-batch value (Deel 4 segment [EEEEEEEE]) — not the \"00000000\" placeholder.","example":"00000001"}},"required":["serialBatch"],"title":"RegisterSerializedUnitDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/registerserializedunitdto.schema.mdx b/docs/api-reference/reference/schemas/registerserializedunitdto.schema.mdx
new file mode 100644
index 0000000000..f9a8fa6282
--- /dev/null
+++ b/docs/api-reference/reference/schemas/registerserializedunitdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: registerserializedunitdto
+title: "RegisterSerializedUnitDto"
+description: ""
+sidebar_label: "RegisterSerializedUnitDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"variantId":"string","serialBatch":"00000001"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/rejectcategorydto.Schema.json b/docs/api-reference/reference/schemas/rejectcategorydto.Schema.json
new file mode 100644
index 0000000000..43f0dd8946
--- /dev/null
+++ b/docs/api-reference/reference/schemas/rejectcategorydto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"reason":{"type":"string"}},"title":"RejectCategoryDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/rejectcategorydto.schema.mdx b/docs/api-reference/reference/schemas/rejectcategorydto.schema.mdx
new file mode 100644
index 0000000000..fb196cee36
--- /dev/null
+++ b/docs/api-reference/reference/schemas/rejectcategorydto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: rejectcategorydto
+title: "RejectCategoryDto"
+description: ""
+sidebar_label: "RejectCategoryDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"reason":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/requestconnectiondto.Schema.json b/docs/api-reference/reference/schemas/requestconnectiondto.Schema.json
new file mode 100644
index 0000000000..2869a792ea
--- /dev/null
+++ b/docs/api-reference/reference/schemas/requestconnectiondto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"targetOrganizationId":{"type":"string","description":"Organization ID to connect with"},"type":{"type":"string","enum":["BUSINESS","DATA","API","SUPPLY","DISTRIBUTION","SERVICE","ORDERING","INTEGRATION"]},"capabilities":{"example":["product.read","inventory.read","order.create"],"description":"Capabilities requested (Deel 15 §10). Each side authorizes independently.","type":"array","items":{"type":"string"}}},"required":["targetOrganizationId","type"],"title":"RequestConnectionDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/requestconnectiondto.schema.mdx b/docs/api-reference/reference/schemas/requestconnectiondto.schema.mdx
new file mode 100644
index 0000000000..47019cdecc
--- /dev/null
+++ b/docs/api-reference/reference/schemas/requestconnectiondto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: requestconnectiondto
+title: "RequestConnectionDto"
+description: ""
+sidebar_label: "RequestConnectionDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"targetOrganizationId":"string","type":"BUSINESS","capabilities":["product.read","inventory.read","order.create"]}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setattributevaluedto.Schema.json b/docs/api-reference/reference/schemas/setattributevaluedto.Schema.json
new file mode 100644
index 0000000000..de2c0a697b
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setattributevaluedto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"attributeDefinitionId":{"type":"string"},"value":{"type":"object","description":"Value shape depends on the attribute's dataType"},"source":{"type":"string","enum":["MANUFACTURER","SUPPLIER","IMPORT","USER","API","CALCULATED","INFERRED"]},"sourceOrganizationId":{"type":"string","description":"Which organization supplied this value (field-level federation, Deel 11 §75). Defaults to the caller's own organization."},"sourceReference":{"type":"string","description":"A document id/URL/system name to look up more detail — e.g. a certificate or ERP record."},"confidence":{"type":"number","description":"0..1"},"forceOverride":{"type":"boolean"}},"required":["attributeDefinitionId","value"],"title":"SetAttributeValueDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setattributevaluedto.schema.mdx b/docs/api-reference/reference/schemas/setattributevaluedto.schema.mdx
new file mode 100644
index 0000000000..ac929376d9
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setattributevaluedto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: setattributevaluedto
+title: "SetAttributeValueDto"
+description: ""
+sidebar_label: "SetAttributeValueDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"attributeDefinitionId":"string","value":{},"source":"MANUFACTURER","sourceOrganizationId":"string","sourceReference":"string","confidence":0,"forceOverride":true}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setcategoryattributeschemadto.Schema.json b/docs/api-reference/reference/schemas/setcategoryattributeschemadto.Schema.json
new file mode 100644
index 0000000000..42202ce270
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setcategoryattributeschemadto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"attributeDefinitionId":{"type":"string"},"requirement":{"type":"string","enum":["REQUIRED","RECOMMENDED","OPTIONAL","FORBIDDEN"]},"conditionOnAttributeDefinitionId":{"type":"string","description":"Deel 11 §32: this rule only applies when the product's value for this OTHER attribute equals conditionOnValue."},"conditionOnValue":{"type":"object","description":"Required together with conditionOnAttributeDefinitionId."}},"required":["attributeDefinitionId","requirement"],"title":"SetCategoryAttributeSchemaDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setcategoryattributeschemadto.schema.mdx b/docs/api-reference/reference/schemas/setcategoryattributeschemadto.schema.mdx
new file mode 100644
index 0000000000..7def959d33
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setcategoryattributeschemadto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: setcategoryattributeschemadto
+title: "SetCategoryAttributeSchemaDto"
+description: ""
+sidebar_label: "SetCategoryAttributeSchemaDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"attributeDefinitionId":"string","requirement":"REQUIRED","conditionOnAttributeDefinitionId":"string","conditionOnValue":{}}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setofferbuyerminimumdto.Schema.json b/docs/api-reference/reference/schemas/setofferbuyerminimumdto.Schema.json
new file mode 100644
index 0000000000..d28debfd90
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setofferbuyerminimumdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"buyerOrganizationId":{"type":"string"},"minimumQuantity":{"type":"number","description":"Overrides Offer.minimumQuantity for this buyer only. Decimal (ADR-024, Deel 17 §29)."}},"required":["buyerOrganizationId","minimumQuantity"],"title":"SetOfferBuyerMinimumDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setofferbuyerminimumdto.schema.mdx b/docs/api-reference/reference/schemas/setofferbuyerminimumdto.schema.mdx
new file mode 100644
index 0000000000..8850e685d5
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setofferbuyerminimumdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: setofferbuyerminimumdto
+title: "SetOfferBuyerMinimumDto"
+description: ""
+sidebar_label: "SetOfferBuyerMinimumDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"buyerOrganizationId":"string","minimumQuantity":0}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setproducttranslationdto.Schema.json b/docs/api-reference/reference/schemas/setproducttranslationdto.Schema.json
new file mode 100644
index 0000000000..b5118d5b57
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setproducttranslationdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}},"title":"SetProductTranslationDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/setproducttranslationdto.schema.mdx b/docs/api-reference/reference/schemas/setproducttranslationdto.schema.mdx
new file mode 100644
index 0000000000..3628029ad8
--- /dev/null
+++ b/docs/api-reference/reference/schemas/setproducttranslationdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: setproducttranslationdto
+title: "SetProductTranslationDto"
+description: ""
+sidebar_label: "SetProductTranslationDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","description":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/sharingruledto.Schema.json b/docs/api-reference/reference/schemas/sharingruledto.Schema.json
new file mode 100644
index 0000000000..368dc76a5b
--- /dev/null
+++ b/docs/api-reference/reference/schemas/sharingruledto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"attributeCode":{"type":"string","description":"Code of an AttributeDefinition visible to your organization (global or your own)."},"operator":{"type":"string","enum":["eq","neq","in","contains"]},"value":{"type":"object","description":"Value to compare against. Must be an array when operator is \"in\"."}},"required":["attributeCode","operator","value"],"title":"SharingRuleDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/sharingruledto.schema.mdx b/docs/api-reference/reference/schemas/sharingruledto.schema.mdx
new file mode 100644
index 0000000000..ca7bd8b8ed
--- /dev/null
+++ b/docs/api-reference/reference/schemas/sharingruledto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: sharingruledto
+title: "SharingRuleDto"
+description: ""
+sidebar_label: "SharingRuleDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"attributeCode":"string","operator":"eq","value":{}}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updatedocumentmetadatadto.Schema.json b/docs/api-reference/reference/schemas/updatedocumentmetadatadto.Schema.json
new file mode 100644
index 0000000000..df108911c9
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updatedocumentmetadatadto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["PRIMARY_IMAGE","GALLERY_IMAGE","TECHNICAL_DRAWING","DATASHEET","MANUAL","CERTIFICATE","DECLARATION","SAFETY_DOCUMENT","INSTALLATION_GUIDE","VIDEO","OTHER"],"default":"OTHER"},"validFrom":{"type":"string","description":"Deel 7 §52 — essential for certificates, meaningful for any document type."},"validUntil":{"type":"string"},"sortOrder":{"type":"number"},"certificateMetadata":{"type":"object","description":"Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."},"lifecycleStatus":{"type":"string","enum":["ACTIVE","SUPERSEDED","ARCHIVED"]}},"title":"UpdateDocumentMetadataDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updatedocumentmetadatadto.schema.mdx b/docs/api-reference/reference/schemas/updatedocumentmetadatadto.schema.mdx
new file mode 100644
index 0000000000..4998b545eb
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updatedocumentmetadatadto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: updatedocumentmetadatadto
+title: "UpdateDocumentMetadataDto"
+description: ""
+sidebar_label: "UpdateDocumentMetadataDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"documentType":"OTHER","validFrom":"string","validUntil":"string","sortOrder":0,"certificateMetadata":{},"lifecycleStatus":"ACTIVE"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updateordergroupstatusdto.Schema.json b/docs/api-reference/reference/schemas/updateordergroupstatusdto.Schema.json
new file mode 100644
index 0000000000..36b2f643ba
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updateordergroupstatusdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["PROCESSING","FULFILLED","PARTIALLY_FULFILLED","COMPLETED","CANCELLED"]}},"required":["status"],"title":"UpdateOrderGroupStatusDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updateordergroupstatusdto.schema.mdx b/docs/api-reference/reference/schemas/updateordergroupstatusdto.schema.mdx
new file mode 100644
index 0000000000..742099014d
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updateordergroupstatusdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: updateordergroupstatusdto
+title: "UpdateOrderGroupStatusDto"
+description: ""
+sidebar_label: "UpdateOrderGroupStatusDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"status":"PROCESSING"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updateorganizationdto.Schema.json b/docs/api-reference/reference/schemas/updateorganizationdto.Schema.json
new file mode 100644
index 0000000000..c035199a87
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updateorganizationdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string","enum":["PENDING","ACTIVE","SUSPENDED","ARCHIVED","DELETED"]}},"title":"UpdateOrganizationDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updateorganizationdto.schema.mdx b/docs/api-reference/reference/schemas/updateorganizationdto.schema.mdx
new file mode 100644
index 0000000000..f6c9f6b59e
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updateorganizationdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: updateorganizationdto
+title: "UpdateOrganizationDto"
+description: ""
+sidebar_label: "UpdateOrganizationDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","status":"PENDING"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updateproductdto.Schema.json b/docs/api-reference/reference/schemas/updateproductdto.Schema.json
new file mode 100644
index 0000000000..a14a146a75
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updateproductdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"categoryId":{"type":"string"},"status":{"type":"string","enum":["DRAFT","ACTIVE","PUBLISHED","RECALLED","DISCONTINUED","ARCHIVED"]},"publicationState":{"type":"string","enum":["PRIVATE","PARTNER_ONLY","PUBLIC","SCHEDULED"],"description":"Audience dimension, independent of `status` (ADR-024, Deel 7 §68-69). Not yet wired into any cross-org visibility check — see ADR-024 consequences."},"gtin":{"type":"string","description":"GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."},"expectedVersion":{"type":"number","description":"Optimistic concurrency (ADR-024, Deel 22 §110-111). Optional — omit for the previous last-write-wins behavior; supply the version you last read to get a real 409 VERSION_CONFLICT if someone else updated the product first."}},"title":"UpdateProductDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/updateproductdto.schema.mdx b/docs/api-reference/reference/schemas/updateproductdto.schema.mdx
new file mode 100644
index 0000000000..5c7ccffec6
--- /dev/null
+++ b/docs/api-reference/reference/schemas/updateproductdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: updateproductdto
+title: "UpdateProductDto"
+description: ""
+sidebar_label: "UpdateProductDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"name":"string","description":"string","categoryId":"string","status":"DRAFT","publicationState":"PRIVATE","gtin":"string","expectedVersion":0}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/uploaddocumentdto.Schema.json b/docs/api-reference/reference/schemas/uploaddocumentdto.Schema.json
new file mode 100644
index 0000000000..ae3833ffda
--- /dev/null
+++ b/docs/api-reference/reference/schemas/uploaddocumentdto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["PRIMARY_IMAGE","GALLERY_IMAGE","TECHNICAL_DRAWING","DATASHEET","MANUAL","CERTIFICATE","DECLARATION","SAFETY_DOCUMENT","INSTALLATION_GUIDE","VIDEO","OTHER"],"default":"OTHER"},"validFrom":{"type":"string","description":"Deel 7 §52 — essential for certificates, meaningful for any document type."},"validUntil":{"type":"string"},"sortOrder":{"type":"number"},"certificateMetadata":{"type":"object","description":"Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."},"name":{"type":"string"},"filename":{"type":"string","description":"Original filename — used only to derive a file extension; never used as the on-disk name."},"mimeType":{"type":"string"},"contentBase64":{"type":"string","description":"File content, base64-encoded."},"productId":{"type":"string"},"visibility":{"type":"string","enum":["PUBLIC","RESTRICTED","PRIVATE"],"default":"PRIVATE"}},"required":["name","filename","mimeType","contentBase64"],"title":"UploadDocumentDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/uploaddocumentdto.schema.mdx b/docs/api-reference/reference/schemas/uploaddocumentdto.schema.mdx
new file mode 100644
index 0000000000..3e1146d198
--- /dev/null
+++ b/docs/api-reference/reference/schemas/uploaddocumentdto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: uploaddocumentdto
+title: "UploadDocumentDto"
+description: ""
+sidebar_label: "UploadDocumentDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"documentType":"OTHER","validFrom":"string","validUntil":"string","sortOrder":0,"certificateMetadata":{},"name":"string","filename":"string","mimeType":"string","contentBase64":"string","productId":"string","visibility":"PRIVATE"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/upsertinventorydto.Schema.json b/docs/api-reference/reference/schemas/upsertinventorydto.Schema.json
new file mode 100644
index 0000000000..c2418477ec
--- /dev/null
+++ b/docs/api-reference/reference/schemas/upsertinventorydto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"locationId":{"type":"string"},"onHand":{"type":"number","default":0},"reserved":{"type":"number","default":0},"allocated":{"type":"number","default":0},"quarantined":{"type":"number","default":0},"damaged":{"type":"number","default":0},"inTransit":{"type":"number","default":0},"unit":{"type":"string","default":"EA"},"lowStockThreshold":{"type":"number"},"manualOverride":{"type":"string","enum":["PRE_ORDER","BACKORDER","DISCONTINUED"]},"visibility":{"type":"string","enum":["PUBLIC","PARTNER_ONLY","PRIVATE"],"default":"PRIVATE"},"quantityDisplayMode":{"type":"string","enum":["EXACT","RANGE","BOOLEAN","HIDDEN"],"default":"EXACT"}},"required":["locationId"],"title":"UpsertInventoryDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/upsertinventorydto.schema.mdx b/docs/api-reference/reference/schemas/upsertinventorydto.schema.mdx
new file mode 100644
index 0000000000..0d5f5d29a0
--- /dev/null
+++ b/docs/api-reference/reference/schemas/upsertinventorydto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: upsertinventorydto
+title: "UpsertInventoryDto"
+description: ""
+sidebar_label: "UpsertInventoryDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"locationId":"string","onHand":0,"reserved":0,"allocated":0,"quarantined":0,"damaged":0,"inTransit":0,"unit":"EA","lowStockThreshold":0,"manualOverride":"PRE_ORDER","visibility":"PRIVATE","quantityDisplayMode":"EXACT"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/validatecodedto.Schema.json b/docs/api-reference/reference/schemas/validatecodedto.Schema.json
new file mode 100644
index 0000000000..aa21c8b903
--- /dev/null
+++ b/docs/api-reference/reference/schemas/validatecodedto.Schema.json
@@ -0,0 +1 @@
+{"schema":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"title":"ValidateCodeDto"},"schemaType":"response"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/schemas/validatecodedto.schema.mdx b/docs/api-reference/reference/schemas/validatecodedto.schema.mdx
new file mode 100644
index 0000000000..5d7d5f2af4
--- /dev/null
+++ b/docs/api-reference/reference/schemas/validatecodedto.schema.mdx
@@ -0,0 +1,32 @@
+---
+id: validatecodedto
+title: "ValidateCodeDto"
+description: ""
+sidebar_label: "ValidateCodeDto"
+hide_title: true
+hide_table_of_contents: true
+schema: true
+sample: {"code":"string"}
+custom_edit_url: null
+---
+
+import Schema from "@theme/Schema";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-related.ParamsDetails.json b/docs/api-reference/reference/search-controller-related.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-related.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-related.RequestSchema.json b/docs/api-reference/reference/search-controller-related.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-related.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-related.StatusCodes.json b/docs/api-reference/reference/search-controller-related.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-related.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-related.api.mdx b/docs/api-reference/reference/search-controller-related.api.mdx
new file mode 100644
index 0000000000..f6346f9c4a
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-related.api.mdx
@@ -0,0 +1,69 @@
+---
+id: search-controller-related
+title: "SearchController_related"
+description: "SearchController_related"
+sidebar_label: "SearchController_related"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1OJDcQx1+l5BNIni+YJEvfJgOJiLSCMCw5IIQ8dvW0d7vtxq5mIaN+nrxHniwqd+8MyyS74T4njN1V/lfVz4XNWvgagyLr3bkRmVigCrqYe0fBlyWG+4ClIjRCiloFVSFhiCK7XQunKhSZsLwU8KGxAY3IKDQohXUiE7WiQkgRdYGVEtla0HPNFpGCdSvRtndsGGvvIkZen47H/MNg1MHWLElk4kaV1iR9kCtbopHgA1CBwJtiJHi0niVGULBsonUYI4SmxKGQQntH6IjdqrourU6eRh8j+17vavPLj6iJgw2cF7KdMgzBh+9/pr3B3UClwCdV1SVP/Tw7vb86+/3D2eJayFeRLkgtS4RK6cI6HARUJk2kzYF9D0UrRYUxqtV39tnJGuQ+gHfIyat8QMgtliYmj30iuf7f8mkm06Pl1OjBUT4+Gkzf/TgeLH84Phmc5NP86Kd8Ohkv3+0ENfehIygCFTb2wXy2VEDE8IhhEK1BKP2KtbQvUbrt8rmN+KXSOynIUtJ1xi5PkZQtT8nvOOlq9/r7qx68zoJtpuPJLn3vbYzWrSRUqsx9qHr88Klm96ADGnRkVRn3tO1pexNtx7u0zRoqGCfNHVfCsiGoOgA3DS9hV2NI897BgQ9gKULA6JugEaL2NUqYnV4NxkfHh3ss91i+CcvpLpbX2z+2aLakGY8RnCfAJxsp9UXbTTzaaLlo5BO3WvFNYk/insQ3kXjyTRJBe5eXVlPs5CcIuVNGUoRwgMPVEBSYpsMMoXH2oUF4VGWD+7a4h/H/w9hKQWrFrx4R0/OILSLqJlh6Tm+hJaqAQWS3d/yoeVW6/35RVUiF51fXChMw/GDKxEjVdvQ4GXV7jergTaMpjtbWtKOtcZciVvVCzYKh7YD7oqknmaPrp2Q/+MWHSpHIxG9/XHPtfaztPcwuz+ETPgv5pdwFUZ0yZ13uEwZ9si4Wl+dwWSrimzHb7VQ4fXFwUaODBSlnVDBw2cUD5+nmnPfH7hA0k1f33obw/uayu8vwbYeN+FTB3LtIlppE799/TY+z3g89S7gIK+Xsn8lflMC3KdlvhwHm3mCUkCT1415KlHCjglWOR3NFuPLB8vqMKNhlQzyelyrGjVwJp143FSaTWWMscUfhenSBj4eT4bjvMUpzj+EE1j5SpVJ36V/PHRywpQO2Bf4qlZvDR/hEo7pU1vHxbELJax05t0LVlmVMEh6J1NSGUpBCiqx/rHc73ElR+Ehst14vVcQPoWxbnn5oMDx3YD1yYpZc7tu1MDby2IgsV2XEHYmbjioOrvpTdghbkL6W3k8qx6ilriwyIaRg9tK/Fdq7VooClUkna90vzLTGml6Y7PRuPoKbk/XrGTdT1XB+Njl8dQ6S93+Vs153X1z7T+jadqOO+HcW2Lb/AAFv5/E=
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+SearchController_related
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-resolve.ParamsDetails.json b/docs/api-reference/reference/search-controller-resolve.ParamsDetails.json
new file mode 100644
index 0000000000..4002096c30
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-resolve.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"code","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-resolve.RequestSchema.json b/docs/api-reference/reference/search-controller-resolve.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-resolve.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-resolve.StatusCodes.json b/docs/api-reference/reference/search-controller-resolve.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-resolve.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-resolve.api.mdx b/docs/api-reference/reference/search-controller-resolve.api.mdx
new file mode 100644
index 0000000000..73ceef1102
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-resolve.api.mdx
@@ -0,0 +1,69 @@
+---
+id: search-controller-resolve
+title: "SearchController_resolve"
+description: "SearchController_resolve"
+sidebar_label: "SearchController_resolve"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1OJDcQx1+l5BNIni+YJEvfJgOJiLRawrDkgBDyuKunveu2G7t6FjLq58l75MmicjcDyyS74T4nGn+U/676VeFiI3yNQZHx7jwXmVigCrqce0fBW4vhLmD0do1CiloFVSFhiCK72QinKhSZ0D7nyYD3jQmYi4xCg1IYJzJRKyqFFFGXWCmRbQQ91rwnUjBuJdr2ljfG2ruIkeen4zH/yDHqYGoWJTJxrazJk0IolLGYS/ABqETgQzESrI23ijCCgmUTjcMYITQWh0IK7R2hIzar6toanSyNPkW2vdnV5pefUBNfN7BnyHTKMAQfvr8seWPnolLgg6pqy0M/z07vLs9+/3i2uBLy1U0XpJYWoVK6NA4HAVWeBtLhwLaHopWiwhjV6jvn7HgNCh/AO2TnVT4gFAZtHpPF3pFMwLds5pPp0XKa68FRMT4aTN/9OB4sfzg+GZwU0+Lop2I6GS/f7Vxq7kPALjxUmthf5ouhEiKGNYZBNDmC9SvW0r5E6eaJrqcbv1R6KwUZSrrO2OQpkjL2lPyOkS52r9df9uB1O3jPdDzZpe+9idG4lYRK2cKHqscPH2o2Dzpgjo6MsnFP2562N9F2vEvbrKGScdKKGLRlQ1B1AG4LXsKuxpDGvYMDH8BQBC7UTdAIUfsaJcxOLwfjo+PDPZZ7LN+E5XQXy6vnP7aYP5OWe4zgPAE+mEipLppuYG2i4aCRT9xqxW+JPYl7Et9E4sk3SQTtXWGNptjJTxBypYykCOEAh6shKMibDjOExpn7BmGtbIP7sriH8f/D2EpBasV9j4ipQeIdEXUTDD2mbmiJKmAQ2c0tNzWvQvffPVWFVHruu1aYgOGGKRMjVZvRejLqzhr1y0cbvnHLDVXyDct5IWPBtHakPYnpEeZr9UOy//jFh0qRyMRvf1xx0H2szR3MLs7hMz4K+RTnkqhOLjOu8Cn+vZc+LC7O4cIq4icx79sJbVpx8KFGBwtSLlchh4vg80YTnKcnc9Hn2yFoRq7urQ3h/fVF94jhZw5v4nSCuXeRDDUJ27//mh5nvR16lPAhrJQzfyZ7UQI/o2R/HAaY+xyjhCSp/+6lRAnXKhjl+GuuCFc+GJ6fEQWzbIi/51bFuJUr4dTrpsK0ZdbkhriUcDy6i4+Hk+G4Ly5Kc3FhB9Y+UqVSWekb544KeMYCnrH4ypXbrCN8oFFtlXGcl02wPNchcyNUbVjGJOGREE29dW8wS8lyK0XpI/HyzWapIn4Mtm15+L7B8NjxtGZ/LDnKNxuRm8jfucgKZSPuKNtWUHFw2WfVITzz87XiflA5JixVYZEJIQUj1/8job1tpShR5SmXNv3UTGus6cWmnWrNSbfNpV/PuHyqhh2zdd6rBEjW/1XQZtOtuPKf0bXtVh/x7yywbf8B8SrkPQ==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+SearchController_resolve
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-search-products.ParamsDetails.json b/docs/api-reference/reference/search-controller-search-products.ParamsDetails.json
new file mode 100644
index 0000000000..d3829d7e49
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-search-products.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"pageSize","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}},{"name":"sortBy","required":false,"in":"query","description":"Field to sort by","schema":{"type":"string"}},{"name":"sortDir","required":false,"in":"query","schema":{"default":"asc","enum":["asc","desc"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Free-text search over product name + description","schema":{"type":"string"}},{"name":"categoryId","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"enum":["DRAFT","ACTIVE","DISCONTINUED","ARCHIVED"],"type":"string"}},{"name":"scope","required":false,"in":"query","description":"own (default): only the caller's own organization's products. network: also includes products from organizations that granted the caller an active PRODUCT_DATA sharing grant scoped ALL_PRODUCTS or PRODUCT_CATEGORY (ADR-012 follow-up). Individual PRODUCT-targeted grants are NOT included here — see SearchService.searchProducts.","schema":{"default":"own","enum":["own","network"],"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-search-products.RequestSchema.json b/docs/api-reference/reference/search-controller-search-products.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-search-products.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-search-products.StatusCodes.json b/docs/api-reference/reference/search-controller-search-products.StatusCodes.json
new file mode 100644
index 0000000000..bc8bee351e
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-search-products.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/search-controller-search-products.api.mdx b/docs/api-reference/reference/search-controller-search-products.api.mdx
new file mode 100644
index 0000000000..5f7828e6f1
--- /dev/null
+++ b/docs/api-reference/reference/search-controller-search-products.api.mdx
@@ -0,0 +1,69 @@
+---
+id: search-controller-search-products
+title: "SearchController_searchProducts"
+description: "SearchController_searchProducts"
+sidebar_label: "SearchController_searchProducts"
+hide_title: true
+hide_table_of_contents: true
+api: eJztWF1uGzcQvsqAL7XRlSzZapvoTZGUVEUSu5bsojAMg1rOaplwyTXJle0IAnqI3qH36FF6kmK4qx9bqWwFfdQblzv/882QnBkzOVrupdEDwdpsiNzGaddob41SaG9c2DizRhSxdyxiObc8Q4/WsfbVjGmeIWuznE+QRczibSEtCtZOuHIYMalZm90WaB9YxFycYsZZe8YyqWVWZKzdjJjAhBfKh7V/yEmaLrIxWjafR48UDOWXb1WS8ftq3WisqTxubNPpjPVvHp7VKNDFVuYUQ9ZmbyUqAd4AccP4sUmVLuet1JMNXT1pd3Bv6QTjLmYRQ03+XVVfZBS7jrZovN3VMYtY83jvocQEmClayEtkAAmF72Gd5WWOx9zjxNiHgdjB9y1x9NwXbgdRi7D1zjtvRyxine5ocNlnEesNht3Tj6PBx4t+j/bPuz8PLvu97UF1scmfx+jjwJo7DQdVNg/bYLR6AJ8ixJwq8DsHRGDshGv5JVTqd24RdlcHjf7O2M9t4MoZkDpWhcAVASTWZI+4HfiUe5hYrj2KNU3ANfDYyynC2flp76I7uul1Rh1wKSc/Sw4IHgrovH9/U1ENwdglR7cz6r87Pf8dDjq981qjeQyJUcrc1Yr8sA4DLeRUioKrBUPNcztBMiSId8AtwsfT0cITASlahH/++BMcIpT9aYh2KmOsP25O9f8oD3On18qj/Kqi9rVkXlP2XG60Q0eCWo1GKW89Z5dcSRHCCQmXCkVEQaBYUubReZhKo7hHBxzGhZManQNbKCQrY6M9ak9ieZ4rGQdJR58cyZ5t4tyMP2HsqflaatdelpahtcY+TxYbgZtFEzG851muaOtNp3dz3v/1oj8cbaBz6PlYIWQ8TqXGmkUuwkZQDiS7zuYRy9A5OgO26tmIGiTGgtFIwcuMRUioe7ogsQokHUvbZIpm63jcEnHtOGkc11qvfmzUxj+cvK69TlrJ8U9Jq9kYv9pwqmusxTI9PpWucuZO+hQc2inampMCQZkJ2TJfr+erMp4rj9ctJThJH+zqk8geei5Vz5sNIWXuntKfV8ArOYin1Whuou+DdE7qSQQZV4mxWQU/vM9JPMQWBWovuXJ7tO3RthPaTjbR1il8SnCik1pEMC48ZCUAlw0vwC5HG/aNhgNjQXoHFp0pbIzlqRFBOBOOTw73sNzDcidYtjZhOVodtihWSBMGHWjjAe+l86EvynJjKp2kpHmzdunZI3GPxJ2Q+HorEiE2OlGSLt7B/ABC6pT0LkE4wPqkDhxEUcIModDytkCYclXgvi3uwfhyMM4j5vmEpjCsfAcRh8O4sNI/hNnMGLlFy9pX1/SoeZK6Zwc9GfrU0ExoggE33KeszY54Lo+mzaOS/Chf0ZfBIXvW7BgSXEuoLaypMEx+VVtRtXhrbMbpxfbLbyPKunG5vIHO2QA+Iz2bq0Sn3uchZlInJgCgCtPp8GwAZ4p7uhMT30ZuA8XBaY4ahp5rwa2AymUYhDtzUhXcIcSEubySVocPl2flLYbuOcRE9QRdo52Xvgi4/fuv1km7kuMfIjhdf3VHQPeoqFKHFrpGoIsgmFStF9GP4JJbSc/hCLrlfETS/473Vo4LT+uu4s4tzY2gZ+Iiw8DSKYT01EsoH6XjjXqz3qi6C4+pu1AAc+N8xkNfqeYXJSxghYvFsGcNGI9Cuiw/mgwd5YpLTQVaWEX/StBcMZ5LMqcZYBKwGhpRKfE6YqlxnuhmszF3eGHVfE7b5byEoCyko86ymqcQIpZjx9A9WZsxmsRsIa0GiNvJn7i37Mdfm+x91fdS33J4+BLjVtO/b7Vt9+HcFttvX2j2o9ndi/xcTOe+0c39qOz/G5Vtw241xVxl6Zo+rKQ0hfMkYilyEQ6XWcXUiWPM/RrXxvWFpCxPlXd9uk/wghrEsok8ORCC9OoX1+vFNJuVFCPzGfV8zhaWe/pm8+v5fP4vhiN/aA==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+SearchController_searchProducts
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-create.ParamsDetails.json b/docs/api-reference/reference/sharing-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-create.RequestSchema.json b/docs/api-reference/reference/sharing-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..373a5ef65e
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"connectionId":{"type":"string","description":"Must be an ACTIVE Connection the caller's organization is part of"},"targetType":{"type":"string","enum":["PRODUCT","PRODUCT_CATEGORY","ALL_PRODUCTS"]},"targetId":{"type":"string","description":"productId or categoryId, depending on targetType. Omit for ALL_PRODUCTS."},"dataCategories":{"type":"array","items":{"type":"string","enum":["PRODUCT_DATA","CONTENT","DPP","INVENTORY","ORDERING"]}},"expiresAt":{"type":"string"},"ruleFilter":{"description":"Rule-based/dynamic scoping (ADR-022), e.g. [{ attributeCode: \"region\", operator: \"eq\", value: \"EU\" }]. ANDed with each other and with targetType — a product must also match every rule to be in scope. Omit for no extra filtering.","type":"array","items":{"type":"object","properties":{"attributeCode":{"type":"string","description":"Code of an AttributeDefinition visible to your organization (global or your own)."},"operator":{"type":"string","enum":["eq","neq","in","contains"]},"value":{"type":"object","description":"Value to compare against. Must be an array when operator is \"in\"."}},"required":["attributeCode","operator","value"],"title":"SharingRuleDto"}}},"required":["connectionId","targetType","dataCategories"],"title":"CreateSharingGrantDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-create.StatusCodes.json b/docs/api-reference/reference/sharing-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-create.api.mdx b/docs/api-reference/reference/sharing-controller-create.api.mdx
new file mode 100644
index 0000000000..2f1b49b520
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: sharing-controller-create
+title: "SharingController_create"
+description: "SharingController_create"
+sidebar_label: "SharingController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmO9uIjkSwF+l5C87IxlCMuzeDt9YYEacdgJLmJxOBEWmuwDPdtsduzoJh1rah9h3uPe4R9knWZW7oSFk/kn3MV9Q47bL9edX1XZthc3QKdLWDGPREVdr5bRZ9awhZ5ME3W3kUBEKKTLlVIqEzovObC6Fw7scPf1i443obMNf7TAWHXI5ShFZQ2iIX6ksS3QUNjn75K3hMR+tMVX8RJsMRUfYxSeMiPdxrBJp9Pw2ssZgtNNvP9sTqymkiNFHTmc8QXTEh9wTLBCUgW5vOrweQG+/HmiNECk26gcP1q2U0f8JSoH2kClHYJeikIKUWyFNw0anG6LJU9GZifFk1P/Ymwq5e7rtdaeD96PJv4UU3V9/va2Gr8R8L/NbTMicjfOIhjFYB5EiXFm3GcYSYszQxNqsgG3Z69iEUaoJltbB4a5NtiRWpHqliMqd1d7KObURUmjC1H+Dlbf97rQrpOiNLqeDSza6Px4LKYaX14PLaWnzaNIfTIaX78W8KKTAx0w79F06lV5I4fIE3+mE0PHrYwdM8gQbC+UxPos3RqU6Ah/ZjA1/1e1PGq2Li9cSsLlqwmwLisjpRU7YszF24EY4XGlrboSEkmzreBTveOReJXmYNPh4I6CYN6F72ccYHjStAVW0BktrdKBMNVa7Gf76409QUEUHUgZNJd5CqihaA96j2wCbBWSZQG2C1ofhMRbwkZyCZbBcm1VTyK9F5DNpcWT216HiWWCXIS92K/u41EYH/u+114tS9Y3N3XFyvFoldqESxrF8+WBeB7p2/v0SP3gnpDDhVxtRVgWljQ9JEcLxnK3Hyl/zNNYtsmmmHIJasQhqwkG6B//BwxrNPu6c1jdCmxvRFIxkXaFmT/x3YMtOq7kUpCnBuiYyl32yongq66hEHZWPkww8kNoLdbWS/d4pQ5XwIN1n1vgy1Bet89MkYf+3W63TF9cq0XEZuKXSCcaSA8elr6rXcK9togg9KFjkXhv0PoDbFP+3oo3OHWHx2dr+PLv4qNIsOOmXbv92Mvjt4+BqeoLFFSlmNlXRWhtsOFRxGAibA8sOlKbovVp9ZZ8Tr4WEtQbZeal1CEuNSeyDxMqRzxfzWmZ83r5YtOOocbFsXTTaP//Uaix+fPO28XbZXl78Y9k+by1+fiZRncMyPLTWvjIm1CKP7h5dw+sYIbErfwp1VLK8s/hQ0wPwBiyyj6R0UhJ3LKSM3dP5k4rImtH2c1h+0N5rs5KQqmRpXVrhV34MYogcxmhIq8S/0PZC23fR9uaUtm5Oa8aJT0mxhEVOkJYA7gtewC5DF8b5Y8afBfLg0NvcRVh+pCWUB4s3r1+wfMHyu7Bsn2I5rT+2GNekxRY9GEuAj9pTqIu6HDg4ftV3lBcSX0j8LhLffpFEiKxZJjoiX912GEKulJ4UIbwK9ykFcV5ihpAbfZdjeWV6KYsvMH47jKHdseIukfDl9YaXeIxyp2kjOrOtWKByfPefzYv5Sew+34JKkdaW21SZ9QEZRWvREWcq02f352fVbo0V36a84D3ZLVW/aqfAFYNaQrZTo6KXLaqGZPXwzrpUkeiIf/5ryvG2PtO30B0P4Xfc1Lf3NVEWvMXZMKkbY4NdxJ82smooDrtNB02lumF0cKd/0s550p6ZH3Vd6mWHzZbZSeugnlff58tr++56XhR8WddmaQPUVehHV+MhjBNFfM5nj5zwGma8GmVo4IqUiZWLYVz1T4bhHrCsishriDiPskpaEz5cj8uTGZ/deBHXCO7ledKUh1z833/bbzqVHNpIGB30LLwEPhvKajt0wLZ6CUGl6rlSxUu4Vk4zMRJq78q6UcLjifJ+r66Evo3yFMOSbh5r4vrIpJWGt5rnzdau2RFRcKEMzKYq1Eqj0oPGAtSowx71I1fuSwnhI51lidKGi03uEn5XZsFMqEyzGucM/nEmzKVYc8Z0ZmK75dbaR5cUBQ/f5eg2ZX7csxcWHNsZx3uNKq6IYdS5/IT636g6GxUdp9+CQu5WdKMIM/ri3PlBUo9HoZIvqoZyWuLp1AMzrB6468GQhgCHjjOPbUWizCoPVVyUMtnZKmef7P32JKuDVbvGm9kcaLjdljOm9nc0RSFkZQrxf1HMi6L4GyuA8wU=
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+SharingController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-list.ParamsDetails.json b/docs/api-reference/reference/sharing-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-list.RequestSchema.json b/docs/api-reference/reference/sharing-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-list.StatusCodes.json b/docs/api-reference/reference/sharing-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-list.api.mdx b/docs/api-reference/reference/sharing-controller-list.api.mdx
new file mode 100644
index 0000000000..9ab0d10927
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: sharing-controller-list
+title: "SharingController_list"
+description: "SharingController_list"
+sidebar_label: "SharingController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl9tu4zYQhl9lwKssQDu247Yb3blOWqTAImmcTS8MI6CkkcVdilTIkTeuoefpe/TJiqGUw8btbnPvK9M8/JzDxxG5E65Gr0g7e5GLRCxK5bVdz50l74xBf2d0ICFFrbyqkNAHkSxXUngMtbMBg0h2YjIa8U+OIfO6ZjGRCNFKMf23gVtldB63hEJpg7kE54FKBI/3DQaCjXZGEQZQkDZBWwwBfGNwKKTInCW0xLKqro3OotLxp8DaOxGyEivFLdrWKBLh0k+YRQ88u0q6Mxm9d/770zKX44tZgTg6Qgp8UFVtuOvn2dnd9fnvH88XN0K+8nRBKjUIlcpKbXHgUeWxI24OrD3kKFUYglp/Z5+9qEHhPDiLHLzKeYRCo8lDVOwDySn9lmY+nk7SaZ4NJsVoMpi+/3E0SH84OR2cFtNi8lMxHY/S93tOzZ332KWHSh16Z75oKiGg36AfBJ0jGLdmW3pjtMdcJMsuns8ev7R0JQVpinads+QZktLmjNyeSJe71/OveyK7FW2kb7xP3wcdgrZrCZUyhfNVjx8+1CwPmcccLWllwoG2A21vou1kn7ZZQyXjlCli0NKGoOoAfCp4Ebsafex3Fo6cB00BPAbX+AwhZK5GCbOz68FocvLugOUByzdhOd3H8ub5Y4v5M2m5wwDWEeCDDhTrou46NjpoThq5yG2m+G5wIPFA4ptIPP0miZA5WxidUejMjxBypQykCOEIh+shKMibDjOExur7BmGjTIOHsniA8f/D2EpBas1PGRG6Fw8vCZg1XtNWJMudSFF59PzYaVd7ufuvV1KFVDp+R62xezRRKRJxrGp9vBkf91sN1l5ZCoI35Jj0L6rH3RdMaUfYow09uuxO3yX7xi/OV4pEIn7744aT7UKt72B2dQGfcSvkY35LojqGStvCxbz30blcXF3AlVHEV2Fet5fSOOPoskYLC1I2Vz6HK+/yJiO4iFfloj9n7yBj1OpebQgfbq+6ywtfb3gRHyOYOxtIUxNx/fuv6UnS69BWwqVfK6v/jHpBAl+fZL8depi7HIOEaFLf7k0JEm6V1xxXCXNFuHZe8/iMyOu0IW7PjQrhyVwJZy5rKoxLZk2uiUsI56NzfDQcD0d9UVEZFxUOYO0CVSqWE6tiRnoY4JkG6Gn4KpBPZ43wgY5ro7Tl09h4w2MdKUuhas1GjBmOr2lZSVG6QDxpt0tVwI/etC133zfotx1DG45BypldrlopSlR5ZHgnGIdEzLIMazYt1kyR7JdJhv2J4l/PuW6phm17sv8VgVG9H1J2+0J7t+tm3LjPaNtWyN4I4v+iXbVt+w+1vKdF
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+SharingController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-revoke.ParamsDetails.json b/docs/api-reference/reference/sharing-controller-revoke.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-revoke.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-revoke.RequestSchema.json b/docs/api-reference/reference/sharing-controller-revoke.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-revoke.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-revoke.StatusCodes.json b/docs/api-reference/reference/sharing-controller-revoke.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-revoke.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/sharing-controller-revoke.api.mdx b/docs/api-reference/reference/sharing-controller-revoke.api.mdx
new file mode 100644
index 0000000000..fe257ad0dd
--- /dev/null
+++ b/docs/api-reference/reference/sharing-controller-revoke.api.mdx
@@ -0,0 +1,69 @@
+---
+id: sharing-controller-revoke
+title: "SharingController_revoke"
+description: "SharingController_revoke"
+sidebar_label: "SharingController_revoke"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtu4zYQhl9lwKsEoI9x243uXNsFUnSRNM6mF0EQ0OLI4kYiFXLkJjX0PH2PPlkxlNY5eLvb3PsqCg/DnzPfTDjZClehV2ScPdMiEctceWPXM2fJu6JAf+dx4+5RSFEpr0ok9EEkN1thVYkiEUYLKTw+1MajFgn5GqUwViSiUpQLKUKaY6lEshX0VPGOQHyCaJpb3hgqZwMGnh8Ph/xDY0i9qViSSIRopJh8beJaFUZH4ZApU6CW4DxQjsBqMBBsjCsUYQAFqzoYiyGArwvsCylSZwktsVlVVYVJo6XB58C2t/ui3eozpsRe8OwwMq1k9N757y9LncZ9D0iBj6qsCh76eTq/u1z8/mmxvBLyzU2XpFYFQqnS3FjseVQ6DsTDgW332UslhqDW3zlnz2uQOQ/OIjuvdB4hM1joEC12jmQwvmVTjybj1USnvXE2HPcmH34c9lY/nJz2TrNJNv4pm4yGqw97l5o577END+UmdJf501AOAf0GfS8YjVC4NWtpXjJ20/rz+cYvld5KQYairgWbnCMpU8zJ7RlpY/d2/WVHZLujifSN9un7aEIwdi2hVEXmfNnhh48Vm4fUo0ZLRhXhQNuBtnfRdrJP27SmnHFKFTFoq5qgbAHcFbyIXYU+jjsLR86DoQAeg6t9ihBSV6GE6fyyNxyfHB+wPGD5Liwn+1hePf+xRf1MmnYYwDoCfDSBYl007cDGBMNBIxe5TRW/MA4kHkh8F4mn3yQRUmezwqQUWvkRQq6UgRQhHGF/3QcFum4xQ6iteagRNqqo8VAWDzD+fxgbKUituR0Soe2beEvAtPaGnmKXtELl0Yvk5pbbnTex++9eq0TKHfdjGguktvuiXCRioCoz2IwG3Xm9tVeWwmBrdMO9VvQOC3qhY8m8tqx9UdNBzBfrhmT38YvzpSKRiF//uOKwu1CZO5henME9Pgn5JdI5URWdZmzmIgGdn86XF2dwUSjiRzHv2wtuXHF0XqGFJSmrlddw4Z2uU4Kz+GjOuow7hpShqzprffh4fdE+Y/ihw5s4oWDmbCBDdQT3n78nJ0lnh54knPu1suavaC9I4IeU7I5DDzOnMUiIkrrvTkqQcK28YedKmCnCtfOG56dE3qxq4u9ZoULYyZUwd2ldYtwyrbUhLiYcj/biw/6oP+zKi0q5vLADKxeoVLGwdB11hwU8cwE7Ll65cpd3hI80qAplLGdm7Quea4G5EaoyLGPEeLyCRkiRmJgUuQvES7fblQr4yRdNw8MPNfqnlqUN+2LFEb7ZCm0Cf2uRZKoIuKdqVz/F0WWXU8fwzM5rtd2gskxXrMHc9EvBuMX/LjS3jRQ5Kh3TaNtNTNMUK3qxZa9Sc77t0mi++G1xtRBSqJq9svPcG/rjAV9VtN22K67cPdqm2Qkk/p01Ns2/I6Tq5g==
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+SharingController_revoke
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/sidebar.ts b/docs/api-reference/reference/sidebar.ts
new file mode 100644
index 0000000000..3ee1353414
--- /dev/null
+++ b/docs/api-reference/reference/sidebar.ts
@@ -0,0 +1,1176 @@
+import type { SidebarsConfig } from "@docusaurus/plugin-content-docs";
+
+const sidebar: SidebarsConfig = {
+ apisidebar: [
+ {
+ type: "doc",
+ id: "reference/ospi-platform-api",
+ },
+ {
+ type: "category",
+ label: "health",
+ items: [
+ {
+ type: "doc",
+ id: "reference/health-controller-check",
+ label: "HealthController_check",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "auth",
+ items: [
+ {
+ type: "doc",
+ id: "reference/auth-controller-register",
+ label: "AuthController_register",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/auth-controller-login",
+ label: "AuthController_login",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/auth-controller-refresh",
+ label: "AuthController_refresh",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/auth-controller-logout",
+ label: "AuthController_logout",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/auth-controller-logout-all",
+ label: "AuthController_logoutAll",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/auth-controller-list-sessions",
+ label: "AuthController_listSessions",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/auth-controller-revoke-session",
+ label: "AuthController_revokeSession",
+ className: "api-method delete",
+ },
+ {
+ type: "doc",
+ id: "reference/auth-controller-create-api-client",
+ label: "AuthController_createApiClient",
+ className: "api-method post",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "roles",
+ items: [
+ {
+ type: "doc",
+ id: "reference/roles-controller-list-permissions",
+ label: "RolesController_listPermissions",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/roles-controller-create",
+ label: "RolesController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/roles-controller-list",
+ label: "RolesController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/roles-controller-list-for-user",
+ label: "RolesController_listForUser",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/roles-controller-assign",
+ label: "RolesController_assign",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/roles-controller-revoke",
+ label: "RolesController_revoke",
+ className: "api-method delete",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "organizations",
+ items: [
+ {
+ type: "doc",
+ id: "reference/organizations-controller-get-own",
+ label: "OrganizationsController_getOwn",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/organizations-controller-update",
+ label: "OrganizationsController_update",
+ className: "api-method patch",
+ },
+ {
+ type: "doc",
+ id: "reference/organizations-controller-list-legal-entities",
+ label: "OrganizationsController_listLegalEntities",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/organizations-controller-add-legal-entity",
+ label: "OrganizationsController_addLegalEntity",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/organizations-controller-list-users",
+ label: "OrganizationsController_listUsers",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/organizations-controller-invite-user",
+ label: "OrganizationsController_inviteUser",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/organizations-controller-list-roles",
+ label: "OrganizationsController_listRoles",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "identity",
+ items: [
+ {
+ type: "doc",
+ id: "reference/identity-controller-create-producer",
+ label: "IdentityController_createProducer",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-list-producers",
+ label: "IdentityController_listProducers",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-issue-producer-code",
+ label: "IdentityController_issueProducerCode",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-issue-ospi-identity",
+ label: "IdentityController_issueOspiIdentity",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-validate",
+ label: "IdentityController_validate",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-lookup",
+ label: "IdentityController_lookup",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-retire",
+ label: "IdentityController_retire",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-suspend",
+ label: "IdentityController_suspend",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/identity-controller-reactivate",
+ label: "IdentityController_reactivate",
+ className: "api-method post",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "products",
+ items: [
+ {
+ type: "doc",
+ id: "reference/products-controller-create",
+ label: "ProductsController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-list",
+ label: "ProductsController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-create-bulk",
+ label: "ProductsController_createBulk",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-find-one",
+ label: "ProductsController_findOne",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-update",
+ label: "ProductsController_update",
+ className: "api-method patch",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-validate",
+ label: "ProductsController_validate",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-publish",
+ label: "ProductsController_publish",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-unpublish",
+ label: "ProductsController_unpublish",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-retire",
+ label: "ProductsController_retire",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-recall",
+ label: "ProductsController_recall",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-add-variant",
+ label: "ProductsController_addVariant",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-list-variants",
+ label: "ProductsController_listVariants",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-register-serialized-unit",
+ label: "ProductsController_registerSerializedUnit",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-list-serialized-units",
+ label: "ProductsController_listSerializedUnits",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-register-serialized-units-bulk",
+ label: "ProductsController_registerSerializedUnitsBulk",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-set-translation",
+ label: "ProductsController_setTranslation",
+ className: "api-method put",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-remove-translation",
+ label: "ProductsController_removeTranslation",
+ className: "api-method delete",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-list-translations",
+ label: "ProductsController_listTranslations",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-create-relationship",
+ label: "ProductsController_createRelationship",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-list-relationships",
+ label: "ProductsController_listRelationships",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/products-controller-remove-relationship",
+ label: "ProductsController_removeRelationship",
+ className: "api-method delete",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "categories",
+ items: [
+ {
+ type: "doc",
+ id: "reference/categories-controller-create",
+ label: "CategoriesController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/categories-controller-list",
+ label: "CategoriesController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/categories-controller-list-pending",
+ label: "CategoriesController_listPending",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/categories-controller-approve",
+ label: "CategoriesController_approve",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/categories-controller-reject",
+ label: "CategoriesController_reject",
+ className: "api-method post",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "classification",
+ items: [
+ {
+ type: "doc",
+ id: "reference/classification-controller-create-attribute-definition",
+ label: "ClassificationController_createAttributeDefinition",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-list-attribute-definitions",
+ label: "ClassificationController_listAttributeDefinitions",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-set-product-attribute-value",
+ label: "ClassificationController_setProductAttributeValue",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-set-variant-attribute-value",
+ label: "ClassificationController_setVariantAttributeValue",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-verify-attribute-value",
+ label: "ClassificationController_verifyAttributeValue",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-create-scheme",
+ label: "ClassificationController_createScheme",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-list-schemes",
+ label: "ClassificationController_listSchemes",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-add-node",
+ label: "ClassificationController_addNode",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-list-nodes",
+ label: "ClassificationController_listNodes",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-assign",
+ label: "ClassificationController_assign",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-set-category-attribute-schema",
+ label: "ClassificationController_setCategoryAttributeSchema",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-remove-category-attribute-schema",
+ label: "ClassificationController_removeCategoryAttributeSchema",
+ className: "api-method delete",
+ },
+ {
+ type: "doc",
+ id: "reference/classification-controller-get-effective-attribute-schema",
+ label: "ClassificationController_getEffectiveAttributeSchema",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "documents",
+ items: [
+ {
+ type: "doc",
+ id: "reference/documents-controller-create",
+ label: "DocumentsController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/documents-controller-list",
+ label: "DocumentsController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/documents-controller-upload",
+ label: "DocumentsController_upload",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/documents-controller-find-one",
+ label: "DocumentsController_findOne",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/documents-controller-update-metadata",
+ label: "DocumentsController_updateMetadata",
+ className: "api-method patch",
+ },
+ {
+ type: "doc",
+ id: "reference/documents-controller-get-download-url",
+ label: "DocumentsController_getDownloadUrl",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "locations",
+ items: [
+ {
+ type: "doc",
+ id: "reference/locations-controller-create",
+ label: "LocationsController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/locations-controller-list",
+ label: "LocationsController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/locations-controller-list-inventory",
+ label: "LocationsController_listInventory",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "inventory",
+ items: [
+ {
+ type: "doc",
+ id: "reference/inventory-controller-upsert",
+ label: "InventoryController_upsert",
+ className: "api-method put",
+ },
+ {
+ type: "doc",
+ id: "reference/inventory-controller-list",
+ label: "InventoryController_list",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "connections",
+ items: [
+ {
+ type: "doc",
+ id: "reference/connections-controller-request",
+ label: "ConnectionsController_request",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/connections-controller-list",
+ label: "ConnectionsController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/connections-controller-accept",
+ label: "ConnectionsController_accept",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/connections-controller-reject",
+ label: "ConnectionsController_reject",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/connections-controller-suspend",
+ label: "ConnectionsController_suspend",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/connections-controller-terminate",
+ label: "ConnectionsController_terminate",
+ className: "api-method post",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "sharing",
+ items: [
+ {
+ type: "doc",
+ id: "reference/sharing-controller-create",
+ label: "SharingController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/sharing-controller-list",
+ label: "SharingController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/sharing-controller-revoke",
+ label: "SharingController_revoke",
+ className: "api-method delete",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "partner",
+ items: [
+ {
+ type: "doc",
+ id: "reference/partner-controller-list-products",
+ label: "PartnerController_listProducts",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/partner-controller-get-product",
+ label: "PartnerController_getProduct",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/partner-controller-get-inventory",
+ label: "PartnerController_getInventory",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/partner-controller-list-documents",
+ label: "PartnerController_listDocuments",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "search",
+ items: [
+ {
+ type: "doc",
+ id: "reference/search-controller-search-products",
+ label: "SearchController_searchProducts",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/search-controller-related",
+ label: "SearchController_related",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/search-controller-resolve",
+ label: "SearchController_resolve",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "offers",
+ items: [
+ {
+ type: "doc",
+ id: "reference/offers-controller-create",
+ label: "OffersController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/offers-controller-list-mine",
+ label: "OffersController_listMine",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/offers-controller-list-for-product",
+ label: "OffersController_listForProduct",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/offers-controller-withdraw",
+ label: "OffersController_withdraw",
+ className: "api-method delete",
+ },
+ {
+ type: "doc",
+ id: "reference/offers-controller-set-buyer-minimum",
+ label: "OffersController_setBuyerMinimum",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/offers-controller-list-buyer-minimums",
+ label: "OffersController_listBuyerMinimums",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/offers-controller-remove-buyer-minimum",
+ label: "OffersController_removeBuyerMinimum",
+ className: "api-method delete",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "orders",
+ items: [
+ {
+ type: "doc",
+ id: "reference/orders-controller-create-draft",
+ label: "OrdersController_createDraft",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-list",
+ label: "OrdersController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-get",
+ label: "OrdersController_get",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-add-line",
+ label: "OrdersController_addLine",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-remove-line",
+ label: "OrdersController_removeLine",
+ className: "api-method delete",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-submit",
+ label: "OrdersController_submit",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-accept",
+ label: "OrdersController_accept",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-reject",
+ label: "OrdersController_reject",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/orders-controller-update-status",
+ label: "OrdersController_updateStatus",
+ className: "api-method put",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "dpp",
+ items: [
+ {
+ type: "doc",
+ id: "reference/dpp-controller-create-profile",
+ label: "DppController_createProfile",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-list-profiles",
+ label: "DppController_listProfiles",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-create-record",
+ label: "DppController_createRecord",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-validate",
+ label: "DppController_validate",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-publish",
+ label: "DppController_publish",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-suspend",
+ label: "DppController_suspend",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-rotate-token",
+ label: "DppController_rotateToken",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-get-owner",
+ label: "DppController_getOwner",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/dpp-controller-get-public",
+ label: "DppController_getPublic",
+ className: "api-method get",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "webhooks",
+ items: [
+ {
+ type: "doc",
+ id: "reference/webhooks-controller-create",
+ label: "WebhooksController_create",
+ className: "api-method post",
+ },
+ {
+ type: "doc",
+ id: "reference/webhooks-controller-list",
+ label: "WebhooksController_list",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/webhooks-controller-remove",
+ label: "WebhooksController_remove",
+ className: "api-method delete",
+ },
+ {
+ type: "doc",
+ id: "reference/webhooks-controller-deliveries",
+ label: "WebhooksController_deliveries",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "reference/webhooks-controller-retry",
+ label: "WebhooksController_retry",
+ className: "api-method post",
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "Schemas",
+ items: [
+ {
+ type: "doc",
+ id: "reference/schemas/registerdto",
+ label: "RegisterDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/errordetaildto",
+ label: "ErrorDetailDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/errorresponsedto",
+ label: "ErrorResponseDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/logindto",
+ label: "LoginDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/refreshdto",
+ label: "RefreshDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createapiclientdto",
+ label: "CreateApiClientDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createroledto",
+ label: "CreateRoleDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/assignroledto",
+ label: "AssignRoleDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/updateorganizationdto",
+ label: "UpdateOrganizationDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createlegalentitydto",
+ label: "CreateLegalEntityDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/inviteuserdto",
+ label: "InviteUserDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createproducerdto",
+ label: "CreateProducerDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/issueproducercodedto",
+ label: "IssueProducerCodeDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/issueospiidentitydto",
+ label: "IssueOspiIdentityDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/validatecodedto",
+ label: "ValidateCodeDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createproductdto",
+ label: "CreateProductDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/bulkcreateproductdto",
+ label: "BulkCreateProductDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/updateproductdto",
+ label: "UpdateProductDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createvariantdto",
+ label: "CreateVariantDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/registerserializedunitdto",
+ label: "RegisterSerializedUnitDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/bulkregisterserializedunitdto",
+ label: "BulkRegisterSerializedUnitDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/setproducttranslationdto",
+ label: "SetProductTranslationDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createproductrelationshipdto",
+ label: "CreateProductRelationshipDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createcategorydto",
+ label: "CreateCategoryDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/rejectcategorydto",
+ label: "RejectCategoryDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createattributedefinitiondto",
+ label: "CreateAttributeDefinitionDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/setattributevaluedto",
+ label: "SetAttributeValueDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createclassificationschemedto",
+ label: "CreateClassificationSchemeDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createclassificationnodedto",
+ label: "CreateClassificationNodeDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/assignclassificationdto",
+ label: "AssignClassificationDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/setcategoryattributeschemadto",
+ label: "SetCategoryAttributeSchemaDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createdocumentdto",
+ label: "CreateDocumentDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/uploaddocumentdto",
+ label: "UploadDocumentDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/updatedocumentmetadatadto",
+ label: "UpdateDocumentMetadataDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createlocationdto",
+ label: "CreateLocationDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/upsertinventorydto",
+ label: "UpsertInventoryDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/requestconnectiondto",
+ label: "RequestConnectionDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/sharingruledto",
+ label: "SharingRuleDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createsharinggrantdto",
+ label: "CreateSharingGrantDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createofferdto",
+ label: "CreateOfferDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/setofferbuyerminimumdto",
+ label: "SetOfferBuyerMinimumDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createdraftorderdto",
+ label: "CreateDraftOrderDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/addorderlinedto",
+ label: "AddOrderLineDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/updateordergroupstatusdto",
+ label: "UpdateOrderGroupStatusDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createdppprofiledto",
+ label: "CreateDppProfileDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createdpprecorddto",
+ label: "CreateDppRecordDto",
+ className: "schema",
+ },
+ {
+ type: "doc",
+ id: "reference/schemas/createwebhooksubscriptiondto",
+ label: "CreateWebhookSubscriptionDto",
+ className: "schema",
+ },
+ ],
+ },
+ ],
+};
+
+export default sidebar.apisidebar;
diff --git a/docs/api-reference/reference/webhooks-controller-create.ParamsDetails.json b/docs/api-reference/reference/webhooks-controller-create.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-create.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-create.RequestSchema.json b/docs/api-reference/reference/webhooks-controller-create.RequestSchema.json
new file mode 100644
index 0000000000..c5d4bd71ea
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-create.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body","body":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","example":"https://example.com/ospi/webhook"},"eventTypes":{"type":"array","items":{"type":"string","enum":["identity.registered","identity.activated","identity.suspended","identity.reactivated","identity.retired","product.created","product.published","product.unpublished","product.recalled","product.archived","order.created","order.updated"]}}},"required":["url","eventTypes"],"title":"CreateWebhookSubscriptionDto"}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-create.StatusCodes.json b/docs/api-reference/reference/webhooks-controller-create.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-create.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-create.api.mdx b/docs/api-reference/reference/webhooks-controller-create.api.mdx
new file mode 100644
index 0000000000..410d12c214
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-create.api.mdx
@@ -0,0 +1,69 @@
+---
+id: webhooks-controller-create
+title: "WebhooksController_create"
+description: "WebhooksController_create"
+sidebar_label: "WebhooksController_create"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmF9v2zgMwL+KoKcNUP60zd1tecvSHtADhvbarnsIikG2mVibLXkUlTYX+PPc97hPdqCs5k9bdDfgHvMUm5ZJivyRMbWWrgHUZJw9L+RYfoasdO6bnzpL6KoK8EuOoAmkko1GXQMBejme3SmJ8D2Apw+uWMnxOt4ahEKOCQMomTtLYIkf6aapTB6tDL56Z1nm8xJqzVe0akCOpcu+Qk5sB9knMuD5acBqZ5EnNHYhlYQHXTcVi0qixo8HgyTp564eON+YwX23F9kqCUuwdLNqOpVJl0bUK6mkIaj9izZsqOV4Jk0Blgyt+ggL4wl4k2or1TmZpaZ9oQ++AVvsCxFeXItAptPZoCtCTv0u5ruSJmSV8eWeLNiXpAi5rqo9kca8NMsoclgA7ujv7kNTxPu7tm3VTiZnMfx78btTkgzFyE+jloTMdch8jqbhJJ+Sk21S5RtnfRf34+ER/xSwWSjHktMzGg6fP7jVlSkiM2KuTQWFEg4FlSASeGJpXKUJvNAiC95Y8F5gqKAv/zf6ANHhj5flroDXKf0wOf1ydfbnp7PrG6me7PSadFaBqHVeGgs9BF1EQTQuWHefo1SD93rxAzvPoibmDoWzwMGrHYKYG6gKHzWmQHLlv6azOBodZ6Mi7x3Ph8e90btfh73sl5P3vffz0fz4t/noaJi9e7apqUOELj1UGp82c2+oFB5wCdjzpgBRuQX78oS6GM/tjnc93eHvjFWeAmlTdcTtK+ly93T9VSJyy+joJSw/Gu+NXShR62rusE74wUPD6kWOEKtXV/5A24G2n6Lt5Dltk0Al45RzF1YiCyTqDsBNw4vYNYBR7qx441AY8gLBu4A5CJ+7BpSYnF71hscnbw9YHrD8KSxHz7G82f7ZQrElrXDghXUk4MF4in3RdIKl8YaTRi5yGz9E8EDigcSfIvH9qySK3Nl5ZXLynfsRQu6UnjSBeAP9RV9oUYQOMxDBmu8BxFJXAQ5t8QDjf4exVZL0gsddmYbJOP94yAMaWsnxbC0z0AjIE3F793Sfr03TNVDpeORunI/QaCrlWA50YwbLo8HGHpvjkKSh+9H2NUPaAfboQSKXd5NEKl387rDWJMfyj883nGsej7+IyeW5+AY8Aaf08iQdI8WVcLWd7s8es52m8R+P3PsT98sT9F2rpLFzF/lKWbi4vjwXl5Um/uRmB5+hE1e8uWjAimvSttBYiMtuzBXn0co81fNbkTPSTdLWFx9vL7uPJP6M4pe4XMXUWU+GQiyLf/4enYyTHlopcYELbc1fUZ9Xgj/TVDIHKKauAK9EdCldJ1e8ErcajbZ8NdUEC4eGn0+I0GSB+Hpaae837ipx6vJQQ3xlEgpD3Ko48d3Gh/2j/jA1L51z8+JMMTy1jm3L6pj6R+bEFjqxgW4vlpuyJnigQVNpY7nw04FLx+NM6sawH0dS7dVAydSOZ3K9zrSHT1i1LYu/B8BVR+qSA5BxWmec6hJ0EetkLRk6bgKxC/cYErbA7ZlPZZ525FY9vjHJc2jo1bV3O4V1eRH7aZbOp+rYhyXqe+4Z+p7PHpR0MRixjqJsLSttFyH2Utnp5DjrwNHYROxJfcVdPZ4q2dWOh+t1t+LGfQPbtlKlrRDfy5bPW/4Fx8u7JQ==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+WebhooksController_create
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-deliveries.ParamsDetails.json b/docs/api-reference/reference/webhooks-controller-deliveries.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-deliveries.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-deliveries.RequestSchema.json b/docs/api-reference/reference/webhooks-controller-deliveries.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-deliveries.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-deliveries.StatusCodes.json b/docs/api-reference/reference/webhooks-controller-deliveries.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-deliveries.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-deliveries.api.mdx b/docs/api-reference/reference/webhooks-controller-deliveries.api.mdx
new file mode 100644
index 0000000000..88ce29f565
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-deliveries.api.mdx
@@ -0,0 +1,69 @@
+---
+id: webhooks-controller-deliveries
+title: "WebhooksController_deliveries"
+description: "WebhooksController_deliveries"
+sidebar_label: "WebhooksController_deliveries"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMWKbDYbJLNHoIgoMSRxY1EKuTIm9TQ8/Q9+mTFUIrz4cWmuftkmtIM/5z5cczxWrgavSLj7IkWifiKaeHcbVg4S96VJfobjaVZoTcYhBS18qpCQh9EcrUWVlUoEmG0kMLjXWM8apGQb1AKY0UiakWFkCJkBVZKJGtBDzVbBPLGLkXbXrNhqJ0NGPj5dDzmD40h86ZmXSIRopVi9qMHl6o0OqqHXJkStQTngQoEVoOBYGVcqQgDKEibYCyGAL4pcSikyJwltMRuVV2XJoueRt8C+15vi3bpN8yIo+A5amQ6yei982+/ljmN2xGQAu9VVZc89fv86Obs+POX4/MLIV/t9JxUWiJUKiuMxYFHpeNEXBzY95CjVGEIavnGOltRg9x5cBY5eJXzCLnBUofosQ8k0/Ezn3oym6YznQ2m+Xg6mH34dTxIfzk4HBzms3z6Wz6bjNMPW5taOO+xSw8VJvSb+W6ogIB+hX4QjEYo3ZK1tM8Zu+ri+bTj50qvpSBDUdcxuzxCUqY8IrflpMvd6/fPeiI7izbSN9mm76MJwdilhEqVufNVjx/e1+weMo8aLRlVhh1tO9reRdvBNm3zhgrGKVPEoKUNQdUBuCl4EbsafZx3FvacB0MBPAbX+AwhZK5GCfOjs8F4erC/w3KH5buwnG1jefH0Y4v6iTTtMIB1BHhvAsW6aLqJlQmGk0YucpspvmXsSNyR+C4SD39KImTO5qXJKHTyI4RcKQMpQtjD4XIICnTTYYbQWHPXIKxU2eCuLO5g/P8wtlKQWnI7JL73zRPbBMwab+ghtkkpKo9eJFfX3O+83OdbHVeFVDhuzZYYueGGKhEjVZvRajJ6XHK0NrodvTDsosTCnsk5Z2475h5F9TDzBvsp2Q/+cL5SJBLx19cLTr8LtbmB+ekJ3OKDkI8ZL4jqGDxjcxdJ6OP16fz0BE5LRXw5ZrutJMc39j7VaOGclNXKazj1TjcZwUm8POf9yduHjOGre29D+Hh52l1n+MLDRnywYOFsIENNBPjff2YHSe+HHiR88ktlzd/RX5DAFyrZL4ceFk5jkBAl9eNeSpBwqbxRlkcLRbh0HGMJcyJv0oZ4vChVCBu5Eo5c1lQYTeaNNsRFhfPRbXw8nAzHfZlRGZcZDmDtAlUqFpi+s36kA57wgBdZfhHPzSEkvKdRXSpj+Zg2vuRnHTpXQtWGtUyEfCJWiiQ28c98X0tRuEBssV6nKuAXX7YtT9816B86rlYcl5SzfbUW2gQea5Hkqgy4JW5TU8XeWX/O9uGJo5ei+0llmbRYl/mPACkYvfiPQ3vdSlGg0vFkrfsH8yzDmp6ZbFVvPoKbQ/XnMZdT1XBkNtF7dQyi9x/KWa+7Ny7cLdq23agj/s4C2/Y/kID0Aw==
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+WebhooksController_deliveries
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-list.ParamsDetails.json b/docs/api-reference/reference/webhooks-controller-list.ParamsDetails.json
new file mode 100644
index 0000000000..9154effd26
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-list.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-list.RequestSchema.json b/docs/api-reference/reference/webhooks-controller-list.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-list.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-list.StatusCodes.json b/docs/api-reference/reference/webhooks-controller-list.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-list.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-list.api.mdx b/docs/api-reference/reference/webhooks-controller-list.api.mdx
new file mode 100644
index 0000000000..1f1311285f
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-list.api.mdx
@@ -0,0 +1,69 @@
+---
+id: webhooks-controller-list
+title: "WebhooksController_list"
+description: "WebhooksController_list"
+sidebar_label: "WebhooksController_list"
+hide_title: true
+hide_table_of_contents: true
+api: eJztl91S4zYUx1/ljK7YGSckIW0X36WBdujMDixh2QuGYWT5ONYiS0Y6zpJm/Dx9jz5Z58gmsKTdLfe5Qujjf75+PpE2wtXoJWlnz3KRis+Ylc7dh7mz5J0x6O+MDiQSUUsvKyT0QaQ3t4nwGGpnAwaRbsRkNOI/OQbldc1qIhWiTcT03xaupdF5tAmF1AbzBJwHKhE8PjQYCFbaGUkYQELWBG0xBPCNwaFIhHKW0BLLyro2WkWlwy+BtTciqBIrySNa1yhS4bIvqGIEnmMl3bmM3jv/423K5fhiVyCv7VIkAh9lVRue+nV2cnd5+vHT6eJKJK8iXZDMDEIlVaktDjzKPE5E48DaQ85ShSHI5Q/s7GQNCufBWeTkVc4jFBpNHqJin0iu6fc08/F0kk1zNZgUo8lg+v7n0SD76eh4cFxMi8kvxXQ8yt7vBDV33mNXHip16IP5qqmEgH6FfhB0jmDckn3pndEec5HedPl8jvilp7eJIE3Rr1OWPEGS2pyQ2xHpavd6/2VPZHeijfSNd+n7oEPQdplAJU3hfNXjh481y4PymKMlLU3Y07an7U20He3SNmuoZJyUJAYtawiqDsBtw4vY1ejjvLNw4DxoCuAxuMYrhKBcjQnMTi4Ho8nRuz2WeyzfhOV0F8ur5x9bzJ9Jyx0GsI4AH3Wg2Bd1N7HSQXPRyEVuleS7wZ7EPYlvIvH4uySCcrYwWlHo3I8QcqcMJAnhAIfLIUjImw4zhMbqhwZhJU2D+7a4h/H/w9gmguSSnzLia//k4TMBVeM1rUV6sxEZSo+eXzvt7es4//udVCGVjp9SS+yeTVSKVBzKWh+uxodbY2yL89G/pp4ML5jQjq4n8z22HEo/lfSD35yvJIlU/PH5igvtQq3vYHZxBve4FslTbUuiOqZJ28LFmveZOV9cnMGFkcTXYD63U8644+C8RgsLkjaXPocL7/JGEZzFa3LRf2PvQDFmda82hA/XF93Fha82fIg/IZg7G0hTE1H9+6/pUdrr0DqBc7+UVv8Z9UICfHVKenPoYe5yDAlEl/px70pI4Fp6LS2P5pJw6bzm9RmR11lDPJ4bGcLW3QROnGoqjEdmTa6J2wfXowt8NBwPR31DkYobCiewdoEqGVuJlbEiTxzAMwjQg/BNJrcfGuEjHdZGasufYuMNr3WQ3AhZa/ZiLJJvqCxdIF7ebDIZ8JM3bcvTDw36dYfPisPPuKg3t20iSpR5JHcjmIRUzJTCmp2KrVKku92REd+i+/sptyvZsFdbz1/BF9X7JWnXL7Q3m27HlbtH27Yi6Z0g/l+0t23b/gOFcKSR
+sidebar_class_name: "get api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+WebhooksController_list
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-remove.ParamsDetails.json b/docs/api-reference/reference/webhooks-controller-remove.ParamsDetails.json
new file mode 100644
index 0000000000..915d752e58
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-remove.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-remove.RequestSchema.json b/docs/api-reference/reference/webhooks-controller-remove.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-remove.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-remove.StatusCodes.json b/docs/api-reference/reference/webhooks-controller-remove.StatusCodes.json
new file mode 100644
index 0000000000..6a5dfc9b82
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-remove.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"200":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-remove.api.mdx b/docs/api-reference/reference/webhooks-controller-remove.api.mdx
new file mode 100644
index 0000000000..d8d8c57530
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-remove.api.mdx
@@ -0,0 +1,69 @@
+---
+id: webhooks-controller-remove
+title: "WebhooksController_remove"
+description: "WebhooksController_remove"
+sidebar_label: "WebhooksController_remove"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmNtu4zYQhl9lwKsEoI9x243uXNsFUnSx2SSbvQiCgBLHFjcSqZAjb1JDz9P36JMVQynOwYtsc+8r0zwMf858HHO8Ea5Cr8g4e6JFIr5imjt3G2bOkndFgf7GY+nWKKSolFclEvogkquNsKpEkQijhRQe72rjUYuEfI1SGCsSUSnKhRQhy7FUItkIeqh4RSBv7Eo0zTUvDJWzAQOPj4dD/tAYMm8q1iQSIRopJj8auFSF0VE5LJUpUEtwHihHYDUYCNbGFYowgIK0DsZiCODrAvtCisxZQktsVlVVYbJoafAtsO3NrmiXfsOM2AuePUamlYzeO//zaZnTuOsBKfBelVXBXb9P5zdni89fFucXQr466TmptEAoVZYbiz2PSseOuDmw7T57qcQQ1Oon++x4DZbOg7PIziudR1gaLHSIFjtHMhlv2dSjyTid6Kw3Xg7HvcmHX4e99Jej497xcrIc/7acjIbph51DzZz32IaHchO6w3w3lENAv0bfC0YjFG7FWprnjF21/nw68XOl11KQoahrwSbnSMoUc3I7RtrYvZ5/1hHZrmgifaNd+j6aEIxdSShVsXS+7PDD+4rNQ+ZRoyWjirCnbU/bu2g72qVtWlPOOGWKGLS0JihbALcJL2JXoY/9zsKB82AogMfgap8hhMxVKGE6P+sNx0eHeyz3WL4Ly8kulhdPP7aon0jTDgNYR4D3JlDMi6btWJtgOGjkIreZ4hfGnsQ9ie8i8fhNEiFzdlmYjEIrP0LImTKQIoQD7K/6oEDXLWYItTV3NcJaFTXu0+Iexv8PYyMFqRWXQ+J7VzjxmoBZ7Q09xDIpReXRi+Tqmuudl+d8q9oqkXLHJZnGAqmtvygXiRioygzWo8HjjoON0Q3XWdEzLOaZhHNmteXsUUgHMB+q65Jd4w/nS0UiEX9+veCQu1CZG5iensAtPgj5GOWcqIoOM3bpYvQ7H306Pz2B00IRP4h53U5g44yDTxVaOCdltfIaTr3TdUZwEh/My+62HULGwFWdtT58vDxtnzD8yOFFfJlg5mwgQ3WE9t9/JkdJZ4ceJHzyK2XN39FekMCPKNlthx5mTmOQECV17U5KkHCpvFGWWzNFuHLe8PiUyJu0Jm7PChXCVq6EucvqEuOSaa0NcSLheLQHH/ZH/WGXWlTGqYUdWLlApYpJpaumH4mAJyRgi8QLX24vHeE9DapCGcvXsvYFj7WsXAlVGdYxEvKJUCkSE+9C7gLxpM0mVQG/+KJpuPuuRv/QYrRmN6Qc3KuN0CZwW4tkqYqAO3q2aVMcnHVX6RCesHmps+tUlsGKqZdrfSmYtPinQnPdSJGj0vHybLqBaZZhRc+W7CRovmXbuzNf/LW4WAgpVM3+2PrsFfhxgx8q2mzaGRfuFm3TbAUSf2eNTfMfAKToOA==
+sidebar_class_name: "delete api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+WebhooksController_remove
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-retry.ParamsDetails.json b/docs/api-reference/reference/webhooks-controller-retry.ParamsDetails.json
new file mode 100644
index 0000000000..1b3479e9ef
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-retry.ParamsDetails.json
@@ -0,0 +1 @@
+{"parameters":[{"name":"deliveryId","required":true,"in":"path","schema":{"type":"string"}}]}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-retry.RequestSchema.json b/docs/api-reference/reference/webhooks-controller-retry.RequestSchema.json
new file mode 100644
index 0000000000..c96bcede2f
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-retry.RequestSchema.json
@@ -0,0 +1 @@
+{"title":"Body"}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-retry.StatusCodes.json b/docs/api-reference/reference/webhooks-controller-retry.StatusCodes.json
new file mode 100644
index 0000000000..6708b73ac0
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-retry.StatusCodes.json
@@ -0,0 +1 @@
+{"responses":{"201":{"description":""},"400":{"description":"Validation failed, or the request violates a business rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"401":{"description":"Missing, malformed, or expired credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"403":{"description":"Authenticated, but missing the required permission (or its resource scope, ADR-023).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"404":{"description":"The requested resource does not exist, or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}},"409":{"description":"The request conflicts with existing state (e.g. a duplicate unique value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"BAD_REQUEST","description":"Stable machine-readable error code."},"message":{"type":"string","example":"Validation failed for one or more fields."},"requestId":{"type":"string","example":"d142b4dc-2f02-4860-b539-9f4f27f410b8","description":"Correlates this error with server-side logs."}},"required":["code","message","requestId"],"title":"ErrorDetailDto"}},"required":["error"],"title":"ErrorResponseDto"}}}}}}
\ No newline at end of file
diff --git a/docs/api-reference/reference/webhooks-controller-retry.api.mdx b/docs/api-reference/reference/webhooks-controller-retry.api.mdx
new file mode 100644
index 0000000000..f5116eaedb
--- /dev/null
+++ b/docs/api-reference/reference/webhooks-controller-retry.api.mdx
@@ -0,0 +1,69 @@
+---
+id: webhooks-controller-retry
+title: "WebhooksController_retry"
+description: "WebhooksController_retry"
+sidebar_label: "WebhooksController_retry"
+hide_title: true
+hide_table_of_contents: true
+api: eJztmM1u4zYQx19lwFMC0J9x241urpMCKbCIm2SzByMIKHFscyORCjnyxjX0PH2PPlkxlGIn8SLb3H0yTYnD/8z8OOZ4I1yJXpFx9kKLRHzFdOncQ5g4S97lOfp7j+TXQopSeVUgoQ8imW2EVQWKRGjMzQr9+kILKTw+VsajFgn5CqUwViSiVLQUUoRsiYUSyUbQuuSVgbyxC1HXd7wwlM4GDPx82B/wh8aQeVOyNJEIUUsx6vf3H9yq3OjoAMyVyVFLcB5oicBqMBCsjMsVYQAFaRWMxRDAVzl2hRSZs4SW2Kwqy9xk0VLvW2Dbm33RLv2GGXE0PAeOTCMZvXf+569lTuN+BKTAJ1WUOU/9Pj67vzr/68v59Y2Qbzy9JpXmCIXKlsZix6PScSJuDmy7y1EqMAS1+Mk+e1GDufPgLHLwCucR5gZzHaLFNpAMyHs29WA0TEc66wzn/WFn9OnXfif95eS0czofzYe/zUeDfvppz6mJ8x6b9NDShNaZ74aWENCv0HeC0Qi5W7CW+iVjsyaeO49fKr2TggxFXeds8gxJmfyM3J6RJndv379qiWxW1JG+H2D52YRg7EJCofK580WLHz6VbB4yjxotGZWHA20H2j5E28k+beOKloxTpohBSyuCogFwW/AidiX6OO8sHDkPhgJ4DK7yGULIXIkSxmdXnf7w5PiA5QHLD2E52sfyZvdji3pHmnYYwDoCfDKBYl00zcTKBMNJIxe5zRRfNA4kHkj8EImn75IImbPz3GQUGvkRQq6UgRQhHGF30QUFumowQ6iseawQViqv8FAWDzD+fxhrKUgtuC0S39v+idcEzCpvaB3bpRSVRy+S2R33O6/9fKfpKpCWjhuz0oXIDDdTieip0vRWg97zdr22DTMYeptdS1b3nu008WKJL4RdM8ENfc/yWqzZ1XZKtoM/nC8UiUT8+fWGQXChNPcwnl7AA/IObe6XRGUMo7FzF5loI3d5Pb2Aaa6Ir8m8bi/d8Y2jyxItXJOyWnkNU+90lRFcxGv0vD2Dx5AxhmVrrQufb6fNxYavPryIjxhMnA1kqIoo//vP6CRp7dBawqVfKGv+jvaCBL5ayXY79DBxGoOEKKkdt1KChFvljbI8mijCheOwSxgTeZNWxONJrkLYypVw5rKqwLhkXGlDXF44H43j/e6g228Ljsq44HAAOeOFiqWm7bWfOYEdKPCc4Feh3J5Ewifqlbkyls9q5XN+1jA0E6o0LGMg5A5bKXYkCSmSN+0973UnxZJhTGZis0lVwC8+r2uefqzQrxvEVhyilBM/2whtAo+1SOYqD7gndltoxdFVe/iOYYfUayfaSWXZ61is+d8BKZjCV39H1He1FEtUOh67TfvCOMuwpBdL90o7n8/tsZtexmKrKg7ZNqxvjkY0/0Ndm03zxo17QFvXW5nE31lhXf8HSdMBOA==
+sidebar_class_name: "post api-method"
+info_path: api-reference/reference/ospi-platform-api
+custom_edit_url: null
+---
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+import Translate from "@docusaurus/Translate";
+
+
+
+
+
+
+
+
+
+
+WebhooksController_retry
+
+
+ Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/api-reference/search.md b/docs/api-reference/search.md
new file mode 100644
index 0000000000..a4f763a181
--- /dev/null
+++ b/docs/api-reference/search.md
@@ -0,0 +1,33 @@
+---
+title: Search & Discovery
+sidebar_position: 10
+---
+
+# Search & Discovery
+
+## Endpoints
+
+| Method | Path | Description | Auth |
+| --- | --- | --- | --- |
+| `GET` | `/search/products` | Full-text product search | Bearer |
+| `GET` | `/search/products/:id/related` | Related products via shared category/classification | Bearer |
+| `GET` | `/search/resolve/:code` | OSPI Code Resolver | none (optional) |
+
+## Product search
+
+```http
+GET /api/v1/search/products?q=stainless+bottle&scope=network
+Authorization: Bearer
+```
+
+`GET /search/products` runs directly against PostgreSQL full-text search — there is no dedicated search engine behind it ([ADR-012](/architecture/adr/adr-012-search-postgres-fts)). Default `scope` is the caller's own organization. `?scope=network` additionally includes products from organizations that granted the caller an active `PRODUCT_DATA` sharing grant scoped `ALL_PRODUCTS` or `PRODUCT_CATEGORY` — individual `PRODUCT`-targeted grants are deliberately excluded from this general listing (folding those in would be an unbounded per-candidate-grant cost without a real search index); they're still reachable via the [Partner endpoints](/api-reference/connections-and-sharing#partner-facing-reads).
+
+## Resolver
+
+```http
+GET /api/v1/search/resolve/OSPI-ACME-123456-00012345-0001-00000001-1-K3F
+```
+
+Reachable **without login** — matches the "scan a code, no login" use case (Deel 4 §26-27). An OSPI code and its basic identity (name, category, manufacturer) are treated as public registry data. Returns the full chain: code → product → manufacturer → variants → documents.
+
+What *is* access-controlled is each attached document's `visibility` — `PUBLIC` documents always come back, `RESTRICTED` ones only once the caller (if authenticated) holds an active `CONTENT` grant, `PRIVATE` ones never come back through this endpoint. This endpoint is rate-limited (see [API conventions](/api-reference#rate-limiting)).
diff --git a/docs/api-reference/webhooks.md b/docs/api-reference/webhooks.md
new file mode 100644
index 0000000000..f3f991a475
--- /dev/null
+++ b/docs/api-reference/webhooks.md
@@ -0,0 +1,40 @@
+---
+title: Webhooks
+sidebar_position: 13
+---
+
+# Webhooks
+
+An organization registers its own HTTPS endpoint and event types, and gets HMAC-signed, thin-payload notifications with exponential-backoff retries and dead-lettering after 8 attempts ([ADR-026](/architecture/adr/adr-026-webhooks)).
+
+## Endpoints
+
+| Method | Path | Description | Permission |
+| --- | --- | --- | --- |
+| `POST` | `/webhooks` | Register a subscription | `webhooks:manage` |
+| `GET` | `/webhooks` | List subscriptions | — |
+| `DELETE` | `/webhooks/:id` | Remove a subscription | — |
+| `GET` | `/webhooks/:id/deliveries` | Delivery log | — |
+| `POST` | `/webhooks/deliveries/:deliveryId/retry` | Manually retry one delivery | — |
+
+## Register a subscription
+
+```http
+POST /api/v1/webhooks
+Authorization: Bearer
+Content-Type: application/json
+
+{
+ "url": "https://erp.acme.example/hooks/ospi",
+ "eventTypes": ["product.published", "order.submitted"],
+ "secret": "whsec_..."
+}
+```
+
+Event types follow an `.` pattern: `identity.*`, `product.*`, `order.*`.
+
+## Delivery
+
+Deliveries are queued durably in Postgres and dispatched from a periodic sweep — **never inline** in the request that triggered the event, so an unreachable partner endpoint can't slow down or fail an OSPI write. Each payload is signed with HMAC using the subscription's secret; verify the signature before trusting a delivery. After 8 failed attempts a delivery is dead-lettered and must be retried manually via `POST /webhooks/deliveries/:deliveryId/retry`.
+
+This covers an organization's own outbound channel only (Deel 5/8). The separate category/brand-scoped partner-distribution subscription model (Deel 14) is not built yet.
diff --git a/docs/architecture/adr/_category_.json b/docs/architecture/adr/_category_.json
new file mode 100644
index 0000000000..14dd3784d1
--- /dev/null
+++ b/docs/architecture/adr/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "Architecture Decision Records",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "title": "Architecture Decision Records",
+ "description": "34 ADRs recording every place the OSPI source specification (Deel 1–26) was ambiguous, conflicting, or silent, and the concrete decision the platform build made instead."
+ }
+}
diff --git a/docs/architecture/adr/adr-001-technology-stack.md b/docs/architecture/adr/adr-001-technology-stack.md
new file mode 100644
index 0000000000..146f21e36f
--- /dev/null
+++ b/docs/architecture/adr/adr-001-technology-stack.md
@@ -0,0 +1,42 @@
+---
+title: "ADR-001: Technology Stack"
+sidebar_label: "ADR-001"
+sidebar_position: 1
+---
+
+**Status:** Accepted
+**Date:** 2026-08-16
+**Deciders:** Product owner + Claude (build agent), per explicit request to make pragmatic decisions and document them for later review.
+
+## Context
+
+The Project Constitution (Deel 1, §7) mandates technology neutrality until requirements are settled, and explicitly defers the stack decision ("Nog niet vastgelegd"). The High-Level Architecture doc likewise leaves this open, only noting PostgreSQL as a likely candidate. To begin implementation, a concrete choice is required.
+
+Target scale per Constitution §6.3: from 10 companies / 100,000 products to an architectural guideline of 100,000+ companies / 100,000,000+ products, without a full architectural rewrite.
+
+## Decision
+
+- **Language/runtime:** TypeScript on Node.js
+- **API framework:** NestJS (modular, opinionated, DI-based — maps directly onto the "modular monolith first" principle in Constitution §37 and High-Level Architecture's logical module boundaries)
+- **ORM/schema:** Prisma, backed by **PostgreSQL**
+- **API style:** REST + OpenAPI (via `@nestjs/swagger`), matching Constitution §13 (OpenAPI is mandatory for public APIs)
+- **Async/background processing:** BullMQ + Redis (deferred to when the first async job — bulk import — is implemented; not required for the initial skeleton)
+- **Deployment:** container-based (Docker), stateless API processes behind a load balancer, per Constitution §8.2/§8.3
+
+## Rationale
+
+At this platform's scale, the dominant bottleneck is the **data layer** (indexing, partitioning, read replicas, caching, search), not the API language. That layer's design is identical in shape regardless of language choice. NestJS enforces domain-bounded modules (Organizations, Identity, Products, Classification, ...) that can later be extracted into independent services when justified (Constitution §37/§38) without a rewrite of the rest of the system. CPU-heavy or bulk work (imports, search indexing, checksum computation at scale) is pushed to asynchronous background workers per Constitution §27 — those workers can be reimplemented in a faster language later without touching the API contract.
+
+TypeScript/NestJS was chosen over Go and Java/Spring primarily for team-scaling reasons: broad hiring pool, native OpenAPI tooling, and Prisma's type-safe handling of the extensible/dynamic attribute model (JSONB + validation layer) fits the domain model described in Deel 11/24 well.
+
+## Alternatives considered
+
+- **Go:** Better raw concurrency/performance, but slower to iterate on a large, evolving domain model (26 chapters worth of entities) and a smaller pool of business-logic-focused developers.
+- **Java/Kotlin (Spring Boot):** Proven at this scale (comparable to SAP/Salesforce-class backends), but materially slower development velocity for an MVP-stage product.
+- **Python (FastAPI/Django):** Fast to prototype, but weaker performance ceiling for the core API hot path at target scale; better suited to auxiliary data/ML tooling than the core platform.
+
+## Consequences
+
+- The team hired later should be TypeScript/Node-proficient for the core platform; polyglot workers are acceptable for extracted services.
+- Prisma migrations become the source of truth for schema evolution; must stay disciplined about migration review given multi-tenant data.
+- This ADR does not lock in the *database topology* (single instance vs. sharded vs. multi-region) — see ADR-007.
diff --git a/docs/architecture/adr/adr-002-organization-lifecycle-status.md b/docs/architecture/adr/adr-002-organization-lifecycle-status.md
new file mode 100644
index 0000000000..4f929de4bc
--- /dev/null
+++ b/docs/architecture/adr/adr-002-organization-lifecycle-status.md
@@ -0,0 +1,38 @@
+---
+title: "ADR-002: Organization Lifecycle Status Enum"
+sidebar_label: "ADR-002"
+sidebar_position: 2
+---
+
+**Status:** Accepted
+**Date:** 2026-08-16
+
+## Context
+
+Three source chapters define conflicting status enums for the `Organization` entity:
+
+- Deel 6 (Core Data Model, §6): `ACTIVE / SUSPENDED / INACTIVE`
+- Deel 9 (Organizations, Multi-Tenancy..., §8): `ACTIVE / SUSPENDED / CLOSED`
+- Deel 25 (Organization, Entity, Identity..., §83): `ACTIVE / SUSPENDED / ARCHIVED / DELETED`
+
+This is a real schema conflict, not a wording difference — a builder must pick one before writing a migration.
+
+## Decision
+
+Adopt a single canonical lifecycle, a superset that preserves the distinct intents found across all three sources:
+
+```
+PENDING -- created, not yet verified/activated (new state; needed for onboarding flow, not explicit in any source but implied by "organization creation" flows in Deel 7/9)
+ACTIVE -- normal operating state
+SUSPENDED -- temporarily disabled (billing issue, policy violation, admin action) — reversible
+ARCHIVED -- soft-closed, read-only, data retained (e.g. organization stopped using the platform) — reversible with admin action
+DELETED -- soft-deleted, data retained per retention policy, not reversible via normal API (matches Constitution §18 auditability + §6.4 data durability — hard deletes of tenant data are not permitted without an explicit, audited, admin-level process)
+```
+
+`INACTIVE` (Deel 6) and `CLOSED` (Deel 9) are treated as synonyms folded into `ARCHIVED`.
+
+## Consequences
+
+- Deel 6, Deel 9, and Deel 25 should be marked superseded-by-this-ADR for this specific field in any future documentation consolidation pass.
+- All authorization checks must treat `SUSPENDED`, `ARCHIVED`, and `DELETED` organizations as non-writable; `ARCHIVED`/`DELETED` also non-readable via normal tenant-scoped endpoints (admin-only access).
+- This does not resolve the broader duplication problem across Deel 6/9/25 (see the earlier documentation-conflict report) — only this one field, which was required to write the Prisma schema.
diff --git a/docs/architecture/adr/adr-003-attribute-datatype-system.md b/docs/architecture/adr/adr-003-attribute-datatype-system.md
new file mode 100644
index 0000000000..96c8d6efae
--- /dev/null
+++ b/docs/architecture/adr/adr-003-attribute-datatype-system.md
@@ -0,0 +1,32 @@
+---
+title: "ADR-003: Attribute Datatype System"
+sidebar_label: "ADR-003"
+sidebar_position: 3
+---
+
+**Status:** Accepted
+**Date:** 2026-08-16
+
+## Context
+
+- Deel 11 (Classification, Taxonomy & Attribute Engine, §21): `TEXT, INTEGER, DECIMAL, BOOLEAN, DATE, DATETIME, ENUM, MEASUREMENT, REFERENCE`
+- Deel 24 (Attribute System, Units, Classification..., §7): `STRING, TEXT, INTEGER, DECIMAL, BOOLEAN, DATE, DATETIME, ENUM, MEASUREMENT, REFERENCE, URL, EMAIL`
+
+Deel 24 splits `STRING` from `TEXT` and adds `URL`/`EMAIL`, which Deel 11 does not have.
+
+## Decision
+
+Adopt Deel 24's superset, with an explicit distinction:
+
+- `STRING` — short text, single line, indexable/filterable (e.g. model number)
+- `TEXT` — long-form text, not typically used for filtering (e.g. description)
+- `INTEGER`, `DECIMAL`, `BOOLEAN`, `DATE`, `DATETIME` — standard scalars
+- `ENUM` — closed set of allowed values, defined per `AttributeDefinition`
+- `MEASUREMENT` — numeric value + unit reference (needs a `Unit` reference table — not fully specified in either source; modeled here as `{ value: Decimal, unitCode: String }`)
+- `REFERENCE` — reference to another entity (e.g. another product, a classification node)
+- `URL`, `EMAIL` — validated string subtypes
+
+## Consequences
+
+- `AttributeValue` storage uses a single JSONB `value` column with the `dataType` on `AttributeDefinition` driving validation at the application layer, rather than a wide sparse table — this keeps the schema extensible per Constitution §19 without per-category migrations.
+- Unit handling (`MEASUREMENT`) is intentionally minimal in this MVP: a `unitCode` string with no unit-conversion engine yet. Flagged in the roadmap as a follow-up (unit conversion/normalization is described only in prose in Deel 24, with no concrete algorithm).
diff --git a/docs/architecture/adr/adr-004-ospi-code-checksum.md b/docs/architecture/adr/adr-004-ospi-code-checksum.md
new file mode 100644
index 0000000000..4b90f25f9d
--- /dev/null
+++ b/docs/architecture/adr/adr-004-ospi-code-checksum.md
@@ -0,0 +1,33 @@
+---
+title: "ADR-004: OSPI Code Checksum Algorithm"
+sidebar_label: "ADR-004"
+sidebar_position: 4
+---
+
+**Status:** Accepted — explicitly ratified by product owner (2026-08-17), including the decision not to seek external validation before real codes are issued.
+**Date:** 2026-08-16
+
+## Context
+
+Deel 4, Deel 10, and Deel 23 consistently describe the OSPI code format as:
+
+```
+OSPI-[AAAA]-[BBBBBB]-[CCCCCCCC]-[DDDD]-[EEEEEEEE]-[V]-[FFF]
+```
+
+...and all three claim the checksum segment `FFF` (3 alphanumeric characters) is computed via the **Luhn algorithm**. This is internally inconsistent: Luhn is defined over numeric digit streams and produces a single check digit, not a 3-character alphanumeric checksum. All three source documents repeat the same error, so this is not resolvable by picking a "more authoritative" chapter — the underlying algorithm was never actually specified.
+
+## Decision
+
+Replace the checksum with a **base32 (Crockford alphabet) encoded CRC-16/CCITT-FALSE checksum** of the preceding segments (`AAAA-BBBBBB-CCCCCCCC-DDDD-EEEEEEEE-V`, ASCII bytes, no hyphens):
+
+1. Compute CRC-16/CCITT-FALSE over the concatenated identifier body.
+2. Encode the resulting 16-bit value using Crockford's Base32 alphabet (excludes ambiguous characters I, L, O, U), left-padded, truncated/mapped to exactly 3 characters (32^3 = 32,768 ≥ 65,536 range requires the top bits to be dropped intentionally — accepted as a detection-only, not cryptographic, checksum, consistent with the original intent of catching transcription errors, not fraud).
+3. This is implemented once in `libs/ospi-code/checksum.ts` and is the single source of truth — no other part of the system reimplements it.
+
+This is a pragmatic, unambiguous, implementable replacement for the broken Luhn reference. It is explicitly flagged as a **build-time decision requiring formal sign-off** before OSPI codes are issued to any real external party, since the checksum algorithm is effectively part of the public identifier standard and changing it later breaks previously-issued codes.
+
+## Consequences
+
+- Every previously-drafted example OSPI code in the documentation that shows a Luhn-derived checksum is now invalid and must be regenerated.
+- This is the single highest-risk ADR in the initial build: it defines part of a public, supposedly permanent identifier format. Flagged in the README roadmap as **requires human/team ratification before any production code issuance**.
diff --git a/docs/architecture/adr/adr-005-gs1-relationship.md b/docs/architecture/adr/adr-005-gs1-relationship.md
new file mode 100644
index 0000000000..ab144d757a
--- /dev/null
+++ b/docs/architecture/adr/adr-005-gs1-relationship.md
@@ -0,0 +1,54 @@
+---
+title: "ADR-005: Relationship to GS1/GTIN (MVP stance)"
+sidebar_label: "ADR-005"
+sidebar_position: 5
+---
+
+**Status:** Accepted — strategic positioning decided by product owner (2026-08-17); legal/standards-body execution still outstanding, see below.
+**Date:** 2026-08-16
+
+## Context
+
+The documentation treats GTIN only as "an additional identifier" without addressing overlap, licensing, or the rationale for a new global scheme alongside the incumbent GS1 standard.
+
+## Decision (MVP scope only)
+
+For the MVP, OSPI does **not** claim to replace or compete with GS1/GTIN. `Product` and `ProductVariant` records have an **optional** `gtin` field stored alongside the OSPI code. OSPI codes are additive, internal-platform identifiers; no claim is made about global registry status, standards-body governance, or legal interoperability with GS1.
+
+**Strategic decision (2026-08-17, product owner):** the question this ADR originally deferred —
+complement GS1, integrate with it, or position as an independent standard — is now answered:
+**OSPI is positioned as its own, independent identification standard**, not merely an internal
+platform feature or a layer on top of GS1. This changes the framing but not, on its own, much
+of the engineering: OSPI codes were already independently generated and resolved end-to-end
+(`ospi-code.util.ts`, the Identity/Search modules) without any dependency on GS1 infrastructure
+— that part of the build already matched "independent standard" before this decision existed.
+What the decision actually changes:
+- Documentation/positioning language should stop hedging with "does not claim to replace or
+ compete with GS1" — that sentence above is now superseded by this update, kept only for
+ history.
+- `gtin` stays as an **optional, supplementary** field, not removed: most real products will
+ carry both identifiers for the foreseeable future (retail channels built on GS1 don't
+ disappear because OSPI exists), and an independent standard is not weakened by also
+ interoperating with an established one. This is a "both/and," not "either/or."
+- Actually *operating* as an independent standard — trademark/naming clearance, a real
+ standards-body or governance structure (Constitution's still-open "who owns/governs OSPI"
+ question), external communications, and any claims made to producers/regulators — is
+ business/legal work outside what this build session can do. The engineering stance is
+ decided; the institutional work to back that stance publicly is not.
+
+**Update (2026-08-17):** the follow-up flagged below is now done — `gtin` is checksum-validated
+against GS1's published check-digit algorithm (`src/products/gtin.util.ts`, wired into
+`CreateProductDto`/`UpdateProductDto` via a custom `@IsGtin()` class-validator decorator).
+Supports GTIN-8/12/13/14. This only confirms the value is a *structurally valid* GTIN (correct
+length, correct check digit) — it does **not** confirm the number was actually issued/registered
+to anyone via GS1's real registry, since this build has no connectivity or business relationship
+with GS1. That distinction matters: a syntactically valid but never-issued GTIN will still pass.
+
+## Consequences
+
+- This defers, rather than answers, the strategic question ("standard body vs. platform feature") raised in the earlier documentation review. That question is a business/governance decision, not an engineering one, and is out of scope for this build session.
+- The README roadmap explicitly calls this out as **unresolved and requiring a decision from the product owner before any external-facing "standard" claims are made**.
+- Checksum validation closes the narrower, purely technical gap this ADR originally flagged
+ ("no validation against GS1's actual check-digit algorithm implemented yet") without touching
+ the strategic question at all — those are independent, and only the technical one was ever an
+ engineering task Claude could resolve unilaterally.
diff --git a/docs/architecture/adr/adr-006-dpp-espr-stance.md b/docs/architecture/adr/adr-006-dpp-espr-stance.md
new file mode 100644
index 0000000000..9e40e5839d
--- /dev/null
+++ b/docs/architecture/adr/adr-006-dpp-espr-stance.md
@@ -0,0 +1,34 @@
+---
+title: "ADR-006: DPP / EU ESPR Compliance Stance (MVP scope)"
+sidebar_label: "ADR-006"
+sidebar_position: 6
+---
+
+**Status:** Accepted for MVP — legal/ESPR review explicitly deferred until post-MVP validation (product owner decision, 2026-08-17). Superseded in part by the DPP scaffold actually built (`src/dpp/`, ADR-013) — see note below.
+**Date:** 2026-08-16
+
+## Context
+
+Deel 12/18 describe "DPP profiles" as a self-defined concept, with no mapping to the actual EU Ecodesign for Sustainable Products Regulation (ESPR), which is the real regulatory driver for Digital Product Passports and defines category-specific delegated acts (batteries first, textiles/electronics following) with legally binding data requirements.
+
+## Decision (MVP scope only)
+
+**Correction (2026-08-17):** this ADR originally said DPP was "out of scope for this initial
+build." That became stale once the build actually proceeded further (per the product owner's
+"Maak de rest ook" instruction) and a generic DPP scaffold was built (`src/dpp/`, `DppProfile` →
+`DppRecord` → live composition from existing Attributes/Documents — see ADR-013 for its access
+model). What's still true, and is the actual substance of this ADR, is the compliance stance:
+**no ESPR compliance claim is made or implied by that scaffold.** It's a generic
+"profile defines required attributes → compose from existing product data" mechanism (Deel 12
+§2/§5), with zero mapping to ESPR's actual category-specific delegated acts. The data model's
+extensibility (the same dynamic Attribute/Classification engine used for products generally)
+is what made adding the scaffold possible without core schema changes — that part of the
+original reasoning held up correctly.
+
+**Product owner decision (2026-08-17):** legal/ESPR review of this scaffold happens later,
+after MVP validation — not before. The scaffold stays exactly as generic as it is today until
+that review determines what, if anything, needs to change for a real compliance claim.
+
+## Consequences
+
+- This is explicitly flagged in the README roadmap as **not legally reviewed** — before OSPI is marketed as supporting DPP/ESPR compliance, a legal review against the actual regulation (and its category-specific delegated acts) is required. That review is now explicitly scheduled for post-MVP, not blocking current work.
diff --git a/docs/architecture/adr/adr-007-multi-tenancy-isolation.md b/docs/architecture/adr/adr-007-multi-tenancy-isolation.md
new file mode 100644
index 0000000000..8b73a3d0d0
--- /dev/null
+++ b/docs/architecture/adr/adr-007-multi-tenancy-isolation.md
@@ -0,0 +1,26 @@
+---
+title: "ADR-007: Multi-Tenancy Isolation Strategy (MVP)"
+sidebar_label: "ADR-007"
+sidebar_position: 7
+---
+
+**Status:** Accepted for MVP; revisit before onboarding tenants with strict regulatory isolation requirements
+**Date:** 2026-08-16
+
+## Context
+
+Deel 6, 9, and 25 all describe tenant isolation as an open decision ("shared schema now, sharding/dedicated DB later, depends on scale"), consistently but without a concrete MVP-level implementation. Constitution §14 mandates isolation must never depend solely on frontend filtering, and must be enforced at application/domain level, with infrastructure-level enforcement "where possible."
+
+## Decision
+
+**Shared database, shared schema, row-level tenant scoping** for MVP:
+
+- Every tenant-owned table has a non-nullable `organizationId` column.
+- All Prisma queries go through a repository layer that injects `organizationId` from the authenticated request context — application code never issues a raw query without this scope (enforced via a NestJS guard + a lint rule / code review checklist, documented in the README).
+- PostgreSQL Row-Level Security (RLS) policies are additionally enabled on tenant-owned tables as defense-in-depth (Constitution §24 "defense in depth"), using a session-scoped `app.current_org_id` setting checked by RLS policy — so even a bug in application-layer scoping cannot leak cross-tenant data.
+- Dedicated schema-per-tenant or database-per-tenant is deferred until a concrete driver emerges (e.g. a large enterprise tenant with contractual data-isolation requirements, or scale where a single Postgres instance's row counts become the bottleneck) — consistent with Constitution §37/§38 (no premature complexity).
+
+## Consequences
+
+- RLS policies must be included in every migration touching a tenant-owned table — this is a hard rule, not optional, given Constitution §6.4 (security by design) and the fact productdata is explicitly flagged as commercially sensitive.
+- This is a stronger MVP starting point than the docs describe (they only mention shared-schema informally) — RLS as defense-in-depth was added here because "production-grade architecture" (Constitution §42) was explicitly required even for the MVP.
diff --git a/docs/architecture/adr/adr-008-ospi-code-segment-widths.md b/docs/architecture/adr/adr-008-ospi-code-segment-widths.md
new file mode 100644
index 0000000000..168861f729
--- /dev/null
+++ b/docs/architecture/adr/adr-008-ospi-code-segment-widths.md
@@ -0,0 +1,29 @@
+---
+title: "ADR-008: OSPI Code Segment Widths Are Variable, Not Fixed"
+sidebar_label: "ADR-008"
+sidebar_position: 8
+---
+
+**Status:** Accepted — explicitly ratified by product owner (2026-08-17), including the decision not to seek external validation before real codes are issued.
+**Date:** 2026-08-16
+
+## Context
+
+Deel 4 §3 shows the format template `OSPI-[AAAA]-[BBBBBB]-[CCCCCCCC]-[DDDD]-[EEEEEEEE]-[V]-[FFF]`, which reads as fixed-width segments (4/6/8/4/8/1/3 characters). But Deel 4 §8 separately states the Producer Code (`AAAA` in the template) allows **up to 12 characters**, which contradicts a literal 4-character fixed width. Deel 4 §21 also requires "one fixed canonical serialization" for optional segments (variant code, serial/batch) without specifying what that is.
+
+## Decision
+
+Treat the bracketed placeholders (`AAAA`, `BBBBBB`, etc.) in the template as **illustrative, not literal fixed widths**. Segments are variable-length, uppercase `A-Z0-9` only (Deel 4 §9), with these MVP-implemented maximum lengths:
+
+- Producer Code: 1–12 characters (per §8, explicit)
+- Product Category: 1–6 characters (as a working default; the "OSPI category registry" itself does not exist yet — see README roadmap)
+- Company Product ID: 1–8 characters
+- Variant Code: 1–4 characters, **omitted segment canonically represented as `0000`** when the product has no variant (resolves the §21 "one fixed standard" requirement, which the source docs leave unspecified)
+- Serial/Batch Number: 1–8 characters, **omitted segment canonically represented as `00000000`**
+- Version: single digit, starts at `1`
+- Checksum: exactly 3 characters (see ADR-004)
+
+## Consequences
+
+- This is a genuine gap-fill, not a neutral transcription of the docs — flagged in the README as **requires ratification** before OSPI codes are issued externally, same as ADR-004.
+- The "OSPI category registry" referenced in Deel 4 §12 does not exist as a governed, versioned list anywhere in the current build; Category codes are currently free-form per-organization strings. This is called out explicitly as a roadmap item, not silently implemented as if it were solved.
diff --git a/docs/architecture/adr/adr-009-inventory-record-shape.md b/docs/architecture/adr/adr-009-inventory-record-shape.md
new file mode 100644
index 0000000000..2bae10989d
--- /dev/null
+++ b/docs/architecture/adr/adr-009-inventory-record-shape.md
@@ -0,0 +1,47 @@
+---
+title: "ADR-009: Inventory Record Shape & Scope"
+sidebar_label: "ADR-009"
+sidebar_position: 9
+---
+
+**Status:** Accepted for MVP
+**Date:** 2026-08-16
+
+## Context
+
+Deel 16 §5 lists a conceptual `Inventory` record with a single `quantity` and `status` field,
+but §6-8 requires computing an `available` quantity from several distinct buckets (on hand,
+reserved, allocated, quarantined, damaged, in transit) that must be tracked separately — these
+two descriptions are not literally reconcilable as one flat record with one quantity.
+
+Deel 16 §11-12 also describes inventory visibility (`PUBLIC` / `PARTNER_ONLY` / `PRIVATE`) and
+quantity display modes (exact / range / boolean / hidden) intended for **external** viewers —
+but the actual cross-organization exposure mechanism depends on the Sharing/Connections domain
+(Deel 14/15), which is not built yet.
+
+## Decision
+
+1. **One `InventoryRecord` per `(organizationId, productId, locationId)`**, with explicit
+ quantity columns per bucket (`onHand`, `reserved`, `allocated`, `quarantined`, `damaged`,
+ `inTransit`) rather than one row per bucket. This makes "what's available right now for
+ this product at this location" a single-row read instead of an aggregation query — the
+ dominant access pattern for "Where to Find" (Deel 16 §1).
+2. `availableQuantity` is **always derived**, never stored: `onHand - reserved - allocated -
+ quarantined - damaged` (in-transit stock is excluded, since it is explicitly not yet on
+ hand — Deel 16 §6 lists it as a distinct bucket from the ones summed in the §8 example).
+3. `visibility` and `quantityDisplayMode` fields are stored on the model now (so the schema
+ doesn't need to change later), but **enforcement is out of scope for this addition** — every
+ endpoint built in this pass is owner-only (`organizationId` = caller's own org, full exact
+ detail). Exposing inventory to partners or the public requires the Sharing/Connections
+ domain to exist first, so that "who is a partner" is even a resolvable question. Until then,
+ `PARTNER_ONLY`/`PUBLIC` values can be set but have no externally-visible effect — flagged in
+ the README so this isn't mistaken for a working feature.
+
+## Consequences
+
+- `availabilityStatus` (`AVAILABLE`/`LOW_STOCK`/`OUT_OF_STOCK`/`PRE_ORDER`/`BACKORDER`/
+ `DISCONTINUED`/`UNKNOWN`) is derived from the quantities plus an optional manual override
+ (`manualStatus`) for states that aren't inferable from stock numbers alone (`PRE_ORDER`,
+ `BACKORDER`, `DISCONTINUED`).
+- A future Sharing/Connections module must add the actual partner-relationship check before
+ `visibility`/`quantityDisplayMode` do anything real.
diff --git a/docs/architecture/adr/adr-010-sharing-scope-model.md b/docs/architecture/adr/adr-010-sharing-scope-model.md
new file mode 100644
index 0000000000..ed321607a9
--- /dev/null
+++ b/docs/architecture/adr/adr-010-sharing-scope-model.md
@@ -0,0 +1,49 @@
+---
+title: "ADR-010: Sharing Scope Model"
+sidebar_label: "ADR-010"
+sidebar_position: 10
+---
+
+**Status:** Accepted for MVP
+**Date:** 2026-08-16
+
+## Context
+
+Deel 14 §10 lists "Scope types" as a single enum: `PRODUCT, PRODUCT_CATEGORY,
+PRODUCT_COLLECTION, PRODUCT_FAMILY, ORGANIZATION, CONTENT, DPP, INVENTORY, ORDERING`. This
+conflates two different dimensions: **what is being shared** (a specific product, a category
+of products, "everything") and **what kind of data about it** (product data, content/documents,
+DPP, inventory, ordering capability). As written it's not a single coherent enum.
+
+`PRODUCT_COLLECTION` and `PRODUCT_FAMILY` also refer to entities that don't exist in this
+schema (no `Collection` or `ProductFamily` model was built — `Product` + `ProductVariant`
+covers what Deel 22/26 call a product family in this build).
+
+## Decision
+
+Split into two orthogonal fields on `SharingGrant`:
+
+- `targetType`: `PRODUCT | PRODUCT_CATEGORY | ALL_PRODUCTS` (what is being shared — a single
+ product via `targetId`, every product in a category via `targetId`, or the owner's entire
+ product catalogue). `PRODUCT_COLLECTION`/`PRODUCT_FAMILY` are omitted — no such entities
+ exist yet; add them here when/if those models are built.
+- `dataCategories`: `String[]`, subset of `PRODUCT_DATA | CONTENT | DPP | INVENTORY |
+ ORDERING` (what kind of data is included for the target).
+
+A grant is attached to a `Connection` (Deel 15 §2's diagram: Connection is the umbrella
+relationship, Sharing Scope determines what's accessible within it) — `SharingGrant` requires
+an `ACTIVE` `Connection` between the owner and grantee organizations.
+
+**Not implemented:** rule-based/dynamic scoping (Deel 14 §12-13, e.g. "share everything in
+category X with status=published, tagged region=EU"). Only explicit target selection
+(`PRODUCT`/`PRODUCT_CATEGORY`/`ALL_PRODUCTS`) is built. A rule engine is a follow-up — see
+README roadmap.
+
+## Consequences
+
+- `SharingService.hasAccess(ownerOrgId, viewerOrgId, dataCategory, product)` is the single
+ enforcement point used by every cross-organization read endpoint (products, inventory,
+ documents). No controller checks sharing grants directly.
+- This finally makes `InventoryRecord.visibility = PARTNER_ONLY` (ADR-009) mean something: a
+ "partner" is now precisely "an organization with an ACTIVE Connection and an ACTIVE
+ SharingGrant covering `INVENTORY` for this product."
diff --git a/docs/architecture/adr/adr-011-ordering-mvp-simplifications.md b/docs/architecture/adr/adr-011-ordering-mvp-simplifications.md
new file mode 100644
index 0000000000..9ab5ce5c2d
--- /dev/null
+++ b/docs/architecture/adr/adr-011-ordering-mvp-simplifications.md
@@ -0,0 +1,63 @@
+---
+title: "ADR-011: Ordering & Commerce MVP Simplifications"
+sidebar_label: "ADR-011"
+sidebar_position: 11
+---
+
+**Status:** Accepted for MVP
+**Date:** 2026-08-16
+
+## Context
+
+Deel 17 describes a full B2B commerce layer: Offers, multi-seller Master Orders decomposed
+into per-seller `OrderGroup` fulfilment groups, a long lifecycle per group (`DRAFT ->
+SUBMITTED -> PENDING_ACCEPTANCE -> ACCEPTED -> PROCESSING -> FULFILLED -> COMPLETED`, plus
+`REJECTED`/`CANCELLED`/`EXPIRED`/`PARTIALLY_FULFILLED`), seller-side checks against stock,
+credit limits, contracts and MOQ (§14), and payment is explicitly noted elsewhere in the
+Constitution as a possible future addition, not required now.
+
+## Decision
+
+Implement the structural model faithfully (`Offer`, `Order` as the master record, `OrderGroup`
+per seller, `OrderLine` per offer within a group) but with these MVP simplifications, each
+flagged rather than silently assumed:
+
+1. **No payments.** No payment/invoicing entity or integration exists. An order reaching
+ `COMPLETED` says nothing about whether or how it was paid.
+2. **No seller-side business-rule validation.** Accepting an `OrderGroup` does not check
+ inventory availability, credit limits, or contract terms against the `Offer`/
+ `InventoryRecord` — that's a manual seller decision via the accept/reject endpoint. Wiring
+ automatic stock/credit checks is a follow-up.
+3. **Master `Order.status` is a simplified rollup**, not itself authoritative: `DRAFT` until
+ submitted, `SUBMITTED` once submitted, then `OPEN` while any `OrderGroup` is not in a
+ terminal state, `COMPLETED` once every group is `COMPLETED`/`REJECTED`/`CANCELLED`, and
+ `PARTIALLY_FULFILLED` if groups ended in a mix of `COMPLETED` and
+ `REJECTED`/`CANCELLED`/`PARTIALLY_FULFILLED`. The `OrderGroup.status` per seller is the
+ real, authoritative lifecycle (Deel 17 §8-10 — fulfilment responsibility is per seller).
+4. **`unitPrice` and `currency` are snapshotted onto `OrderLine`** at order-creation time from
+ the `Offer` — later `Offer` price changes never retroactively change an existing order
+ (implied by "wat heeft deze klant daadwerkelijk besteld" in Deel 17 §2, but not stated
+ explicitly; a reasonable commerce-domain default).
+
+## Consequences
+
+- This is enough to place, split by seller, accept/reject, and progress an order end to end,
+ but is **not** a production commerce engine — no payment, no automatic stock reservation on
+ order acceptance (a follow-up would tie `OrderGroup` acceptance into
+ `InventoryRecord.reserved`, which is not wired up in this pass), no credit/contract checks.
+
+**Amendment (2026-08-19, product owner decision — asked directly via AskUserQuestion):**
+per-buyer MOQ is done (ADR-021) and closes one part of §14's checks. For the remaining two
+(credit limits, contract-term enforcement), three concrete options were put to the user,
+grounded in the actual schema: (a) build both on top of "outstanding order value" as a stand-in
+for real credit exposure (a new `SellerBuyerCreditLimit` model mirroring `OfferBuyerMinimum`,
+plus one enforceable field on `Offer.conditions`); (b) build credit limits only; (c) explicitly
+defer both until the payments decision (already tracked in `BACKLOG.md`'s "Explicitly NOT
+queued" section) is made, since a "credit limit" without any real payment/invoice ledger can
+only ever be a proxy metric (unpaid vs. paid orders look identical today — `Order.status`
+reaching `COMPLETED` says nothing about payment, per point 1 above), and "contract term
+enforcement" has no defined shape to enforce beyond the one field either option would invent
+ad hoc. The user chose (c): both remain explicitly deferred, not built, until a real
+payments/invoicing layer exists to hang "credit" and "contract terms" on. Building a proxy
+metric now would mean re-deriving it later once real payment data exists, rather than deriving
+it once, correctly, against the real thing.
diff --git a/docs/architecture/adr/adr-012-search-postgres-fts.md b/docs/architecture/adr/adr-012-search-postgres-fts.md
new file mode 100644
index 0000000000..0fe1648050
--- /dev/null
+++ b/docs/architecture/adr/adr-012-search-postgres-fts.md
@@ -0,0 +1,68 @@
+---
+title: "ADR-012: Search Uses PostgreSQL Full-Text Search for MVP"
+sidebar_label: "ADR-012"
+sidebar_position: 12
+---
+
+**Status:** Accepted for MVP; revisit when scale/query complexity requires it
+**Date:** 2026-08-16
+
+## Context
+
+Deel 19 describes a full CQRS-style discovery layer: core DB as source of truth, an event/
+change-log feeding a dedicated Search Index (Elasticsearch/OpenSearch/Solr) and a Graph,
+behind a separate eventually-consistent Discovery API. Constitution §29 explicitly permits
+starting with PostgreSQL and adding a dedicated search engine only when the use case requires
+it (§38 — no premature complexity/optimization).
+
+## Decision
+
+For this build pass, product search is implemented as a **synchronous PostgreSQL full-text
+search** directly against the `products` table (a generated `tsvector` column over name +
+description, combined with `ILIKE`/exact filters for category, status, attributes) — no
+separate index, no change-log/event pipeline, no eventual consistency, no Elasticsearch/
+OpenSearch dependency.
+
+The **OSPI Code Resolver** (`OSPI Code -> Product -> Manufacturer -> ...`, Deel 19 §1) is
+implemented as a straightforward endpoint that reuses `IdentityService.lookupCode` plus
+eager-loaded relations — not a separate "Graph" system.
+
+"Related products" (a tiny slice of what Deel 19 calls the OSPI Graph) is implemented as a
+simple query — other products sharing the same classification node or category — not a graph
+database or recommendation engine.
+
+## Consequences
+
+- Search is only as fast/relevant as PostgreSQL FTS allows. This is expected to need
+ replacing with a dedicated engine once catalogue size or query complexity (geo search,
+ faceting, "compatible with product Y" relationship queries from Deel 19 §3) exceeds what FTS
+ handles well — the README roadmap flags this explicitly so it isn't mistaken for "search is
+ done."
+- Because search reads directly from the transactional tables, there is no eventual-consistency
+ lag (a change is searchable immediately) — this is *stricter* than the target architecture,
+ not equivalent to it; don't assume the eventual-consistency behavior described in Deel 19 §6-7
+ once a real index is introduced later.
+
+## Amendment (2026-08-17): bounded network-wide search
+
+Product owner priority pick, among four follow-ups selected together with ADR-017 (document
+storage), ADR-018 (RBAC), and ADR-019 (bulk endpoints). `GET /search/products` previously only
+ever searched the caller's own organization; the original ADR text above flagged network-wide
+search as unimplemented because a full `SharingGrant` intersection per candidate row is
+expensive without a real index.
+
+`?scope=network` now exists as a deliberately **bounded** version of that: `SearchService`
+additionally includes products from any organization that granted the caller an ACTIVE,
+unexpired `PRODUCT_DATA` sharing grant (ADR-010) with `targetType` `ALL_PRODUCTS` or
+`PRODUCT_CATEGORY`. It resolves those grants with two ordinary (non-raw) Prisma queries first,
+then folds the resulting organization/category set into the existing raw-SQL query as a bounded
+`IN (...)` / row-constructor `IN (...)` condition — cheap, because the grant lookup is itself
+indexed and small (a caller has at most a handful of active grants), not because full-text
+search itself got any faster.
+
+**Individual `PRODUCT`-targeted grants are deliberately excluded** from `scope=network` — folding
+potentially thousands of single-product grants into this query would mean an unbounded `OR
+productId = ...` list per search, which is exactly the per-candidate-grant cost this ADR
+originally flagged as too expensive without a real index. Those grants remain reachable via the
+existing Partner endpoints (`sharing/partner.controller.ts`) and `resolveCode`, just not via this
+general listing query. `?scope=own` (still the default) is unaffected.
diff --git a/docs/architecture/adr/adr-013-dpp-public-access-token.md b/docs/architecture/adr/adr-013-dpp-public-access-token.md
new file mode 100644
index 0000000000..58a4234357
--- /dev/null
+++ b/docs/architecture/adr/adr-013-dpp-public-access-token.md
@@ -0,0 +1,57 @@
+---
+title: "ADR-013: DPP Public Access Uses a Dedicated High-Entropy Token, Not the Checksum"
+sidebar_label: "ADR-013"
+sidebar_position: 13
+---
+
+**Status:** Accepted — explicitly ratified by product owner (2026-08-17): the 256-bit token + rotation approach is sufficient as-is; no additional layer (temporary/expiring tokens, IP/geolocation restriction) requested.
+**Date:** 2026-08-17
+**Raised by:** product owner — a published DPP page must not be reachable by guessing/enumeration,
+without requiring a password (Deel 12's "scan a QR code" use case has no login step).
+
+## Context
+
+`GET /dpp/:id` (added when the DPP scaffold was built) exposes a PUBLISHED `DppRecord`
+without authentication. It was originally keyed by the record's own database ID (a random
+UUID). The product owner correctly flagged that the OSPI code checksum (ADR-004) must not be
+repurposed as the access barrier here: the checksum is only 3 characters — 32,768 possible
+values — and is explicitly documented (Deel 4 §25, and ADR-004 itself) as an error-detection
+mechanism, not a security mechanism. An attacker could enumerate every checksum value against
+a known code body in well under a second. Weakening the checksum's design to also serve as an
+access barrier would make it both a worse checksum and a worse access barrier.
+
+Using the database primary key (a v4 UUID, ~122 bits of entropy) as the sole public identifier
+was already reasonably resistant to brute-force guessing, but it conflates two different
+things: an internal row identifier, and a "possession of this link grants access" capability.
+That conflation makes it impossible to revoke a leaked link without deleting the underlying
+record, and ties a security property to a value (the primary key) that was never designed to
+carry one.
+
+## Decision
+
+Every `DppRecord` gets a dedicated `accessToken`: 256 bits of randomness
+(`crypto.randomBytes(32)`, base64url-encoded — same generation pattern already used for M2M
+API keys in `AuthService.createApiClient`), generated at record creation and stored in a
+unique, indexed column, **separate from both the database `id` and the OSPI code**.
+
+- The public endpoint moves from `GET /dpp/:id` to `GET /dpp/:accessToken` — the database `id`
+ is never exposed in the public/QR-code URL at all.
+- The token is the sole credential: no password, no login, matching the "scan and view" DPP
+ use case. Its entropy (2^256 possibilities) makes online enumeration infeasible regardless
+ of rate limiting, though rate limiting remains recommended defense-in-depth (still not
+ implemented anywhere in this build — see README known limitations).
+- A dedicated owner-only endpoint, `POST /dpp-records/:id/rotate-token`, regenerates the
+ token. This immediately invalidates every previously-issued QR code/link for that record —
+ the intended response to a suspected leak, without deleting the DPP record or its history.
+- Only `PUBLISHED` records are reachable this way at all (unchanged from the original design)
+ — `DRAFT`/`VALIDATING`/`VALID`/`SUSPENDED` records return 404 regardless of token.
+
+## Consequences
+
+- The checksum (ADR-004) is untouched and keeps its original, narrower job.
+- Owners must distribute the *token-bearing* URL (returned on record creation and on
+ rotation), not a URL built from the record's `id`. This is a breaking change to the DPP
+ controller's route shape — acceptable since nothing has been deployed yet.
+- A future rate-limiting layer (already flagged generally in the README) should still cover
+ this endpoint, as defense-in-depth against token-guessing is cheap insurance even though the
+ entropy alone makes it impractical today.
diff --git a/docs/architecture/adr/adr-014-code-resolution-visibility.md b/docs/architecture/adr/adr-014-code-resolution-visibility.md
new file mode 100644
index 0000000000..e4dfba96ae
--- /dev/null
+++ b/docs/architecture/adr/adr-014-code-resolution-visibility.md
@@ -0,0 +1,97 @@
+---
+title: "ADR-014: OSPI Codes Are Identifiers, Not Secrets — Visibility on Code Resolution Follows Document.visibility, Not a Login Wall"
+sidebar_label: "ADR-014"
+sidebar_position: 14
+---
+
+**Status:** Accepted
+**Date:** 2026-08-17
+**Raised by:** product owner — questioned whether checksum + serial number together provide
+real guessing-resistance, then (correctly) pushed back that the same product data is often
+already public on the producer's own website, so an auth wall on `resolve/:code` might be
+solving nothing while breaking the spec's no-login "scan a code" use case.
+
+## Context
+
+Following ADR-013 (DPP access token), a related but distinct question came up: does the OSPI
+code itself — specifically the combination of the checksum (ADR-004) and the serial/batch
+segment — provide a meaningful security barrier for `GET /search/resolve/:code`
+(structural + existence resolution of a code, Deel 4 §26-27 / Deel 19 §1)?
+
+**The checksum contributes zero guessing-resistance, even combined with anything else.** It is
+CRC-16/CCITT-FALSE, a deterministic, publicly documented, publicly computable function of the
+other segments (ADR-004). An attacker does not need to guess the checksum for a candidate code
+body — they compute it. "Checksum + serial" therefore has exactly the same guessing-resistance
+as the serial alone; the checksum adds nothing to that combination, by design (its job is
+transcription-error detection, not access control).
+
+The real predictability question is `companyProductId` (`CCCCCCCC`) and `serialBatch`
+(`EEEEEEEE`). Per Deel 4 §14, `companyProductId` is producer-assigned and explicitly meant to
+map onto the producer's own internal numbering — which is very often sequential. `serialBatch`
+defaults to a fixed `00000000` placeholder when a producer doesn't use per-unit serialization
+(ADR-008). So a determined caller absolutely can enumerate plausible codes for a known producer
+code + category.
+
+The first fix considered was requiring authentication on `resolve/:code`, mirroring
+`IdentityController.lookupCode` (which was already behind auth). On reflection, prompted
+directly by the product owner, that fix is both too strong and not actually targeted at the
+real problem:
+
+- **Too strong**: Deel 4 §26-27 describes resolving a code as a no-login "scan and see what it
+ is" action — the same use case ADR-013 already protected for DPP specifically. Slapping a
+ login wall on general code resolution breaks that for the *entire* endpoint, not just the
+ sensitive parts of it.
+- **Not targeted**: the basic identity fields this endpoint returns (code exists, product name,
+ category, manufacturer) are frequently *already public* on the producer's own website or
+ packaging — that's not the data this decision needs to protect. What actually varies in
+ sensitivity is attached `Document`s, which already carry a producer-set `visibility`
+ (`PUBLIC` / `RESTRICTED` / `PRIVATE`) — a mechanism that predates this ADR but was, before
+ this change, not being enforced correctly on this endpoint (`RESTRICTED` documents were
+ returned to every caller, anonymous or not).
+
+## Decision
+
+`GET /search/resolve/:code` stays reachable without authentication (`@OptionalAuth()`, a new
+guard mode: validates a token if one is present, but does not require one — see
+`src/common/decorators/index.ts` / `src/common/guards/auth.guard.ts`). Basic identity data is
+treated as public registry data, comparable to looking up a GS1 GTIN — the producer chose to
+register it, and its existence is not meant to be a secret.
+
+What actually gates exposure is `Document.visibility`, now enforced correctly:
+
+- `PUBLIC` documents: returned to every caller, anonymous included.
+- `RESTRICTED` documents: returned only once `SharingService.hasAccess(ownerOrgId,
+ callerOrgId, 'CONTENT', product)` (ADR-010) confirms the caller's organization is the owner
+ or holds an active `CONTENT` sharing grant. Anonymous callers and unrelated organizations
+ never see these, regardless of how they found the code.
+- `PRIVATE` documents: never returned via this endpoint, full stop.
+
+This makes the producer's own per-document visibility choice the actual access-control
+boundary — "as indicated in the docs, the producer decides what's public" — rather than
+relying on the code being hard to guess, and rather than an all-or-nothing login wall.
+
+Enumeration/bulk-scraping risk from predictable `companyProductId`/`serialBatch` values is
+real but is explicitly **not** solved by this ADR — see Consequences. It is a rate-limiting /
+abuse-detection problem, not a data-classification problem, and neither this endpoint nor any
+other in this build has rate limiting yet (README known limitations).
+
+## Consequences
+
+- `resolve/:code`'s anonymous behavior is now correct relative to what it already exposed for
+ every non-`PUBLIC` document before this change (a regression this ADR happens to fix, not
+ just a proactive hardening).
+- The same visibility logic does **not** retroactively apply to `DppRecord.compose()`
+ (ADR-013), which still returns `PUBLIC` + `RESTRICTED` documents to anyone holding a valid
+ access token. That's a deliberate difference, not an inconsistency: possession of a DPP
+ token is itself evidence of a legitimate reason to view that specific passport (it was
+ handed out once, per record, and is revocable), whereas mere knowledge of an OSPI code is
+ not — codes are structurally guessable and are not credentials.
+- A producer whose `companyProductId` numbering is sequential can still have their catalog's
+ *basic identity* (name/category/manufacturer, for `PUBLIC`-classified products) enumerated by
+ someone iterating candidate codes — this ADR does not prevent that, because that data is
+ treated as intentionally public. If a producer wants their catalog to not be bulk-enumerable
+ at all, the mitigation is rate limiting on this endpoint (still a README-flagged gap, not yet
+ built) or non-sequential `companyProductId` assignment — not a login wall on lookups, which
+ the product owner correctly identified would not have matched the intended use case anyway.
+- `SearchModule` now depends on `SharingModule` (previously only `IdentityModule`) to reach
+ `SharingService.hasAccess`.
diff --git a/docs/architecture/adr/adr-015-pricing-vs-serialization.md b/docs/architecture/adr/adr-015-pricing-vs-serialization.md
new file mode 100644
index 0000000000..4d5c03e228
--- /dev/null
+++ b/docs/architecture/adr/adr-015-pricing-vs-serialization.md
@@ -0,0 +1,99 @@
+---
+title: "ADR-015: Pricing/Checkout Resolve at SKU Level, Never at Serial/Batch Level"
+sidebar_label: "ADR-015"
+sidebar_position: 15
+---
+
+**Status:** Accepted
+**Date:** 2026-08-17
+**Raised by:** product owner — a checkout/POS system will not always receive the full OSPI code,
+since not every serial number is sent to every register; pricing must not depend on it.
+
+## Context
+
+The product owner correctly observed that point-of-sale/checkout systems generally do not carry
+a product's full, per-unit identity — not every physical unit's serial number is transmitted to
+every register — and asked whether the OSPI code needs to change to accommodate this.
+
+Re-reading the code format against the actual schema surfaced two real problems, only one of
+which the code format itself has anything to do with:
+
+1. **The code format already separates the two concerns**, and didn't need to change.
+ `AAAA-BBBBBB-CCCCCCCC-DDDD` (Producer-Category-CompanyProductId-Variant) is the SKU-level
+ identity — what a price is set against. `EEEEEEEE` (Serial/Batch) is a unit-level identity
+ layered on top, and already defaults to a fixed `00000000` placeholder when unused
+ (ADR-008). A checkout system that only ever sees the SKU-level segments (or a code with the
+ serial segment left at its placeholder) was already a valid, spec-compliant scenario.
+
+2. **The schema, as built, did not actually implement that separation correctly.**
+ `OspiIdentity` carried `variantCode` and `serialBatch` as fields, but its uniqueness
+ constraint was `@@unique([producerCodeId, companyProductId])` — no variant, no serial. In
+ practice this meant **at most one OSPI identity could ever be issued per companyProductId,
+ full stop**. Issuing a second code for a different variant, let alone one per serialized
+ unit, would immediately collide on this constraint. `variantCode`/`serialBatch` were fields
+ in name only.
+
+ Separately, `Offer` (where price lives) referenced only `productId`, with no way to price a
+ variant differently from its sibling variants — a real gap regardless of serialization,
+ since different sizes/colors/configurations of the same product routinely have different
+ prices.
+
+## Decision
+
+**SKU-level identity** (what pricing/checkout resolve against) now spans Producer + Category +
+CompanyProductId + Variant:
+
+- `OspiIdentity`'s uniqueness is now `@@unique([producerCodeId, companyProductId, variantCode])`
+ — one identity per producer + companyProductId + variant, serial/batch deliberately excluded.
+- `ProductVariant` gets its own `ospiIdentityId` — a variant carries its own full OSPI code
+ (its own barcode/label), independent of the parent Product's code. `sku` stays as an
+ additional internal label alongside the OSPI code, not a substitute for it.
+ **Amendment (2026-08-17, product owner decision):** originally `ospiIdentityId` was optional
+ (mint one only if the producer explicitly needed a distinct code for that variant). The
+ product owner decided every variant should always get its own code — closer to how GS1/GTIN
+ is used in practice (each size/color = its own barcode), and more consistent with ADR-005's
+ decision to position OSPI as an independent standard rather than an internal-only feature.
+ `ProductVariant.ospiIdentityId` is now **required**, not optional; `POST /products/:id/variants`
+ now requires exactly one of `identity`/`ospiIdentityId` (previously either could be omitted),
+ mirroring the validation `POST /products` already used for the base product.
+- `Offer` gets an optional `variantId` — a price can now target a specific variant instead of
+ only the base product. `OrderLine` snapshots `variantId` alongside the existing
+ `sellerOrganizationId` denormalization, for the same reason (known at order time, before any
+ grouping/fulfillment exists).
+
+**Unit-level identity** (a specific physical item or batch's real serial number) is explicitly
+**not** part of `OspiIdentity`/`Product`/`Offer` at all. A new `SerializedUnit` table holds it:
+`{ productId, variantId?, serialBatch, fullCode }`, where `fullCode` is computed once at
+registration by substituting the real serial into the parent Product/Variant's other segments
+and recomputing the checksum (`ospi-code.util.buildOspiCode`), then stored. Registering the same
+serial twice for the same product/variant produces the *identical* `fullCode` and collides on
+its `@unique` constraint — that, not a compound key over a nullable `variantId` (which Postgres
+would treat as always-distinct on `NULL`), is what actually prevents duplicates.
+
+This means: pricing, catalog search, and checkout all key off `Product`/`ProductVariant`, and
+never need a serial number to function — matching the product owner's requirement directly.
+`SerializedUnit` exists purely for traceability, warranty, recalls, and per-item DPP linkage,
+where a specific physical item's identity does matter.
+
+## Consequences
+
+- Existing `POST /products` / `POST /ospi-identities` behavior for products without variants is
+ unchanged — this only adds capability, it doesn't require every product to define variants or
+ register serialized units.
+- `POST /products/:id/variants` now optionally accepts the same `identity`/`ospiIdentityId`
+ shape `POST /products` already accepted, to mint a variant's own code.
+- `POST /offers` now optionally accepts `variantId`.
+- New endpoints: `POST /products/:id/serialized-units` (register a unit's real serial),
+ `GET /products/:id/serialized-units` (list). Both require authentication and ownership of the
+ product — there is deliberately no public lookup-by-serial endpoint in this build. If one is
+ ever added, it should follow ADR-014's pattern (`@OptionalAuth()` + `Document.visibility`-style
+ gating), not reuse the serial's guessability as a security property, for the same reasons
+ ADR-013/014 already established for DPP/catalog resolution.
+- `SerializedUnit` is a new RLS-protected, owner-organization-only table (`prisma/sql/rls.sql`)
+ — no cross-org visibility rule exists for it yet; add one via the Sharing model (ADR-010) if a
+ future use case needs a partner to see another org's serialized units (e.g. drop-shipping).
+- This is a breaking schema change relative to the pre-ADR-015 build (nothing has been deployed
+ yet, so no migration-compatibility concern) — `OspiIdentity`'s uniqueness constraint changing
+ shape means any already-issued identities that happened to collide on the old, broader
+ constraint would need re-evaluation, though none exist yet in this sandbox (no database was
+ ever reachable to issue any).
diff --git a/docs/architecture/adr/adr-016-rate-limiting.md b/docs/architecture/adr/adr-016-rate-limiting.md
new file mode 100644
index 0000000000..3608e59f94
--- /dev/null
+++ b/docs/architecture/adr/adr-016-rate-limiting.md
@@ -0,0 +1,63 @@
+---
+title: "ADR-016: In-Memory, Opt-In Rate Limiting on Unauthenticated Endpoints"
+sidebar_label: "ADR-016"
+sidebar_position: 16
+---
+
+**Status:** Accepted — explicitly ratified by product owner (2026-08-17): a single-process, non-distributed limiter is acceptable for first launch; upgrading to a Redis-backed distributed limiter is deferred until it's actually needed, not a launch blocker.
+**Date:** 2026-08-17
+
+## Context
+
+ADR-013 (DPP public access token), ADR-014 (code resolution visibility), and ADR-015
+(serialized units) each flagged the same follow-up: no rate limiting exists anywhere in this
+build, and several endpoints are reachable without authentication (`GET /dpp/:accessToken`,
+`GET /search/resolve/:code`) or without it being required (`POST /auth/login`,
+`POST /auth/register`, `POST /auth/refresh`). Entropy alone (DPP's 256-bit token) or a
+producer's own visibility choice (`resolve/:code`'s `Document.visibility` enforcement) reduces
+what an attacker gains from guessing, but neither stops someone from simply making a very large
+number of requests — that has always needed a request-rate control, not an access-control one.
+
+The normal production answer (`@nestjs/throttler` backed by Redis, or an edge/CDN-level
+limiter) isn't buildable in this sandbox: there is no network access to install new npm
+packages, and Redis itself isn't provisioned (ADR-001 already deferred Redis/BullMQ until the
+first async job needed it). Waiting for that infrastructure before shipping any rate limiting
+at all would leave the endpoints above with zero request-rate protection indefinitely.
+
+## Decision
+
+A small, dependency-free `RateLimitGuard` (`src/common/guards/rate-limit.guard.ts`), registered
+as a fourth global guard alongside `AuthGuard`/`PermissionsGuard`. It is **opt-in**: a route is
+only limited if annotated with `@RateLimit({ points, windowSeconds })`; every other route is an
+unaffected pass-through. Applied to:
+
+- `POST /auth/register` (10/min), `POST /auth/login` (10/min), `POST /auth/refresh` (20/min) —
+ classic brute-force/abuse targets, `@Public()` by necessity.
+- `GET /search/resolve/:code` (30/min) — the endpoint ADR-014 explicitly reasoned should stay
+ reachable without login, with rate limiting as the actual mitigation against
+ `companyProductId` enumeration (not the login wall ADR-014 deliberately avoided).
+- `GET /dpp/:accessToken` (60/min, higher allowance) — token entropy is already the primary
+ defense (ADR-013); this is defense-in-depth, not the main control, hence the looser limit.
+
+Enforcement is a fixed-window counter, keyed by organization for authenticated callers
+(`request.principal.organizationId`, so one shared office IP doesn't throttle an entire
+authenticated org) and by IP for unauthenticated callers (`x-forwarded-for` first hop, falling
+back to the socket address) — which is the case that actually matters for the endpoints above,
+since none of them require a principal to be reachable at all.
+
+## Consequences
+
+- **Explicitly not distributed.** Each API process holds its own in-memory counters. With N
+ processes behind a load balancer, the effective per-caller limit is `points * N`, not
+ `points`. This is a real, stated limitation — acceptable for a single-process MVP deployment
+ or as defense-in-depth behind an edge/CDN limiter, but **must be replaced with a Redis-backed
+ limiter before this build runs as more than one process in production.**
+- `x-forwarded-for` is trusted as given — this build has no reverse-proxy configuration that
+ strips/normalizes it, so a client could in principle spoof it to evade IP-based limiting when
+ not sitting behind a proxy that overwrites the header. A production deployment must ensure
+ only the actual edge proxy can set this header.
+- Memory is bounded opportunistically (a sweep of expired entries triggers once the tracked-key
+ count crosses 50,000) rather than via a scheduled job — acceptable at MVP scale, worth
+ revisiting if this becomes a high-traffic public surface.
+- `429 Too Many Requests` responses use this build's standard error envelope (`{ error: { code:
+ 'RATE_LIMITED', message } }`), consistent with `GlobalExceptionFilter`.
diff --git a/docs/architecture/adr/adr-017-document-storage-abstraction.md b/docs/architecture/adr/adr-017-document-storage-abstraction.md
new file mode 100644
index 0000000000..8c5b791dc2
--- /dev/null
+++ b/docs/architecture/adr/adr-017-document-storage-abstraction.md
@@ -0,0 +1,68 @@
+---
+title: "ADR-017: Object Storage via a Swappable Interface, Local-Disk Implementation for Now"
+sidebar_label: "ADR-017"
+sidebar_position: 17
+---
+
+**Status:** Accepted
+**Date:** 2026-08-17
+**Raised by:** product owner priority pick, among four follow-ups selected together with ADR-018 (RBAC), ADR-019 (bulk endpoints), and the network-wide search extension of ADR-012.
+
+## Context
+
+Before this, `Document.storageRef` was a caller-supplied opaque string with nothing behind it —
+there was no `POST /documents/upload`, only `POST /documents` registering *metadata* the caller
+promised pointed at a file stored somewhere else. A real S3/GCS/Azure Blob integration is the
+obvious real answer, but this build environment has no cloud credentials and no network access
+to install a cloud SDK or verify it against a real bucket — the same constraint documented
+throughout this session (see README "Known limitations").
+
+## Decision
+
+`DocumentStorageService` (`src/documents/storage/document-storage.interface.ts`) is the seam:
+`upload(...)`, `getDownloadUrl(...)`, `delete(...)`. `DocumentsService` and every controller are
+written against this interface, not a concrete implementation.
+
+`LocalDocumentStorageService` is the current binding (`DocumentsModule`'s `DOCUMENT_STORAGE`
+provider) — a **real, working implementation**, not a stub: it actually writes bytes to disk
+(`DOCUMENT_STORAGE_DIR`, default `./storage/documents`) and reads them back. It is not a fake
+that returns made-up URLs. What it is not: cloud-backed, distributed across multiple app
+instances, or backed by anything with built-in redundancy — it's exactly as durable as the
+single machine's disk it runs on.
+
+- `POST /documents/upload` accepts `{ name, filename, mimeType, contentBase64, productId?,
+ visibility? }`, decodes and stores the content, then creates the `Document` metadata row in
+ one call — collapsing the previous two-step "upload elsewhere, then register" flow.
+- Content travels as base64 in a JSON body, not `multipart/form-data`. A real multipart path
+ (via `@nestjs/platform-express`'s `FileInterceptor`) needs the `multer` package, which isn't
+ in `package.json` and can't be installed here (no network access) — using it without
+ installing it would mean shipping code that references a dependency nobody has verified
+ resolves. Base64-in-JSON needed zero new dependencies (built-in `Buffer`/`fs` only) and is a
+ real, working upload path today. A capped size (20MB, `MAX_UPLOAD_BYTES` in
+ `documents.service.ts`) keeps this reasonable for spec sheets/certificates/images; large media
+ should get a real multipart/streaming path before this is used for anything bigger.
+- `GET /documents/:id/download-url` resolves a document to a fetchable reference. Today that's
+ a local filesystem path (no web server exposes the storage directory as an HTTP path in this
+ build) — a real deployment replaces this with either a static-file route or a signed,
+ time-limited URL, which is exactly what `getDownloadUrl` on a real cloud implementation would
+ return natively without changing its call sites.
+- `storageRef` format is `local://` — always a freshly generated UUID on disk, never
+ the caller-supplied filename, so a crafted filename can't path-traverse out of the storage
+ directory. Verified directly (not just by inspection): a standalone script wrote a file,
+ round-tripped its exact byte content back, confirmed a `local://../../etc/passwd`-style
+ reference is rejected, and confirmed delete actually removes the file.
+
+## Consequences
+
+- Swapping in a real cloud backend later is one new class implementing `DocumentStorageService`
+ plus changing the `DOCUMENT_STORAGE` provider binding in `DocumentsModule` — `DocumentsService`
+ and every controller stay untouched.
+- **Not production-durable as-is.** Local disk means: no redundancy, doesn't survive the
+ container/VM being replaced, and doesn't work correctly with more than one API process unless
+ they share a filesystem (e.g. a mounted volume) — the same "not distributed" caveat ADR-016's
+ rate limiter already carries, for the same underlying reason (no infrastructure available to
+ install/verify a distributed alternative here).
+- `storage/` is gitignored — uploaded file bytes should not end up in the repository.
+- `MAX_UPLOAD_BYTES` (20MB) and base64-in-JSON are an MVP-scale choice, not a permanent one; a
+ multipart/streaming path is the right follow-up once `multer` (or an equivalent) can actually
+ be installed and tested.
diff --git a/docs/architecture/adr/adr-018-fine-grained-rbac.md b/docs/architecture/adr/adr-018-fine-grained-rbac.md
new file mode 100644
index 0000000000..0829567303
--- /dev/null
+++ b/docs/architecture/adr/adr-018-fine-grained-rbac.md
@@ -0,0 +1,57 @@
+---
+title: "ADR-018: Role Management Layer on the Existing RBAC Schema"
+sidebar_label: "ADR-018"
+sidebar_position: 18
+---
+
+**Status:** Accepted
+**Date:** 2026-08-17
+**Raised by:** product owner priority pick, among four follow-ups selected together with ADR-017 (document storage), ADR-019 (bulk endpoints), and the network-wide search extension of ADR-012.
+
+## Context
+
+The `Role`/`UserRole` schema (flat `permissions: string[]` per role, many-to-many to `User`) has
+supported custom, org-scoped roles since the original build — but nothing ever *used* that
+flexibility. `AuthService.register` created exactly one role, ever: an Owner role with
+`permissions: ['*']`, and no endpoint existed to create another role, list roles, or assign/
+revoke one from a user. Every organization's first (and only) user had unconditional access to
+everything, with no way to add a second user with narrower access.
+
+## Decision
+
+A management layer on top of the unchanged schema and unchanged `PermissionsGuard` enforcement
+(still a flat string-list membership check; `'*'` still means everything):
+
+- `src/auth/permissions.ts` — a canonical `PERMISSIONS` catalogue, generated by auditing every
+ `@RequirePermissions(...)` call actually enforced in the codebase (`producers:write`,
+ `products:write`, `orders:write`, `offers:write`, `connections:write`, `inventory:write`,
+ `org:manage`, `dpp:manage`, `documents:write`, `attributes:write`, `classification:manage`,
+ `sharing:write`, plus the new `roles:manage` this ADR introduces). `CreateRoleDto` validates
+ against this list (`@IsIn(PERMISSIONS, { each: true })`) — a custom role can't be created with
+ a permission string that doesn't actually gate anything, which would otherwise silently look
+ like it grants access it doesn't.
+- `POST /roles` (requires `roles:manage`) — create a custom role scoped to the caller's org.
+- `GET /roles` — list roles visible to the caller (system roles with `organizationId: null`,
+ none seeded yet, plus the caller's own org's roles).
+- `POST /users/:userId/roles` / `DELETE /users/:userId/roles/:roleId` (both require
+ `roles:manage`) — assign/revoke a role for a user in the caller's org.
+- `GET /users/:userId/roles` — list a user's current roles.
+- Revoking a user's **last** role is rejected (`LAST_ROLE`) — leaving a user with zero roles
+ would leave them unable to pass any `@RequirePermissions(...)` check at all, effectively
+ locking them out silently rather than through an explicit, visible action (e.g. suspending the
+ user via the existing `UserStatus` field).
+
+## Consequences
+
+- This is additive to the existing model, not a redesign — `AuthService.register`'s Owner-role
+ seeding is unchanged, so every organization still starts with one fully-privileged user, and
+ nothing about existing token validation/permission checking changed.
+- This is still the flat "permissions[] on Role" model, not the fuller resource/action/scope
+ matrix Deel 21 describes (e.g. permissions scoped to a specific product category, or
+ conditional on ownership). That remains a further follow-up if a real use case needs it —
+ this ADR closes the "there's no way to create a second, narrower role at all" gap, not the
+ entire RBAC design space.
+- `roles:manage` itself is only held by the wildcard `'*'` Owner role today, since no other role
+ exists yet in a fresh organization — an org's first admin action to actually use this feature
+ is creating a role and assigning it, which was already true of every other permission before
+ this ADR.
diff --git a/docs/architecture/adr/adr-019-synchronous-bulk-endpoints.md b/docs/architecture/adr/adr-019-synchronous-bulk-endpoints.md
new file mode 100644
index 0000000000..2d2e21b442
--- /dev/null
+++ b/docs/architecture/adr/adr-019-synchronous-bulk-endpoints.md
@@ -0,0 +1,54 @@
+---
+title: "ADR-019: Synchronous, Bounded Bulk Endpoints — Not a Job Queue"
+sidebar_label: "ADR-019"
+sidebar_position: 19
+---
+
+**Status:** Accepted
+**Date:** 2026-08-17
+**Raised by:** product owner priority pick, among four follow-ups selected together with ADR-017 (document storage), ADR-018 (RBAC), and the network-wide search extension of ADR-012.
+
+## Context
+
+Every product/identity/serialized-unit creation endpoint in this build was one-at-a-time. A
+producer onboarding an existing catalog, or registering a batch of serial numbers, would need
+one HTTP round-trip per row — real friction at any real catalog size. The correct long-term
+answer is an async job queue (BullMQ + Redis, already anticipated as deferred infrastructure by
+ADR-001), but Redis isn't provisioned in this build and there's no network access to install
+BullMQ or verify a queue actually processes jobs — the same recurring constraint as ADR-016's
+rate limiter and ADR-017's document storage.
+
+## Decision
+
+Two new endpoints, both synchronous (the request doesn't return until every item in the batch
+has been attempted) and both bounded:
+
+- `POST /products/bulk` (`BulkCreateProductDto`, max 500 items/call) — loops
+ `ProductsService.create` per item.
+- `POST /products/:id/serialized-units/bulk` (`BulkRegisterSerializedUnitDto`, max 1000
+ items/call) — loops `SerializedUnitsService.register` per item.
+
+Both use a **partial-success model**: each item gets its own `{ success, ... }` outcome in the
+response (`{ total, succeeded, failed, results: [...] }`) rather than the whole batch aborting
+on the first bad row. A 500-row import failing entirely because row #499 had a typo'd category
+code would be a materially worse experience than a per-row report the caller can act on —
+this mirrors how a CSV import tool typically reports results, not how a single atomic
+transaction behaves.
+
+## Consequences
+
+- **Not a queue.** The caller's HTTP connection stays open for the whole batch — for 500
+ sequential `Product` creations (each itself doing an `OspiIdentity` insert +
+ `Product` insert + audit log write), this could be a multi-second request. There is no
+ progress reporting, no resumability if the connection drops mid-batch (already-created items
+ stay created; the caller would need to retry only the failed indices from the response), and
+ no true concurrency — items are processed one at a time, in order, deliberately, since
+ concurrent writes to the same producer's `ProducerCode`/`companyProductId` uniqueness space
+ could otherwise race in confusing ways.
+- The 500/1000 item caps exist specifically because this is synchronous — they are not
+ arbitrary, they're sized to keep a single request's duration bounded. Real bulk import
+ (10,000+ row catalogs, which the Constitution's target scale absolutely implies) still needs
+ the async job queue this ADR does not build.
+- Each bulk item reuses the exact same validation/authorization path as its single-item
+ endpoint (`ProductsService.create`, `SerializedUnitsService.register`) — there is no separate,
+ possibly-inconsistent bulk-specific validation logic to keep in sync.
diff --git a/docs/architecture/adr/adr-020-category-registry-governance.md b/docs/architecture/adr/adr-020-category-registry-governance.md
new file mode 100644
index 0000000000..812b2d6008
--- /dev/null
+++ b/docs/architecture/adr/adr-020-category-registry-governance.md
@@ -0,0 +1,83 @@
+---
+title: "ADR-020: Category Registry Governance — Proposal & Approval"
+sidebar_label: "ADR-020"
+sidebar_position: 20
+---
+
+**Status:** Accepted
+**Date:** 2026-08-17
+**Raised by:** user decision (asked directly via AskUserQuestion; option chosen: "Voorstel & goedkeuring" / proposal & approval), backlog item 1.
+
+## Context
+
+`Category` has always supported `organizationId: null` as a "global/shared" category alongside
+normal org-scoped ones (see `prisma/sql/rls.sql`'s long-standing comment on the categories
+policy), but nothing ever created one — `ProductsService.createCategory` always wrote the
+caller's own `organizationId`. Deel 11 (Classification, Taxonomy & Attribute Engine) describes a
+shared category registry as part of the platform's value proposition — buyers and sellers on
+different tenants should be able to converge on the same categories rather than each maintaining
+a private, incompatible taxonomy. The open question was governance: who is allowed to add to the
+*shared* registry, and does it require review.
+
+Three options were put to the user directly: (a) first-write-wins, anyone can propose a global
+category and it's live immediately; (b) proposal & approval, a global category starts pending and
+needs a reviewer to approve it; (c) platform-managed only, no tenant can ever add to the shared
+registry at all. The user chose (b).
+
+## Decision
+
+- New `CategoryStatus` enum: `PENDING`, `APPROVED`, `REJECTED`.
+- Org-scoped categories (`organizationId` set) are **unchanged**: always private to that org,
+ always auto-`APPROVED`, no review step. This ADR only touches the `organizationId: null` case.
+- `CreateCategoryDto` gains an optional `scope: 'organization' | 'global'` (defaults to
+ `'organization'`). Requesting `'global'` creates a row with `organizationId: null`,
+ `status: PENDING`, `proposedByOrganizationId` set to the caller's org.
+- A new permission, `categories:govern`, gates three new endpoints: `GET /categories/pending`,
+ `POST /categories/:id/approve`, `POST /categories/:id/reject` (with a required
+ `rejectionReason` on reject).
+- `listCategories()` (the normal, unauthenticated-by-permission listing every product-creation
+ flow uses) excludes other organizations' non-`APPROVED` global proposals — a pending or
+ rejected global category is invisible outside `GET /categories/pending` until a reviewer acts.
+- `ProductsService.create()`'s `categoryId` validation rejects any category that isn't
+ `APPROVED` with `CATEGORY_NOT_APPROVED` — a product can never reference a still-pending or
+ rejected global category, closing the obvious race (propose a category, immediately tag a
+ product with it before anyone reviews it).
+
+## Consequences
+
+- **Amendment (2026-08-19, product owner decision — asked directly via AskUserQuestion,
+ option chosen: "Echt platform-tenant-concept bouwen" / build a real platform-tenant concept):**
+ the risk below is now closed, not just documented. `PlatformOperatorGuard`
+ (`src/common/guards/platform-operator.guard.ts`) is a second, independent check stacked on top
+ of `@RequirePermissions('categories:govern')` via a new `@RequirePlatformOperator()` decorator
+ on all three governance routes (`GET /categories/pending`, `POST /categories/:id/approve`,
+ `POST /categories/:id/reject`): holding the `categories:govern` permission string is no longer
+ sufficient on its own, the caller's **organization** must also match `PLATFORM_OPERATOR_ORG_ID`.
+ This is deliberately an environment-variable/deployment setting, not a database flag on
+ `Organization` with an API write path — any endpoint that could flip "is the platform operator"
+ on an org would itself be a self-service privilege-escalation hole (the exact class of bug
+ found and fixed the previous day in `POST /auth/api-clients`, see README). The guard fails
+ closed: an unset/empty `PLATFORM_OPERATOR_ORG_ID` denies every organization rather than
+ silently defaulting to "everyone" or "no one checks." Verified end-to-end over real HTTP: with
+ no env var set, even an org's own `'*'`-holding Owner gets `403 NOT_PLATFORM_OPERATOR`; with
+ the env var set to org A, org A can list/approve/reject global proposals while org B (including
+ attempting to approve its *own* proposal) correctly still gets `403`.
+- The original risk, for context: every `User` belongs to exactly one `Organization`, and
+ `PermissionsGuard` checks a flat permission-string membership — it is not itself org-scoped
+ (only application code that reads `principal.organizationId` enforces tenant boundaries). That
+ meant `categories:govern` was, by construction, a **cross-org-by-permission** capability:
+ whichever organization's role held it could approve or reject *any* organization's global
+ proposals, because a global proposal has no owning org to scope against. Now closed by
+ `PlatformOperatorGuard` above.
+- The pre-existing `@@unique([organizationId, code])` does not prevent two different global
+ (`organizationId = NULL`) proposals from colliding on the same `code`, because Postgres treats
+ each `NULL` as distinct for uniqueness purposes — the same class of gap ADR-015 hit with
+ `SerializedUnit`. Fixed here with a partial unique index
+ (`prisma/sql/category-registry-constraints.sql`, `WHERE "organizationId" IS NULL`) applied
+ manually alongside migrations, per the existing `rls.sql` convention. Verified live
+ (2026-08-19) against a real Postgres instance: two `INSERT`s of global (`organizationId NULL`)
+ categories sharing the same `code` correctly hit `duplicate key value violates unique
+ constraint "categories_global_code_unique"`.
+- Rejected global proposals are kept (not deleted), with `reviewedByUserId`, `reviewedAt`, and
+ `rejectionReason` recorded, so the proposing org can see why and a re-proposal under a
+ different code is auditable against the earlier attempt.
diff --git a/docs/architecture/adr/adr-021-per-buyer-offer-minimum.md b/docs/architecture/adr/adr-021-per-buyer-offer-minimum.md
new file mode 100644
index 0000000000..4258e7d1ef
--- /dev/null
+++ b/docs/architecture/adr/adr-021-per-buyer-offer-minimum.md
@@ -0,0 +1,50 @@
+---
+title: "ADR-021: Per-Buyer Minimum Order Quantity Override"
+sidebar_label: "ADR-021"
+sidebar_position: 21
+---
+
+**Status:** Accepted
+**Date:** 2026-08-17
+**Raised by:** user decision (asked directly via AskUserQuestion; option chosen: "Uitgebreide MOQ per koper" / extended MOQ per buyer), backlog item 4.
+
+## Context
+
+`Offer.minimumQuantity` is a single value applying to every buyer of that offer. Deel 17
+(Ordering & Commerce API) and real B2B practice both call for sellers to negotiate different
+minimums per buyer relationship (a long-standing distributor gets a lower MOQ than a new,
+unverified buyer) without maintaining a second, near-duplicate `Offer` row per relationship. Three
+options were put to the user directly: (a) leave it as a single platform-wide minimum per offer
+(status quo, no change); (b) let a buyer request an exception negotiated through a message/
+approval flow; (c) let the seller directly set a per-buyer override value. The user chose (c).
+
+## Decision
+
+- New `OfferBuyerMinimum` model: `(offerId, buyerOrganizationId)` unique pair, one
+ `minimumQuantity` value, owned/writable only by the offer's seller.
+- `POST /offers/:id/buyer-minimums` (seller-only, `offers:write`) upserts an override for one
+ buyer org — calling it again for the same buyer replaces the previous value, it does not stack.
+- `GET /offers/:id/buyer-minimums` / `DELETE /offers/:id/buyer-minimums/:buyerOrganizationId`
+ round out seller-side management; both are also seller-only.
+- `OrdersService.addLine()` now resolves `effectiveMinimum` as: the caller's own
+ `OfferBuyerMinimum` override if one exists for `(offer, principal.organizationId)`, else the
+ offer's own `minimumQuantity`. The override **replaces**, it does not add to or floor against,
+ the offer-level minimum — a seller sets exactly one effective threshold per buyer, never two
+ thresholds a buyer would need to satisfy simultaneously.
+
+## Consequences
+
+- A seller can grant a buyer a *lower* MOQ (the common case — a trusted distributor) or a
+ *higher* one (e.g. a buyer the seller wants to discourage from small orders) — the model does
+ not constrain the direction, only that it's a single seller-controlled number per buyer.
+- Buyers cannot see other buyers' overrides (the RLS policy on `offer_buyer_minimums` scopes read
+ access to the seller, or to the specific buyer org the row belongs to) — a buyer only ever sees
+ their own effective minimum via the normal offer/order flow, not a competitor's negotiated
+ terms.
+- No notification or negotiation flow exists — the seller sets the number unilaterally. Option
+ (b) (buyer-initiated request/approval) was explicitly not chosen and would need its own ADR if
+ a future backlog item calls for it.
+- Deleting an override silently falls back to the offer's own `minimumQuantity` — there is no
+ "removed override, buyer now blocked entirely" state; removing an override can only ever raise
+ or lower a buyer's effective minimum back to the offer default, never revoke ordering access
+ outright (that remains a separate concern — sharing grants / offer withdrawal).
diff --git a/docs/architecture/adr/adr-022-rule-based-sharing-scopes.md b/docs/architecture/adr/adr-022-rule-based-sharing-scopes.md
new file mode 100644
index 0000000000..520100f129
--- /dev/null
+++ b/docs/architecture/adr/adr-022-rule-based-sharing-scopes.md
@@ -0,0 +1,89 @@
+---
+title: "ADR-022: Rule-Based/Dynamic Sharing Scopes"
+sidebar_label: "ADR-022"
+sidebar_position: 22
+---
+
+**Status:** Accepted
+**Date:** 2026-08-18
+**Backlog:** priority queue item 1 — buildable without a new product decision, a natural
+extension of ADR-010's model.
+
+## Context
+
+ADR-010 explicitly deferred rule-based/dynamic scoping (Deel 14 §12-13, e.g. "share everything
+tagged region=EU") — only explicit `PRODUCT`/`PRODUCT_CATEGORY`/`ALL_PRODUCTS` targeting was
+built. A seller with hundreds of products who wants to share "everything tagged region=EU" (or
+"everything with material=steel", or any attribute-driven segment) currently has to either grant
+`ALL_PRODUCTS` (over-sharing) or maintain a `PRODUCT`-targeted grant per matching product by hand
+(brittle — a new EU product doesn't automatically get shared without remembering to add it).
+
+## Decision
+
+Add an optional `SharingGrant.ruleFilter` (`Json?`) — an array of rules, ANDed together, each
+`{ attributeCode: string, operator: 'eq' | 'neq' | 'in' | 'contains', value: unknown }`. A rule
+matches a product when the product carries an `AttributeValue` for an `AttributeDefinition` with
+that `code` (visible to the owner org — global or their own, same visibility rule as attribute
+definitions elsewhere) whose value satisfies the operator against the rule's value.
+
+`ruleFilter` is evaluated **alongside**, not instead of, the existing `targetType` check
+(`SharingService.hasAccess` / `resolveAccessibleProductFilter`, ADR-010's single enforcement
+point) — a product is only in scope for a grant if it matches `targetType` **and** every rule in
+`ruleFilter`. This makes `targetType: ALL_PRODUCTS` + `ruleFilter: [{attributeCode: "region",
+operator: "eq", value: "EU"}]` the direct MVP answer to "share everything tagged region=EU," and
+composes just as well with `PRODUCT_CATEGORY` ("everything in category X that's also tagged
+region=EU") or even `PRODUCT` (redundant but well-defined — the single product must still match).
+
+Operators are deliberately minimal: `eq`/`neq` for exact match, `in` for "one of a list," and
+`contains` for substring-on-a-string or membership-in-an-array attribute values. No comparison
+operators (`gt`/`lt`) — no attribute value in this schema currently benefits from ordered
+comparison (`MEASUREMENT` is a `{value, unitCode}` object, not a bare number) and adding them
+without a real use case would be speculative.
+
+**Validation happens twice, for two different reasons:**
+- At grant-creation time (`SharingService.createGrant`), every `ruleFilter[].attributeCode` is
+ checked against real `AttributeDefinition` rows (global or the owner's own) and rejected with
+ `400 UNKNOWN_ATTRIBUTE_CODE` if unrecognized — this catches a typo immediately instead of
+ producing a grant that silently never matches anything.
+- At read time (`matchesRuleFilter`), a rule with no matching attribute value on the product
+ simply fails to match (the product is out of scope) rather than throwing — a product that never
+ got the attribute assigned is not an error condition, it's just not in this grant's scope.
+
+`resolveAccessibleProductFilter` (used by `PartnerService.listPartnerProducts` to list a partner's
+visible catalogue) previously returned `{ allProducts, productIds, categoryIds }` and let the
+caller build an `OR` query — sufficient when `PRODUCT_CATEGORY` unconditionally meant "every
+product in that category." Rule filters break that shortcut (a `PRODUCT_CATEGORY` + `ruleFilter`
+grant means only *some* products in that category), so this method now resolves every non-trivial
+grant to a concrete product-ID list itself (querying each grant's base `targetType` scope, then
+narrowing by attribute values when a `ruleFilter` is present) and returns `{ allProducts,
+productIds }`. The `allProducts: true` fast path is preserved for the common case: an
+`ALL_PRODUCTS` grant with no `ruleFilter` at all still short-circuits without touching attribute
+data.
+
+## Consequences
+
+- `POST /sharing-grants` accepts an optional `ruleFilter: SharingRuleDto[]`; `GET
+ /sharing-grants` and the stored grant both return it as-is.
+- `src/sharing/rule-filter.util.ts` is pure, dependency-free logic (`parseRuleFilter`,
+ `matchesRuleFilter`) with its own Jest spec (`rule-filter.util.spec.ts`) — the parsing/operator
+ semantics are fully unit-tested; the DB-touching parts (`SharingService.hasAccess`,
+ `resolveAccessibleProductFilter`, `assertAttributeCodesExist`) were verified end-to-end over
+ real HTTP against a live Postgres instance (register two orgs, connect them, tag two products
+ `region=EU`/`region=US`, grant `ALL_PRODUCTS` + `region=EU`, confirm the grantee's product list
+ and direct-fetch both include the EU product and exclude the US one; confirm a typo\'d
+ `attributeCode` is rejected with `400` at grant creation).
+- No OR logic between rules, no nested rule groups, no "share everything NOT tagged X" — a flat
+ AND list is the entire language for now. If a real need for OR/negation groups emerges, that's
+ a follow-up ADR, not a silent extension of this one.
+- Two unrelated pre-existing bugs were found and fixed while building and end-to-end testing this
+ feature (both only reachable by a live HTTP round trip through `ValidationPipe`, never caught by
+ `tsc` or unit tests): `RegisterDto.firstName`/`lastName` were documented as optional
+ (`@ApiProperty({ required: false })`) but missing `@IsOptional()`, so omitting them failed
+ validation; `SetAttributeValueDto.value` had no class-validator decorator at all, so
+ `ValidationPipe`'s `whitelist: true` silently stripped it and `forbidNonWhitelisted: true` then
+ rejected every request as `"property value should not exist"` — the attribute-value-setting
+ endpoints (`POST /products/:id/attribute-values`, `POST /variants/:id/attribute-values`) were
+ completely unusable via the API before this fix. A codebase-wide scan for the same
+ missing-decorator pattern (`ApiPropertyOptional`/`required: false` without `@IsOptional`, and
+ `unknown`/`any`/`Record<`-typed DTO properties without any class-validator decorator) found no
+ further instances.
diff --git a/docs/architecture/adr/adr-023-resource-scoped-roles-and-system-roles.md b/docs/architecture/adr/adr-023-resource-scoped-roles-and-system-roles.md
new file mode 100644
index 0000000000..e303d7ba91
--- /dev/null
+++ b/docs/architecture/adr/adr-023-resource-scoped-roles-and-system-roles.md
@@ -0,0 +1,106 @@
+---
+title: "ADR-023: Resource-Scoped Roles and Seeded System Roles"
+sidebar_label: "ADR-023"
+sidebar_position: 23
+---
+
+**Status:** Accepted
+**Date:** 2026-08-18
+**Backlog:** priority queue item 1 — buildable without a new product decision, "natural extensions
+of the existing [ADR-018] model."
+
+## Context
+
+ADR-018 added a management layer (create/list/assign/revoke) on top of the existing flat
+`Role.permissions: string[]` model, but every role was still necessarily org-wide: holding
+`products:write` meant write access to every product in the organization, with no way to grant it
+for, say, one category only. The backlog called out two specific, illustrative extensions:
+per-resource scoping (a role limited to one Category or one Location) and an `is_system_role` flag
+with proper seeded roles beyond the wildcard Owner (e.g. "Catalog Editor," "Read Only").
+
+While building and end-to-end testing this, two pre-existing gaps surfaced that made the feature
+untestable as designed and are fixed as part of this ADR (see Consequences):
+`Role` had no `@@unique([organizationId, name])` constraint despite `RolesService.create` already
+having dead code to catch that exact conflict, and there was no way to add a second user to an
+existing organization at all — `InviteUserDto` existed in `organizations/dto.ts`, fully defined,
+never wired to any controller or service method. Without a second user, ADR-018's entire
+role-assignment feature (and this one) had never actually been exercised beyond a single
+always-`'*'` Owner.
+
+## Decision
+
+**Resource scoping.** `Role` gains optional `resourceType` (`CATEGORY | LOCATION`) and
+`resourceId`, both-or-neither (validated in `RolesService`, same convention as
+`SharingGrant.targetType`/`targetId`). A scoped role's permissions only apply to that one resource
+instance — but scoping is only **enforced** for the one permission each type actually covers:
+`CATEGORY` → `products:write`, `LOCATION` → `inventory:write` (`SCOPE_ENFORCED_PERMISSION` in
+`src/auth/scope.util.ts`). `RolesService.create` rejects any other permission on a scoped role with
+`400 UNSUPPORTED_SCOPED_PERMISSION` — better to refuse than silently grant unscoped access to
+something the caller believed was narrowed.
+
+Enforcement is two-tier, mirroring how `SharingService.hasAccess` is the single point that turns a
+coarse grant into a fine one:
+- `PermissionsGuard` (unchanged) still does the coarse "does the caller hold this permission
+ anywhere" check via `AuthenticatedPrincipal.permissions` — a category-scoped Catalog Editor must
+ still be able to *reach* `POST /products` before their specific category can be checked.
+- `src/auth/scope.util.ts`'s `assertResourcePermission(principal, permission, resourceType,
+ resourceId)` is the fine check, called once each service knows the concrete target:
+ `ProductsService.create/update/addVariant` (against the product's category) and
+ `InventoryService.upsertInventory` (against the location). `isScopedOnly(...)` additionally
+ makes `categoryId` *required* on product creation when the caller's only `products:write` grant
+ is category-scoped — there's no "default" category to silently fall back to.
+- `AuthenticatedPrincipal` gained `unscopedPermissions` (permissions from `'*'` or
+ `resourceType: null` roles) and `scopedPermissions` (`{permission, resourceType, resourceId}[]`
+ from scoped roles), built in `AuthService.validateAccessToken`. API-client principals
+ (`validateApiKey`) have no `Role`/`UserRole` at all — their `scopes` are always unscoped.
+
+**System roles.** `Role.isSystemRole: Boolean` (seeded rows only — no endpoint creates
+`organizationId: null` roles). Two are seeded in the migration itself (`INSERT` statements
+alongside the `ALTER TABLE`, same file, since this is small reference data tied directly to the
+schema change, not runtime state): **Catalog Editor** (`products:write`, `attributes:write`,
+`classification:manage`, deliberately unscoped — an org can clone it into a category-scoped custom
+role via `POST /roles` if they want the narrower version) and **Read Only** (empty
+`permissions: []` — every write in this codebase is gated by a permission code and no permission
+codes exist for reads, so an empty-permissions role can authenticate and read everything but pass
+no write check; a legitimate "Read Only" role, not a placeholder). Both already surface through
+`RolesService.list()`'s existing `organizationId: null` clause with no code change needed there.
+
+**Closing the "no second user" gap.** `POST /organizations/me/users` (new, `org:manage`,
+`InviteUserDto`) creates a user in the caller's org, requires at least one `roleId` (mirrors
+`RolesService.revokeFromUser`'s existing "never leave a user with zero roles" invariant — a
+freshly-invited user with zero roles could authenticate but pass no permission check, ever), and
+returns a generated temporary password **once**, in the response body — the same "shown only once"
+convention `AuthService.createApiClient` already uses for API key secrets. No email delivery
+infrastructure exists in this build (see README/ADR notes on deferred infra elsewhere), so getting
+that password to the invited user is the caller's responsibility, out of band. The created user is
+`ACTIVE` immediately, not `PENDING` — there is no separate accept-invite/set-password flow to
+transition out of `PENDING`, and login already rejects non-`ACTIVE` users, so leaving them
+`PENDING` would create a user who can never log in.
+
+## Consequences
+
+- Two pre-existing bugs, found while building/testing this feature, are fixed as part of it:
+ - `Role` now has `@@unique([organizationId, name])`. `RolesService.create`'s
+ `ROLE_NAME_TAKEN` conflict handler predates this ADR but could never actually fire — there was
+ no unique constraint to violate. Verified live: creating two roles with the same name in the
+ same org now correctly returns `409`.
+ - `InviteUserDto.email` gained `@IsEmail()` and `.roleIds` gained `@IsArray()`/`@ArrayNotEmpty()`/
+ `@IsString({each: true})` (was previously undecorated beyond `@IsOptional()`, so a non-array
+ value could slip through unvalidated) — the same DTO-validation-gap class as ADR-022's fixes,
+ found by the same means (an actual HTTP round trip, not `tsc`).
+- Verified end-to-end over real HTTP against a live Postgres instance: an owner creates two
+ categories and a category-scoped "Editor A" role, invites a second user with it, that user logs
+ in with the returned temporary password, successfully creates a product in their category,
+ is rejected with `403 FORBIDDEN_SCOPE` creating one in the other category, is rejected with
+ `400 CATEGORY_REQUIRED` omitting a category entirely, and is rejected with the plain coarse
+ `403 FORBIDDEN` (`PermissionsGuard`) attempting `inventory:write`, which their role doesn't grant
+ at all. The same sequence was repeated for a location-scoped "Stock Clerk A" role against
+ `inventory:write`, with identical results.
+- Still not the fuller resource/action/scope matrix Deel 21 describes: only two resource types,
+ only one enforced permission per type, no scoping on `orders:write`/`offers:write`/etc., no
+ multi-resource scope (a role scoped to *several* categories), no negative/deny rules. Each of
+ those is a real follow-up if a concrete need for it shows up, not a silent gap in this one.
+- `POST /organizations/me/users` has no rate limiting or invite-throttling of its own — it's gated
+ by `org:manage` same as every other org-admin action, which was judged sufficient for the same
+ reason `POST /roles` was (an org's own admin acting within their own org, not an
+ external-facing surface).
diff --git a/docs/architecture/adr/adr-024-product-identity-lifecycle-and-decimal-quantity.md b/docs/architecture/adr/adr-024-product-identity-lifecycle-and-decimal-quantity.md
new file mode 100644
index 0000000000..1b431bc502
--- /dev/null
+++ b/docs/architecture/adr/adr-024-product-identity-lifecycle-and-decimal-quantity.md
@@ -0,0 +1,120 @@
+---
+title: "ADR-024: OSPI Identity Lifecycle, Product Publication Lifecycle, and Decimal Order Quantity"
+sidebar_label: "ADR-024"
+sidebar_position: 24
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 1 of the product-owner-ordered
+build sequence (`BACKLOG.md`) — bundled because all five findings touch the same
+`Product`/`OspiIdentity`/`OrderLine` migration surface, and later phases (`Quote`, completeness
+scoring) depend on this one landing cleanly first.
+
+## Context
+
+Five concrete, unambiguous findings from the re-audit, none requiring a business-policy decision:
+
+1. **`OspiIdentity` had no status field at all** (Deel 4 §36-41, Deel 23 §81-84) — the spec
+ requires `RESERVED → REGISTERED → ACTIVE → SUSPENDED → RETIRED`, with permanent, no-reuse
+ retirement as a hard invariant that was previously unenforceable (no field to check).
+2. **`Product` had no `PUBLISHED` state** (Deel 10 §16-22/§65) — the spec's product lifecycle is
+ `DRAFT → ACTIVE → PUBLISHED → DEPRECATED → RETIRED`, with a dedicated publish/unpublish/retire
+ API (`POST /products/:id/publish` etc.), distinct from the generic status field.
+3. **No `RECALLED` status** (Deel 19 §24-25, explicitly safety-critical: "a recalled product must
+ stay resolvable, not hidden").
+4. **No `publicationState` audience dimension** (Deel 7 §68-69, Deel 22 §78-81) —
+ `PRIVATE/PARTNER_ONLY/PUBLIC/SCHEDULED`, independent of `ProductStatus` and currently conflated
+ into it.
+5. **No optimistic concurrency on Product updates** (Deel 22 §110-111) — no `version` field, no
+ client-supplied expected-version on `PATCH`, no `409` on a stale write.
+6. **`OrderLine.quantity` was `Int`** (Deel 17 §29, explicit: "niet uitsluitend integers" — e.g.
+ `4.5 kg`, `10.75 m`).
+
+## Decision
+
+**Identity lifecycle** (`OspiIdentityStatus`: `RESERVED | REGISTERED | ACTIVE | SUSPENDED |
+RETIRED`, default `REGISTERED`):
+- `IssueOspiIdentityDto` gains optional `reserved`/`reservedUntil` — a reservation is the same
+ code-minting call, just tagged `RESERVED` with an optional expiry, per Deel 4 §37's "useful for
+ ERP sync/bulk imports/manufacturing workflows" framing. **Not built**: an automatic sweep that
+ expires a stale reservation — `reservedUntil` is stored and returned, but nothing currently acts
+ on it passing. A real deployment would want a scheduled job to release expired reservations;
+ out of scope for this pass, flagged rather than silently assumed.
+- Attaching an identity to a `Product` or `ProductVariant` (`ProductsService.create`/`addVariant`)
+ promotes it straight to `ACTIVE` from either `RESERVED` or `REGISTERED` — Deel 4 §38's
+ REGISTERED-vs-ACTIVE distinction ("OSPI knows this identity" vs. "usable per visibility rules")
+ maps cleanly onto "minted but unattached" vs. "attached to something real," so no separate
+ manual activation step is needed once a real Product/Variant exists.
+- `SUSPENDED`/`RETIRED` identities can never be (re-)attached — checked in both `create()` and
+ `addVariant()`. `IdentityService.retireIdentity`/`suspendIdentity`/`reactivateIdentity` are new,
+ ownership-checked, audited transitions (`POST /ospi-identities/:id/retire|suspend|reactivate`).
+ Retiring does **not** detach an already-attached Product/Variant — Deel 4 §41's own example
+ ("Old Identity → Retired → New Identity") is precisely "keep the old code resolvable, mint a new
+ one for the actual replacement," not "sever the link."
+
+**Product publication lifecycle**: `PUBLISHED` and `RECALLED` added to the existing
+`ProductStatus` enum (now `DRAFT | ACTIVE | PUBLISHED | RECALLED | DISCONTINUED | ARCHIVED`).
+`DISCONTINUED`/`ARCHIVED` are **not** renamed to the spec's `DEPRECATED`/`RETIRED` wording — they
+already implement the same semantics (`ARCHIVED` = "no hard delete, prefer RETIRE over DELETE,"
+already built) and renaming a working, already-referenced enum value for wording-only reasons is
+churn with no functional benefit. `ProductsService.publish`/`unpublish`/`retire`/`recall` are
+dedicated, audited, valid-transition-checked actions
+(`POST /products/:id/publish|unpublish|retire|recall`) layered on top of the pre-existing generic
+`PATCH` (which still accepts any status directly, unchanged — the dedicated endpoints exist for
+audit-log clarity and spec-fidelity, not because the generic path needed to be locked down).
+Lookups (`IdentityService.lookupCode`, `SearchService.resolveCode`) were already and remain
+status-agnostic, so a `RECALLED` product stays resolvable exactly as Deel 19 requires, with no
+extra carve-out needed.
+
+**Publication state**: `PublicationState` (`PRIVATE | PARTNER_ONLY | PUBLIC | SCHEDULED`, default
+`PRIVATE`) added as `Product.publicationState`, settable via the generic `PATCH`. Deliberately
+**just the field** — nothing in `SharingService` or `SearchService` currently reads it to gate
+cross-org visibility, and `SCHEDULED` has no sweep that flips it to `PUBLIC` on its own. Wiring
+this into the real access-control checks (and, if wanted, a scheduler for `SCHEDULED`) is real,
+separate follow-up work; storing the value without silently claiming the enforcement exists too
+was judged better than not building it at all.
+
+**Optimistic concurrency**: `Product.version: Int @default(1)`, incremented on every update
+(generic `PATCH` and all four dedicated lifecycle actions alike). `UpdateProductDto.expectedVersion`
+is **optional**, not mandatory — a caller that omits it keeps the pre-existing last-write-wins
+behavior (no unannounced breaking change for anything already calling `PATCH /products/:id`); a
+caller that supplies it gets a real `409 VERSION_CONFLICT` on a stale write. This is deliberately
+narrower than Deel 22 §108's separate `ProductVersion` snapshot/history table (full point-in-time
+reconstruction) — that's a different, larger feature this ADR does not build.
+
+**Decimal order quantities**: `OrderLine.quantity`, `Offer.minimumQuantity`, and
+`OfferBuyerMinimum.minimumQuantity` all changed from `Int` to `Decimal(14,4)` (matching `price`'s
+existing precision, since minimum-quantity and actual-quantity are directly compared against each
+other in `OrdersService.addLine` and must stay type-consistent). `AddOrderLineDto.quantity`,
+`CreateOfferDto.minimumQuantity`, and `SetOfferBuyerMinimumDto.minimumQuantity` all moved from
+`@IsInt()` to `@IsNumber() @IsPositive()`.
+
+## Consequences
+
+- Verified end-to-end over real HTTP against a live Postgres instance: reserving an identity,
+ suspending/reactivating/retiring one, confirming a retired identity can't be attached
+ (`403 IDENTITY_NOT_ATTACHABLE`), attaching a reserved one and confirming both the stored row
+ *and* the create-response's embedded `ospiIdentity` correctly show `ACTIVE` (see the bug fixed
+ below), the full publish → recall product lifecycle with `409` on an invalid transition,
+ optimistic concurrency correctly rejecting a stale `expectedVersion` and accepting a current
+ one, and an offer with `minimumQuantity: 4.5` correctly rejecting a `2.25`-quantity order line
+ and accepting a `10.75` one — the exact fractional examples Deel 17 §29 itself gives.
+- **A real bug was found and fixed while writing that verification**, not by inspection alone:
+ `ProductsService.create`'s response embedded the identity via `include` at creation time, which
+ ran *before* the new status-promotion update — so a client attaching a `RESERVED` identity saw
+ `ospiIdentity.status: "RESERVED"` in the response even though the stored row was already
+ `ACTIVE` a moment later. Fixed by moving the identity-status update before the include-laden
+ re-fetch used for the response.
+- `Product.version` and `OspiIdentity.status` are additive columns with safe defaults — no data
+ migration needed for the (empty, dev) database this was verified against; a real deployment
+ with existing rows would see every existing product start at `version: 1` and every existing
+ identity default to `REGISTERED` (not `ACTIVE`) on migration, which is honest given none of them
+ went through the new "attachment activates" pathway historically. Not treated as a problem to
+ solve in this pass — call out to a future backfill only if a real production dataset needs one.
+- `PRODUCT_STATUSES`/`RECALLED` reachable via generic `PATCH` too, not just the dedicated
+ `/recall` endpoint — same "convenience layer, not a lockdown" choice as publish/unpublish/retire
+ above; who is authorized to recall a product is still just `products:write`, same as any other
+ status change. If recall ever needs its own, stricter permission (e.g. a dedicated
+ `products:recall` reserved for safety/compliance roles), that's a follow-up decision, not
+ assumed here.
diff --git a/docs/architecture/adr/adr-025-idempotency-key.md b/docs/architecture/adr/adr-025-idempotency-key.md
new file mode 100644
index 0000000000..10a94149a6
--- /dev/null
+++ b/docs/architecture/adr/adr-025-idempotency-key.md
@@ -0,0 +1,82 @@
+---
+title: "ADR-025: Idempotency-Key Support for Commitment-Creating Writes"
+sidebar_label: "ADR-025"
+sidebar_position: 25
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 2 (cross-cutting infrastructure)
+of the self-directed build sequence (`BACKLOG.md`) — built early because later phases (Quote,
+distribution/partner-sync) create financially/contractually meaningful records too, and should be
+able to opt into this mechanism rather than each retrofitting their own.
+
+## Context
+
+Deel 5 §30, Deel 8 §35-37, and Constitution §26 all describe the same requirement: a client that
+retries a write after a timeout or dropped connection (never knowing whether the original request
+actually landed) must be able to signal "this is the same attempt, not a new one" via an
+`Idempotency-Key` header, scoped per (organization, actor, endpoint). Without it, a retried
+`POST /orders` or `POST /ospi-identities` after a network blip can silently create a duplicate
+order or a duplicate identity — the exact class of bug the spec calls out by name.
+
+## Decision
+
+- **Opt-in per route** via `@Idempotent()` (`IDEMPOTENT_KEY` metadata), enforced by a single global
+ `IdempotencyInterceptor` (`APP_INTERCEPTOR`) — not a guard, since it needs to intercept and
+ replay the *response*, not just allow/deny the request. A route without the decorator is
+ completely unaffected, including a request that happens to carry the header.
+- **The header itself is optional even on a decorated route.** `@Idempotent()` means "this
+ endpoint honors the header if present," never "this header is required." A caller that omits it
+ gets ordinary (non-deduplicated) behavior — this is additive, not a breaking change to any
+ existing caller.
+- **Cache key** is `idempotency:{organizationId}:{actorType}:{actorId}:{ControllerName}.{handlerName}:{key}`
+ — Deel 8 §36's exact scoping (organization + actor + endpoint), built from `request.principal`
+ rather than trusting a client-supplied org/actor value.
+- **Only successful responses are cached.** A validation error or business-rule rejection (400,
+ 403, 409, etc.) is safe to simply retry as-is, since it created nothing — caching it would only
+ make a transient failure sticky for no benefit. Verified live: two calls with the same key and an
+ invalid body both executed and returned distinct `requestId`s, neither was replayed.
+- **Only the response BODY is cached, not the raw HTTP status.** Nest computes a route's status
+ code the same way on every call (from the route's own decorators/defaults, e.g. `201` for a
+ bare `@Post()`), so replaying the cached body through the normal response pipeline reproduces the
+ original status for free — without the interceptor reaching into the `Response` object to set
+ status/headers itself, which risks a "headers already sent" double-write if the timing is wrong
+ anywhere in the pipeline. A replayed response additionally sets `Idempotent-Replay: true` so a
+ caller (or this ADR's own verification) can distinguish a replay from a fresh execution even when
+ the body is identical.
+- **24-hour TTL** in Redis (`src/redis/`, a new `@Global()` `RedisModule`/`RedisService` wrapping
+ `ioredis` — the first real Redis usage in this build; `RateLimitGuard` remains deliberately
+ in-memory/per-process and untouched by this change) — Deel 8 §37's "retry safety" window, long
+ enough to cover realistic retry/backoff behavior without keeping every request body forever.
+- **Applied to the endpoints that create a real, would-be-duplicated commitment**: `POST /products`,
+ `POST /products/bulk`, `POST /products/:id/serialized-units/bulk`, `POST /ospi-identities`,
+ `POST /orders` (draft creation), and `POST /orders/:id/submit` (the actual "creates a commitment"
+ moment — splits a draft into per-seller `OrderGroup`s). Read endpoints, status-transition actions
+ without a create side-effect (`accept`/`reject`/`publish`/etc.), and `DELETE`s were left
+ undecorated — they're either already naturally idempotent or don't create a new row that a retry
+ could duplicate.
+
+**Known, accepted limitation — no distributed lock.** Two truly concurrent requests carrying the
+same key can both reach the handler before either has cached a result, so both execute; this closes
+the "sequential retry after a timeout" case (the common real-world one) but not a genuine race.
+Closing that fully needs a `SETNX`-style lock with a wait/retry loop around the handler call, which
+is real additional complexity — flagged as a gap rather than silently assumed solved, and left for
+a follow-up if a concrete need for it shows up.
+
+## Consequences
+
+- Verified end-to-end over real HTTP against a live Postgres + Redis instance: `POST
+ /ospi-identities` sent twice with the same `Idempotency-Key` returned the byte-identical body
+ (same `id`, same `createdAt`) on both calls, the second carrying `Idempotent-Replay: true`; the
+ database confirmed exactly **one** row was created despite two calls. The same request repeated
+ with *no* `Idempotency-Key` header correctly created a genuinely new attempt each time — and the
+ second one was independently rejected by the pre-existing `DUPLICATE_COMPANY_PRODUCT_ID` business
+ rule, confirming the interceptor doesn't interfere with routes/requests that don't opt in.
+- `ioredis` added as a new runtime dependency; `REDIS_URL` added to `.env.example`
+ (`redis://localhost:6379` default, matching the existing `DATABASE_URL` pattern).
+- This is the first feature in the build with a genuine external-service dependency beyond
+ Postgres. If Redis is unreachable, `RedisService.onModuleInit` fails fast at boot (no silent
+ fallback to "idempotency disabled") — consistent with `PlatformOperatorGuard`'s fail-closed
+ precedent elsewhere in this codebase, but worth naming explicitly since it's a new operational
+ dependency for whoever deploys this.
diff --git a/docs/architecture/adr/adr-026-webhooks.md b/docs/architecture/adr/adr-026-webhooks.md
new file mode 100644
index 0000000000..8bae118af5
--- /dev/null
+++ b/docs/architecture/adr/adr-026-webhooks.md
@@ -0,0 +1,134 @@
+---
+title: "ADR-026: Outbound Webhooks / Event Subscriptions"
+sidebar_label: "ADR-026"
+sidebar_position: 26
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 2 (cross-cutting infrastructure)
+of the self-directed build sequence (`BACKLOG.md`) — item 7, following ADR-025's Idempotency-Key
+work in the same phase.
+
+## Context
+
+Deel 5 §45-50, Deel 8 §42-49, and Deel 14 §29-40 all describe the same requirement from different
+angles: OSPI must be able to push real-time change notifications ("OSPI → Webhook → ERP") to an
+organization's own external systems, rather than requiring polling. All three sources converge on
+the same concrete design points:
+
+- **Registration**: `{url, events[]}`, HTTPS-only (Deel 8 §44).
+- **Never synchronous with the write it reports on** (Deel 5 §46, §97): "Product = CREATED,
+ Webhook = RETRYING" — a webhook delivery attempt must not be part of the transactional request,
+ so an unreachable external endpoint can never block or slow down the OSPI write that triggered it.
+- **Signed** (Deel 5 §48, Deel 8 §45, Deel 14 §35): HMAC over the payload with the subscription's
+ own secret; Deel 14 §35 additionally names "timestamp; replay protection" explicitly.
+- **Exponential-backoff retries, then dead-letter** (Deel 5 §47, Deel 8 §47-48, Deel 14 §36-37) —
+ and Deel 8 §48 specifically: "de organisatie moet dit kunnen bekijken en opnieuw proberen" (the
+ organization must be able to view and manually retry a dead-lettered delivery).
+- **At-least-once, never exactly-once** (Deel 5 §49, Deel 8 §49) — every delivery gets a unique ID
+ so the receiver can dedupe; OSPI does not promise single delivery.
+- **Thin payload, "webhook + pull"** (Deel 14 §30): a webhook should carry the event type and a
+ resource id/version, not the full resource — the receiver re-fetches current state via the normal
+ API. This makes retries and signing simpler and avoids ever shipping stale embedded data.
+
+## Decision
+
+**Scope, deliberately narrower than the full spec vision**: this builds an organization's own
+outbound notification channel for its own resources — Deel 5/8's "OSPI → Webhook → ERP" framing.
+It does **not** build Deel 14's separate, larger feature: a partner subscribing to ANOTHER
+organization's products by category/brand/family, using the same rule-based scope engine as
+Sharing (ADR-022). That's real, additional complexity (a second access-control dimension on top of
+ownership) correctly deferred to `BACKLOG.md` phase 5 item 19 (Distribution/partner-sync API
+surface) — this ADR's mechanism is built so that feature can plug into it later rather than invent
+its own delivery/retry/signing pipeline.
+
+**Durable, DB-backed queue** — `WebhookDelivery.status`/`nextAttemptAt` on a genuine table, not an
+in-memory structure, IS the "Webhook Queue" the architecture diagrams describe (Deel 5 §46 /
+Deel 8 §46). A periodic sweep (`WebhooksService.sweepOnce`, `setInterval`, 15s) picks up rows due
+for (re)attempt, rather than a job dispatched inline in the triggering request. `WebhooksService.
+emit()` — called from `IdentityService`, `ProductsService`, `OrdersService` — creates the delivery
+row(s) synchronously (a fast local DB write, safe to await) but fires the actual outbound HTTP
+attempt without awaiting it (`void this.attemptDelivery(...)`), so a slow or dead external endpoint
+can never add latency to (or fail) the business write it's reporting on. `emit()` itself swallows
+its own errors (logged, not thrown) for the identical reason at one layer up: a webhook-subsystem
+hiccup must never fail the request that triggered it — this is a deliberate asymmetry with
+`AuditService.log`, which the rest of this codebase treats as essential-not-swallowed; webhooks are
+explicitly best-effort infrastructure, audit log entries are not.
+
+**Signing**: `X-OSPI-Signature: t=,v1=` (Stripe's well-known shape),
+HMAC computed over `${timestamp}.${rawBody}` — bundles integrity and replay protection into one
+header and one verification step (`signature.util.ts`, unit-tested both directions: sign then
+verify, and reject on tampered body / wrong secret / stale timestamp).
+
+**Retry**: up to 8 attempts, exponential backoff starting at 30s and doubling, capped at 30 minutes
+between attempts; the 8th failure moves the delivery to `DEAD_LETTERED`. `POST
+/webhooks/deliveries/:id/retry` resets a dead-lettered delivery to a fresh attempt cycle
+(`attempts: 0`, immediate re-attempt) per Deel 8 §48's explicit requirement.
+
+**Payload**: thin, per Deel 14 §30 — `{eventId, eventType, occurredAt, organizationId, data}` where
+`data` is just `{resourceId, status, ...}`, never the full Product/Order/Identity object. The
+receiver is expected to call back into the real API for current state.
+
+**Event catalogue** (`webhook-events.ts`) seeded from the transitions this build actually has —
+not the spec's full example lists, which include events with nothing behind them yet (`dpp.updated`,
+`content.updated`, etc.): `identity.registered/activated/suspended/reactivated/retired`,
+`product.created/published/unpublished/recalled/archived` (`archived` is `ProductsService.retire()`
+— it moves `Product.status` to `ARCHIVED`, not a separate "retired" status; named to match the
+spec's own `product.archived` term, not the method name), `order.created` (on submit),
+`order.updated` (on any `OrderGroup` transition). `product.created`/`identity.activated` fire from
+`ProductsService.create`/`addVariant` (attaching an identity is what activates it — see ADR-024).
+
+**Notification scope for multi-party events**: an `Order`/`OrderGroup` event is emitted to BOTH the
+buyer's and the seller's organization (a `Set` dedupes when they'd otherwise receive it twice) —
+both are genuinely party to that event, unlike a single-owner resource like a Product or Identity.
+This is the one place the "notify the resource's owning org" default doesn't hold; documented here
+explicitly rather than left implicit in the code.
+
+**Subscription CRUD**: `POST/GET/DELETE /webhooks`, `GET /webhooks/:id/deliveries`,
+`POST /webhooks/deliveries/:id/retry` — all behind a new `webhooks:manage` permission. `secret` is
+returned in full only once, at creation; every subsequent `GET /webhooks` omits it entirely (Prisma
+`select` without the field, not a runtime redaction that could be bypassed by adding an `include`
+later). RLS added for both new tables (`webhook_subscriptions`, `webhook_deliveries` via a join to
+its parent subscription), following the same pattern as every other tenant-owned table in
+`prisma/sql/rls.sql` — see that file's existing caveat: the app doesn't currently call
+`PrismaService.withOrgContext()` on the request path, so this is defense-in-depth infrastructure
+consistent with the rest of the codebase's (pre-existing, already-documented) gap, not something
+this ADR closes.
+
+## Consequences
+
+- Verified end-to-end over a live Postgres instance and a live outbound HTTP path:
+ - DTO validation: a non-HTTPS URL and an unrecognized event type are both rejected (400) before
+ a subscription is ever created.
+ - A subscription pointed at a genuinely unreachable HTTPS host produced a real failed delivery
+ attempt (`fetch failed`), scheduled for retry with the correct 30s initial backoff.
+ - Forcing `nextAttemptAt` into the past via direct SQL and letting the real sweep (15s interval)
+ pick it up repeatedly walked the delivery through attempts 1→8 with the backoff growing each
+ time, landing on `DEAD_LETTERED` at exactly attempt 8 — confirmed live, not by code inspection.
+ - `POST /webhooks/deliveries/:id/retry` on that dead-lettered delivery correctly reset it and
+ fired a fresh attempt; retrying it again while `PENDING` (not `DEAD_LETTERED`) was correctly
+ rejected with `403 DELIVERY_NOT_DEAD_LETTERED`.
+ - The **success** path was verified against a real local HTTP receiver (inserted directly via SQL
+ to bypass the HTTPS-only creation guard, which is a creation-time-only check, not a delivery-time
+ one): publishing a product produced a delivery the receiver actually got, with a thin
+ `{eventId, eventType, occurredAt, organizationId, data}` body and an `X-OSPI-Signature` header
+ whose HMAC was independently recomputed and confirmed to match byte-for-byte — proving the
+ signing scheme is receiver-verifiable, not just self-consistent. The delivery row correctly
+ moved to `SUCCEEDED` with `deliveredAt` set.
+ - Multi-party fan-out: registering `order.created`/`order.updated` subscriptions for both a buyer
+ org and a seller org, then submitting a real cross-org order and having the seller accept its
+ `OrderGroup`, produced deliveries on **both** organizations' subscriptions for both events —
+ confirming the buyer+seller notification scope decision above actually happens, not just reads
+ correctly in code.
+ - Cross-org isolation: one organization reading or deleting another organization's webhook
+ subscription/deliveries both correctly returned `404`, not silently empty or a leak.
+- `ioredis`/Redis were **not** used for this feature — the delivery queue is Postgres-backed
+ (`WebhookDelivery` rows), a deliberate difference from ADR-025's idempotency cache, which needed
+ Redis's TTL semantics for a request-scoped cache in a way a durable business record does not.
+- Known, accepted limitation (documented, not silently assumed solved): the sweep is a single
+ in-process `setInterval`, not a distributed job queue — correct for this codebase's existing
+ single-instance-modular-monolith deployment shape (same tier as `RateLimitGuard`'s in-memory
+ design), but a horizontally-scaled deployment would need either a leader-election guard or a real
+ job queue (e.g. BullMQ against the now-available Redis) to avoid multiple instances double-sweeping
+ the same due rows. Flagged as future work if/when that deployment shape is actually needed.
diff --git a/docs/architecture/adr/adr-027-api-versioning-and-permissions-catalogue.md b/docs/architecture/adr/adr-027-api-versioning-and-permissions-catalogue.md
new file mode 100644
index 0000000000..a50e48d4ce
--- /dev/null
+++ b/docs/architecture/adr/adr-027-api-versioning-and-permissions-catalogue.md
@@ -0,0 +1,71 @@
+---
+title: "ADR-027: `/api/v1/` Global Prefix and `GET /permissions` Catalogue"
+sidebar_label: "ADR-027"
+sidebar_position: 27
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 2 (cross-cutting infrastructure)
+of the self-directed build sequence (`BACKLOG.md`) — items 9 and 10, bundled here as both are small,
+independent infra wins with no shared code, following the same pattern ADR-024 used for bundling
+unrelated small findings that touch nothing else in common.
+
+## Context
+
+Two concrete, unambiguous findings from the re-audit:
+
+1. **No API version prefix** (Deel 5 §6-8, explicitly a "Definition of Done" item) — the spec's own
+ base-structure example is literal: `/api/v1/organizations`, `/api/v1/products`, etc., with §7's
+ principle that "a breaking change may never be silently introduced into `/v1`" — i.e. this only
+ works as a real safety net if it's in place *before* the first breaking change, not retrofitted
+ after. Every route in this build was, until now, mounted at the bare root (`/products`,
+ `/auth/register`, etc.).
+2. **No `GET /permissions` catalogue endpoint** (Deel 9 §67, Deel 25 §126) — `PERMISSIONS`
+ (`src/auth/permissions.ts`) already exists as the enforced, single source of truth for every
+ `@RequirePermissions(...)` check and for `RolesService`'s own custom-role validation, but nothing
+ exposed it over HTTP — a caller building a role-creation UI had to hardcode or guess the list.
+
+## Decision
+
+**`/api/v1/` global prefix** (`app.setGlobalPrefix('api/v1', { exclude: ['health'] })` in
+`main.ts`) — applied to every controller route. Two deliberate exclusions:
+- **`GET /health`** stays at the bare path — infra-level monitoring convention (load
+ balancers/orchestrators expect a stable, version-independent health-check path that doesn't move
+ when the API's major version does).
+- **Swagger UI/JSON** (`/api/docs`, `/api/docs-json`) are unaffected — `SwaggerModule.setup` mounts
+ its own middleware outside the standard controller pipeline, so `setGlobalPrefix` doesn't reach
+ it; confirmed live, not assumed. This is also the *right* behavior, not just an artifact: the docs
+ describe the versioned API, but documentation tooling isn't itself part of the versioned resource
+ contract.
+
+Everything else — every domain controller, `POST /auth/register` through the webhooks/DPP surface
+added this session — now lives under `/api/v1/...`. The bare (unprefixed) paths this build used
+until now all correctly 404.
+
+**`GET /permissions`** (`RolesController`, no special permission required — any authenticated
+caller can read the catalogue, same access level as the existing `GET /roles`) returns
+`{ permissions: PERMISSIONS, wildcard: WILDCARD_PERMISSION }` directly from the existing canonical
+array — no new data, no duplication, just exposing what already governs every permission check in
+the codebase.
+
+## Consequences
+
+- **README route references were left as-is (not mechanically rewritten to add `/api/v1/`)** — the
+ README documents dozens of routes across every feature section; a global find-and-replace-style
+ edit across all of them is exactly the kind of large, low-value, typo-risking mechanical diff this
+ build has avoided elsewhere. A single prominent note was added instead pointing at this ADR and
+ stating the real, current base path. The code (and the live-verified Swagger doc) is the source of
+ truth; the README's per-route examples remain correct as *relative resource paths*.
+- Verified end-to-end against a live, freshly-booted app: `GET /health` still answers unprefixed;
+ `GET /api/docs` and `GET /api/docs-json` still work and the JSON's own `paths` correctly show
+ `/health` unprefixed alongside `/api/v1/auth/register` etc. for every other route; the old bare
+ `POST /auth/register` now 404s; the new `POST /api/v1/auth/register` works end-to-end (real
+ organization + user created, real JWT pair issued); `GET /permissions` (behind the new prefix,
+ with normal auth) returns the full, current 15-entry catalogue including `webhooks:manage`
+ (added earlier this session for ADR-026), confirming it reads live from the enforced array rather
+ than a stale copy.
+- This is a breaking change for any existing caller of this API — by design, and precisely the
+ point of doing it now rather than later (Deel 5 §7): every route moved in one atomic change while
+ there are zero real external consumers yet, instead of moving some routes under `/v1` months from
+ now while others stay at the root out of inertia.
diff --git a/docs/architecture/adr/adr-028-session-and-token-revocation.md b/docs/architecture/adr/adr-028-session-and-token-revocation.md
new file mode 100644
index 0000000000..068615491d
--- /dev/null
+++ b/docs/architecture/adr/adr-028-session-and-token-revocation.md
@@ -0,0 +1,91 @@
+---
+title: "ADR-028: Session Tracking and Token Revocation"
+sidebar_label: "ADR-028"
+sidebar_position: 28
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 2 (cross-cutting infrastructure)
+of the self-directed build sequence (`BACKLOG.md`) — item 8, the last item in Phase 2.
+
+## Context
+
+Deel 21 §42-44 requires, concretely:
+
+- Sessions must be **revocable**, have an **expiration**, carry **device/session info**, and be
+ **auditable**.
+- A user must be able to **"log out from all devices."**
+- Access tokens: short-lived, limited scope, carry organization context (already true — 15 min TTL,
+ `organizationId` in the JWT payload since the original build).
+- Refresh tokens must be **securely managed**.
+- OSPI must be able to **revoke tokens** in a security incident.
+
+Before this change, refresh tokens were purely stateless signed JWTs — `AuthService.refresh()`
+checked only the signature and the user's still-`ACTIVE` status. There was no server-side record of
+a "session" at all: no way to list active logins, no way to revoke one, and no way to log out
+everywhere short of rotating `JWT_SECRET` (which would also invalidate every OTHER user's tokens).
+
+## Decision
+
+**One `Session` row per issued refresh token**, not per access token. This maps directly onto what
+a user actually means by "a device I'm logged in on" — the login-to-logout lifetime, not each
+15-minute access-token renewal within it. `refresh()` reuses the SAME session id on every renewal
+(`sid` in the refresh JWT payload) rather than rotating to a new row per call — simpler, and
+sufficient for "list/revoke sessions" to mean exactly what a user expects (one row = one login, not
+one row per silent background renewal).
+
+**`Session.expiresAt` is an absolute cap set once at creation** (login/register), never extended on
+refresh. A session's total lifetime is bounded to 7 days from first login, however many times it's
+refreshed in between — checked authoritatively in `refresh()` even when the refresh JWT's own
+signature still verifies past that point. Deliberately simpler than a sliding window; a session that
+needs to outlive 7 days requires a fresh login, which is a reasonable, common trade-off.
+
+**Deliberate, bounded access-token exposure window**: access tokens do **not** carry a session
+reference and are **not** checked against `Session` state on every authenticated request. Revoking
+a session (via `DELETE /auth/sessions/:id` or `POST /auth/logout-all`) stops all FUTURE refreshes
+for that session immediately, but an access token already issued keeps working until its own natural
+expiry (≤15 minutes) — the same short window that already existed for "the user got deactivated"
+before this change. The alternative (looking up `Session` state on every single authenticated
+request) would make revocation instantaneous but adds a DB round-trip to the hottest path in the
+entire application for a security property already bounded to 15 minutes by the existing short TTL.
+Documented explicitly as a deliberate trade-off, not an oversight — a genuine security-incident
+response (e.g. rotating `JWT_SECRET`) remains the tool for "invalidate everything, right now,"
+unchanged by this ADR.
+
+**Four new endpoints** on `AuthController`:
+- `GET /auth/sessions` — the caller's own session history (device/IP, created/last-used/expiry,
+ revoked state), auditable per Deel 21 §42 — returns ALL sessions including revoked/expired ones,
+ not just active ones, so a user can review what happened, not only what's current.
+- `DELETE /auth/sessions/:id` — revoke one specific session (ownership-checked; another user's
+ session id 404s, not 403, matching every other ownership check in this codebase).
+- `POST /auth/logout` — revoke exactly the session the caller's own refresh token names (public,
+ rate-limited like `/auth/refresh` — a client logging out doesn't necessarily still have a valid
+ access token to authenticate the call with, so this takes the refresh token as its credential,
+ mirroring `/auth/refresh`'s own shape).
+- `POST /auth/logout-all` — Deel 21 §42's own literal example, "log out from all devices": revokes
+ every one of the caller's un-revoked sessions in one call.
+
+**Device/session metadata** (`userAgent`, `ipAddress`) is captured from the request at
+login/register time (`sessionMetaFrom()` in `AuthController`) — best-effort, not validated or
+trusted for any security decision, purely informational for the session list.
+
+## Consequences
+
+- Verified end-to-end over a live Postgres instance and real HTTP: registering + logging in from
+ two different "devices" (distinct `User-Agent` headers) produced two real, listable `Session` rows
+ with correct device/IP/expiry info; refreshing one device's token succeeded and kept the same
+ session id; revoking the OTHER device's session via `DELETE /auth/sessions/:id` then attempting to
+ refresh that device's (still cryptographically valid, unexpired) refresh token correctly failed
+ with `401 SESSION_REVOKED`; `POST /auth/logout-all` correctly revoked every remaining un-revoked
+ session and reported the real count; a THIRD device's access token, issued before the
+ `logout-all` call, correctly kept working until this test's own verification of the documented
+ bounded-exposure design (still valid past the revocation, as designed — not a bug); `POST
+ /auth/logout` with a single device's own refresh token correctly revoked just that one session;
+ and one user attempting to revoke a DIFFERENT, unrelated user's session correctly got `404`, not a
+ leak or a silent no-op.
+- RLS added for the new `sessions` table (joined through `users.organizationId`, same pattern as
+ `dpp_records`/`webhook_deliveries`), consistent with every other tenant-owned table.
+- This closes out `BACKLOG.md` Phase 2 (cross-cutting infrastructure) in full — idempotency
+ (ADR-025), webhooks (ADR-026), API versioning + permissions catalogue (ADR-027), and now session
+ revocation are all in place for Phase 3 onward to build on without retrofitting.
diff --git a/docs/architecture/adr/adr-029-category-attribute-schema.md b/docs/architecture/adr/adr-029-category-attribute-schema.md
new file mode 100644
index 0000000000..73f1b0c904
--- /dev/null
+++ b/docs/architecture/adr/adr-029-category-attribute-schema.md
@@ -0,0 +1,105 @@
+---
+title: "ADR-029: Category → Attribute Schema Linkage"
+sidebar_label: "ADR-029"
+sidebar_position: 29
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 3 (the spec's own
+"architectural centerpiece") of the self-directed build sequence (`BACKLOG.md`) — item 11, the
+first item of Phase 3 and a hard dependency for item 13 (completeness scoring).
+
+## Context
+
+Deel 11 §30-33/§41-43 and Deel 24 §2/§39-53/§84/§110-116 describe a category (the spec's own word:
+"classification") determining which attributes are `REQUIRED`/`RECOMMENDED`/`OPTIONAL` for a
+product in it, with three concrete mechanics:
+
+- **Conditional requirements** (§32): `Battery powered = true → Battery capacity = REQUIRED` — a
+ rule can depend on another attribute's value, not just be unconditionally on/off.
+- **Inheritance** (§41): a child classification inherits its parent's required attributes (the
+ spec's own worked example: `Electric Motor {power, voltage, frequency}` → child `AC Motor`
+ inherits all three and adds its own `phase_count`).
+- **Override rules** (§42): a child MAY re-specify an inherited attribute's requirement level, but
+ must NOT silently change what the attribute *means* — `power` can never start meaning
+ `temperature` partway down the tree.
+
+Before this ADR, `Category`, `ClassificationNode`, and `AttributeDefinition` were three completely
+unlinked models — nothing determined which attributes applied to which category, so
+`AttributeValue` rows could be set with zero relationship to what a product's category actually
+required.
+
+## Decision
+
+**Terminology mapping, stated explicitly**: the spec's text uses "classification" for this feature,
+which in THIS codebase's existing modeling could mean either of two different things —
+`Category` (the field actually set on every `Product.categoryId`, carrying the org/global-registry
+split from ADR-020) or `ClassificationScheme`/`Node`/`Assignment` (a separate, parallel taxonomy
+structure that exists in the schema but has no product-facing consumer anywhere in this build).
+This ADR attaches the schema to `Category`, not `ClassificationNode`, because Category is the one
+that's actually load-bearing — every product already has exactly one, `ClassificationAssignment`
+is optional and currently unused by any read path. Attaching required-attribute rules to the
+unused structure would build a feature nothing could ever trigger.
+
+**New `CategoryAttributeSchema`** (`categoryId`, `attributeDefinitionId`, `requirement`
+(`REQUIRED`/`RECOMMENDED`/`OPTIONAL`/`FORBIDDEN`), optional `conditionOnAttributeDefinitionId` +
+`conditionOnValue`) — one row per (category, attribute) pair. A conditional rule's `requirement`
+only applies when the product's own value for the condition attribute matches
+`conditionOnValue`; unconditional otherwise (both null).
+
+**Inheritance and override, resolved at read time, not materialized**: `GET
+/categories/:id/attributes` walks the category's ancestor chain (via `Category.parentId`) root to
+leaf, merging each level's rules into the one before it — a closer-to-leaf rule for the SAME
+`attributeDefinitionId` replaces (not adds to) an inherited one, deliberately keyed by the
+attribute's stable id (never by name), which structurally guarantees §42's "never silently change
+what an attribute means" — a rule can only ever override `power`'s requirement level, it can never
+repoint the same key at a different attribute. No materialized/denormalized "effective schema"
+table — this is computed fresh on every read, correct-by-construction over a small number of
+ancestor levels, with room to add caching later if that read ever shows up as a hot path.
+
+**Scope narrowed from item 11's full backlog description in one place, documented rather than
+silently dropped**: attribute-schema *management* (create/update/delete a rule) is only supported
+for organization-owned categories, not shared/global (`organizationId IS NULL`) ones. A global
+category's schema would be registry governance — the same class of action as `categories:govern`
+approve/reject (ADR-020) — and enforcing that correctly means checking `PlatformOperatorGuard`'s
+`PLATFORM_OPERATOR_ORG_ID` logic, which lives in a guard, not something this ADR wanted to
+duplicate inline in a service to support a comparatively rare case. Attempting to set a schema on a
+global category returns a clear `403 GLOBAL_CATEGORY_SCHEMA_NOT_SUPPORTED` rather than a confusing
+404 or silent no-op. Reads (`GET /categories/:id/attributes`) work for global categories too — only
+writing a schema on one is unsupported.
+
+**Deliberately NOT built in this pass** (all explicitly Deel 11 topics, left for later if a real
+need appears): §33 attribute-level constraints (numeric min/max, allowed units) — a different,
+additive concern from requirement level; §34-35 enum versioning; §39-40 attribute namespaces
+(`ospi:power` vs `manufacturer:internal_code`) and manufacturer-private extension attributes. None
+of these block item 13 (completeness scoring, the actual reason item 11 was sequenced first) — that
+item only needs to know REQUIRED/RECOMMENDED/OPTIONAL/FORBIDDEN plus the conditional check, which
+this ADR delivers in full.
+
+## Consequences
+
+- Verified end-to-end over live HTTP against a live Postgres instance, reproducing the spec's own
+ worked examples: created `Electric Motor` (parent) with `power`/`voltage` REQUIRED, `AC Motor`
+ (child) with its own `phase_count` REQUIRED plus a conditional `battery_capacity` REQUIRED (only
+ when `battery_powered = true`) and an OVERRIDE of the inherited `voltage` down to RECOMMENDED.
+ `GET /categories/:acMotorId/attributes` correctly returned exactly four entries: `power`
+ (inherited from the parent, still REQUIRED, `inheritedFromCategoryId` pointing at the parent),
+ `voltage` (the child's own RECOMMENDED override, `inheritedFromCategoryId: null`), `phase_count`
+ and `battery_capacity` (both the child's own). `GET /categories/:electricMotorId/attributes`
+ (the parent) correctly showed only its own two rules with zero leakage of the child's rules —
+ confirming the merge only ever flows down the tree, never sideways or up.
+ Validation confirmed live: a self-referential condition (an attribute conditioning its own
+ requirement) and a `conditionOnValue` supplied without its paired
+ `conditionOnAttributeDefinitionId` were both rejected with `400`; attempting to set a schema on a
+ freshly-created global category proposal correctly returned `403
+ GLOBAL_CATEGORY_SCHEMA_NOT_SUPPORTED`; deleting a rule correctly removed it from the effective
+ schema on the next read; and a second, unrelated organization attempting to write OR read the
+ first organization's private category's schema both correctly 404'd.
+- RLS added for `category_attribute_schemas`, joined through the parent category's
+ `organizationId` (matching the existing `categories` policy's own `IS NULL OR = current org`
+ handling, since global-category rows must remain readable even though writing them isn't
+ supported yet).
+- Sets up item 13 (completeness scoring, `POST /products/:id/validate`) to consume this schema
+ directly — that item is next, per `BACKLOG.md`'s own dependency ordering, precisely because it
+ needed this data to exist first.
diff --git a/docs/architecture/adr/adr-030-attribute-value-provenance.md b/docs/architecture/adr/adr-030-attribute-value-provenance.md
new file mode 100644
index 0000000000..c408e3d2d0
--- /dev/null
+++ b/docs/architecture/adr/adr-030-attribute-value-provenance.md
@@ -0,0 +1,102 @@
+---
+title: "ADR-030: Attribute Value Provenance/Source Model"
+sidebar_label: "ADR-030"
+sidebar_position: 30
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 3 (attribute/classification
+engine) of the self-directed build sequence (`BACKLOG.md`) — item 12, bundled with item 11
+(ADR-029) in the backlog's own framing since both touch `AttributeValue`/`AttributeDefinition`,
+built as a separate ADR because the actual work is independent (item 11 is Category-level
+requirement rules; item 12 is per-value metadata) and landed in its own commit.
+
+## Context
+
+Deel 11 §50-54/§75-79 and Deel 24 §57-61/§95-105 describe the same requirement from two chapters:
+an `AttributeValue` needs to record where it came from, and OSPI must not let one source silently
+overwrite another's already-confirmed value without a clear model. Concretely:
+
+- **Provenance metadata** (Deel 11 §51, Deel 24 §57): `source`, `sourceOrganization`,
+ `sourceDocument`/`sourceSystem`, `sourceTimestamp`, `confidence`.
+- **A canonical source enum** (Deel 24 §58): `MANUFACTURER | SUPPLIER | IMPORT | USER | API |
+ CALCULATED | INFERRED`.
+- **Field-level federation / attribute ownership** (Deel 11 §75, Deel 24 §101): different
+ attributes on the same product can be supplied by different organizations — `Voltage` by the
+ manufacturer, `Stock` by a distributor, `RetailPrice` by a retailer.
+- **"Geen ongecontroleerde overwrites"** (Deel 11 §76): when organization B uses a shared product,
+ B must not silently change organization A's master value.
+- **Conflict state** (Deel 24 §103): `VERIFIED | UNVERIFIED | CONFLICTED`.
+- **Conflict resolution paths** (Deel 24 §104): owner authority, manual review, source priority,
+ verification, explicit override.
+
+Before this ADR, `AttributeValue` had no provenance whatsoever — a write from any source silently
+replaced whatever was there, with zero record of who supplied it or whether it had ever been
+confirmed.
+
+## Decision
+
+**Scope, narrower than the full spec vision, stated explicitly**: this ADR decorates the existing
+single `AttributeValue` row per (product/variant, attribute) with provenance metadata and a real,
+enforced "no uncontrolled overwrite" rule. It does **not** build a multi-candidate-value store where
+each source's submission is its own row with a separate canonical-selection step — that is
+`BACKLOG.md` phase 5 item 21 (Data-proposal / conflict-resolution workflow, Deel 14 §50-57's
+`SUBMITTED/UNDER_REVIEW/ACCEPTED/REJECTED/WITHDRAWN` flow), a genuinely larger feature. What this
+ADR delivers is the buildable, testable subset: provenance fields on the single row, plus a real
+(not merely documented) guard against silently clobbering a confirmed value.
+
+**New fields on `AttributeValue`**: `source` (the Deel 24 §58 enum, default `USER` — an omitted
+`source` behaves exactly as every pre-existing caller already does), `sourceOrganizationId`
+(defaults to the caller's own org if omitted — this is who *supplied* the value, independent of
+which org owns the product itself, enabling the Deel 11 §75 federation case), `sourceReference`
+(one free-text field collapsing Deel 11 §51's `sourceDocument`/`sourceSystem` — two fields for the
+same "where to look for more detail" need was judged unnecessary granularity), `confidence`
+(0..1), and `conflictState` (`UNVERIFIED` default / `VERIFIED` / `CONFLICTED`) with `verifiedAt`/
+`verifiedByUserId`.
+
+**The overwrite guard, concretely**: a value in `VERIFIED` or `CONFLICTED` state is protected — a
+write proposing a genuinely different value from a different source is rejected with `409
+VERIFIED_VALUE_CONFLICT`, and the existing row is flipped to `CONFLICTED` (a persisted, visible
+state change, not just a transient error nobody recorded) so the discrepancy shows up on the next
+read. A write from the *same* origin, or proposing the *same* value, is never blocked — matching
+the value being re-submitted unchanged, or the same source correcting its own prior entry, which
+isn't a real conflict. `UNVERIFIED` values have no such protection at all — nothing was ever
+confirmed as ground truth, so any write simply replaces it, identical to pre-ADR behavior.
+
+**Resolution paths, mapped onto existing endpoints rather than new ones** (Deel 24 §104):
+`POST /attribute-values/:id/verify` is the "manual review"/"verification" path — a human confirms
+an `UNVERIFIED` or `CONFLICTED` value is correct as-is, without touching the value itself.
+`forceOverride: true` on the normal set-attribute-value call is the "explicit override" path — it
+bypasses the guard entirely and always resets the row to `UNVERIFIED` (replacing an authoritative
+or disputed value is itself a fresh, not-yet-reviewed claim, regardless of what state it came from).
+`owner authority` and `source priority` resolution (Deel 24 §104/§105) are **not** built — both
+require a configurable per-organization ranking that doesn't exist yet, correctly left to item 21.
+
+## Consequences
+
+- Verified end-to-end over live HTTP against a live Postgres instance, reproducing Deel 11 §52's
+ own example almost verbatim (400V vs 415V): set `voltage = 400` with `source: MANUFACTURER`,
+ verified it (`conflictState` → `VERIFIED`), then a `SUPPLIER`-sourced write proposing `415`
+ correctly returned `409 VERIFIED_VALUE_CONFLICT` — and a direct database check confirmed the
+ original row was left completely untouched (`value: 400`, `source: MANUFACTURER`) with only
+ `conflictState` flipped to `CONFLICTED`. `forceOverride: true` with the same `415`/`SUPPLIER`
+ payload then correctly replaced the value AND reset `conflictState` to `UNVERIFIED` with
+ `verifiedAt`/`verifiedByUserId` cleared.
+ **A real bug was found and fixed during this verification, not by inspection**: the first
+ implementation only reset verification state when the existing row's `conflictState` was exactly
+ `VERIFIED` — but the guard itself had already flipped it to `CONFLICTED` on the prior rejected
+ attempt, so by the time `forceOverride` ran, the reset condition no longer matched and the stale
+ `CONFLICTED`/`verifiedAt`/`verifiedByUserId` silently carried forward onto the new value. Fixed
+ by making `forceOverride` unconditionally reset to `UNVERIFIED` regardless of the prior state,
+ and broadening the guard itself to protect `CONFLICTED` rows the same as `VERIFIED` ones (a
+ disputed value shouldn't be any easier to silently overwrite than a confirmed one). Re-verified
+ live after the fix with the same exact sequence.
+ Also verified: re-submitting the *same* value/source against an already-`VERIFIED` row succeeds
+ normally (not blocked — no real conflict exists); `POST /attribute-values/:id/verify` on an
+ already-`VERIFIED` value correctly `403`s; and a user from an unrelated organization attempting
+ to verify another organization's attribute value correctly `404`s.
+- No RLS policy added for `attribute_values` — it already had none before this ADR (documented,
+ pre-existing gap: the table has no direct `organizationId` column and RLS for it was explicitly
+ deferred to "route all access through the parent Product's tenant-scoped service methods," per
+ `prisma/sql/rls.sql`'s own existing note). Not something this ADR's scope covers or changes.
diff --git a/docs/architecture/adr/adr-031-product-completeness-scoring.md b/docs/architecture/adr/adr-031-product-completeness-scoring.md
new file mode 100644
index 0000000000..c2a3de383a
--- /dev/null
+++ b/docs/architecture/adr/adr-031-product-completeness-scoring.md
@@ -0,0 +1,104 @@
+---
+title: "ADR-031: Product/Attribute Completeness Scoring"
+sidebar_label: "ADR-031"
+sidebar_position: 31
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 3 (attribute/classification
+engine) of the self-directed build sequence (`BACKLOG.md`) — item 13, the last item of Phase 3,
+sequenced last specifically because it depends on item 11 (ADR-029, `CategoryAttributeSchema`) and
+item 12 (ADR-030, `AttributeValue` provenance) both already existing.
+
+## Context
+
+Deel 7 §6-10/§68-69, Deel 11 §72-74, Deel 22 §78-81, and Deel 24 §92-96 describe the same feature
+from four chapters, converging on identical concrete requirements:
+
+- **A single percentage is explicitly called insufficient** (Deel 11 §72: "Een enkel percentage is
+ onvoldoende voor data stewardship") — the response must also name exactly which attributes are
+ missing, not just report a number.
+- **The score must be based on more than a flat filled-field ratio** (Deel 7 §6): required,
+ recommended, and optional attributes, classification requirements, and publication requirements
+ — not "count of filled fields."
+- **Completeness ≠ validity** (Deel 24 §94): a field can be filled but wrong (`Voltage = "abc"`).
+- **A concrete validation API** (Deel 7 §68): `POST /products/{id}/validate` →
+ `{errors, warnings, score, readyForPublication}`.
+- **Publishing is gated on completeness** (Deel 7 §7, Deel 22 §78): "Cannot publish" when required
+ data is missing — a `Draft → Validation → Ready → Publish` state flow, not merely advisory.
+
+## Decision
+
+**`POST /products/:id/validate`** computes, live, on every call — no materialized/cached score —
+against the `CategoryAttributeSchema` effective schema (ADR-029) and the product's own
+`AttributeValue` rows (ADR-030):
+
+- **REQUIRED attribute missing** → an `errors` entry (`MISSING_REQUIRED_ATTRIBUTE`), naming the
+ attribute by its stable code.
+- **RECOMMENDED attribute missing** → a `warnings` entry (`MISSING_RECOMMENDED_ATTRIBUTE`) — soft,
+ never blocks.
+- **FORBIDDEN attribute carrying a value** → an `errors` entry (`FORBIDDEN_ATTRIBUTE_SET`).
+- **No category assigned at all** → an `errors` entry (`NO_CATEGORY`) — without a category, no
+ required-attribute schema can even be evaluated, which is itself a completeness gap worth
+ surfacing rather than silently treating as "0 requirements, 100% complete."
+- **Conditional rules** (Deel 11 §32, via ADR-029) are resolved exactly as they are for the
+ effective-schema endpoint: a rule whose condition attribute doesn't match the required value is
+ treated as `OPTIONAL` (never counted, never flagged) for that specific product.
+
+**`score`** weights a missing `REQUIRED` attribute twice as heavily as a missing `RECOMMENDED` one
+(`(requiredFilled×2 + recommendedFilled) / (requiredTotal×2 + recommendedTotal) × 100`, rounded;
+100 when there's nothing to require at all) — a concrete, documented default rather than an
+unexplained number, honoring Deel 24 §95's "the exact scoring must remain configurable" by making
+this ONE clearly-stated formula rather than pretending a universally-correct weighting exists.
+`OPTIONAL` attributes never affect the score, matching Deel 11 §31's own framing ("not every product
+needs color information"). **`requiredCompleted`** is the separate, narrower percentage Deel 7 §69's
+own example response names explicitly — just required-attribute fill rate, with no
+`RECOMMENDED`/`FORBIDDEN` mixed in.
+
+**`readyForPublication`** is `errors.length === 0` — a pure function of the hard blockers, entirely
+independent of `score` (the `NO_CATEGORY`-only case demonstrates why: `score` alone would report
+100% since there's nothing to require, while `readyForPublication` correctly stays `false`, exactly
+the "a single percentage is insufficient" problem Deel 11 §72 names).
+
+**Publishing is a real, enforced gate, not just advisory**: `ProductsService.publish()` now calls
+`validateProduct()` first and rejects with `400 PRODUCT_NOT_READY_FOR_PUBLICATION` (carrying the
+same `errors` array) when `readyForPublication` is `false` — Deel 7 §7's "cannot publish" and
+Deel 22 §78's `Draft → Validation → Ready → Publish` flow are both literal, not aspirational.
+`unpublish`/`retire`/`recall`/the generic `PATCH` remain ungated — only the specific act of
+publishing requires readiness, matching this build's existing "dedicated lifecycle actions add
+guardrails, the generic path stays a lower-friction escape hatch" pattern from ADR-024.
+
+**Deliberately NOT checked** (flagged, not silently assumed covered): Deel 7 §7's own example list
+also includes "Safety document" and "Image" as completeness requirements — `Document` has no
+`documentType` field yet to distinguish a safety datasheet from any other upload
+(`BACKLOG.md` phase 4 item 16), so there's no reliable way to check for one today without either
+building that first or writing a misleading heuristic ("has at least one document" is not the same
+claim as "has a safety document"). This becomes buildable the moment item 16 lands. Also not built:
+Deel 24 §92's full "Validity / Verification / Freshness" quality dimensions beyond completeness —
+`AttributeValue.conflictState`/`verifiedAt` (ADR-030) already carry the raw data a freshness/
+verification score would consume, but composing them into Deel 11 §73's fuller "Data Quality Score:
+94/100" composite is explicitly framed by the spec itself as later work ("Later kan OSPI een
+uitgebreider scoremodel gebruiken").
+
+## Consequences
+
+- Verified end-to-end over live HTTP against a live Postgres instance: a category with `power`/
+ `voltage` REQUIRED, `efficiency_class` RECOMMENDED, and a deliberately-named `legacy_field`
+ FORBIDDEN; an empty product against it correctly returned `score: 0`, `requiredCompleted: 0`,
+ two named `errors`, one named `warning`, `readyForPublication: false`; filling both REQUIRED
+ attributes moved it to `score: 80` (`(2×2+0)/(2×2+1)×100`), `requiredCompleted: 100`, zero
+ errors, `readyForPublication: true`; setting the FORBIDDEN attribute's value on top correctly
+ reintroduced exactly one error (`FORBIDDEN_ATTRIBUTE_SET`) without moving the score (a forbidden
+ value isn't part of the weighted ratio, only a hard block) and flipped `readyForPublication` back
+ to `false`. A fresh, clean product (both REQUIRED filled, no FORBIDDEN value) was actually
+ published successfully (`201`) through the real `POST /products/:id/publish` endpoint; a product
+ still missing REQUIRED attributes was correctly rejected at `publish` time with
+ `400 PRODUCT_NOT_READY_FOR_PUBLICATION` before any status transition occurred. A product with no
+ category assigned at all correctly showed `score: 100` (nothing to divide by) alongside
+ `readyForPublication: false` via the standalone `NO_CATEGORY` error — the exact "percentage alone
+ is misleading" scenario the ADR's own design targets.
+- This closes `BACKLOG.md` Phase 3 (attribute/classification engine) in full — ADR-029
+ (Category → Attribute Schema), ADR-030 (provenance/source), and now ADR-031 (completeness
+ scoring) together deliver everything the spec's own "architectural centerpiece" framing named,
+ narrowed in the specific, documented ways stated across all three ADRs.
diff --git a/docs/architecture/adr/adr-032-product-localization.md b/docs/architecture/adr/adr-032-product-localization.md
new file mode 100644
index 0000000000..0ed03d6991
--- /dev/null
+++ b/docs/architecture/adr/adr-032-product-localization.md
@@ -0,0 +1,86 @@
+---
+title: "ADR-032: Product Localization/Translation Model"
+sidebar_label: "ADR-032"
+sidebar_position: 32
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 4 (product content &
+relationships) of the self-directed build sequence (`BACKLOG.md`) — item 14, found independently
+by 4 of 5 re-audit passes, the strongest cross-validated finding of the entire audit. Sequenced
+first in Phase 4, per `BACKLOG.md`'s own note, so later product-content features inherit
+localization rather than needing a retrofit.
+
+## Context
+
+Six source chapters (Deel 3 §39, Deel 6 §40-42, Deel 7 §54-55, Deel 10 §35-37, Deel 22 §57-61/§102,
+Deel 26 §57-59) plus Constitution §21 converge on the same requirement, phrased almost identically
+every time: `Product.name`/`description` must not be a single flat string — a product needs
+per-locale values (`nl-BE`, `fr-BE`, `en`, `de`, ...), with a predictable fallback chain when a
+requested locale is missing. Deel 6 §41 gives a concrete conceptual shape
+(`LocalizedValue { resourceId, field, language, value }`) but explicitly says the exact
+implementation may differ "zolang dezelfde functionaliteit wordt bereikt." Deel 7 §55 explicitly
+scopes the translation *workflow* (request → translate → review → publish) as later work: "Voor
+MVP kan dit eenvoudiger worden gehouden."
+
+Before this ADR, `Product.name`/`description` were flat strings with no localization mechanism at
+all.
+
+## Decision
+
+**A dedicated `ProductTranslation` table, not a generic polymorphic `LocalizedValue`.** The spec's
+own generic shape (`resourceId`/`field`/`language`/`value`) would mean every consumer does
+string-keyed, weakly-typed lookups against an arbitrary-entity table — a real departure from this
+codebase's established convention of strongly-typed, per-entity relation tables (compare
+`AttributeValue`, which is itself scoped to Product/Variant, not "any entity, any field"). Since
+the spec explicitly permits an equivalent alternative implementation, this ADR builds
+`ProductTranslation(productId, locale, name, description)` instead — one row per (product, locale),
+FK-safe, matching the rest of the schema's style.
+
+**`Product.name`/`description` remain the base/fallback values** — no data migration, and zero
+behavior change for any existing caller that never asks for a locale. A translation is additive: it
+overrides the base for a specific locale, never replaces it.
+
+**Fallback chain** (`localization.util.ts`, unit-tested): requested locale exact match → language-
+only prefix (`fr-BE` → `fr`) → the base Product fields. **Resolved independently per field**
+(`name`, `description` each walk their own chain) rather than picking one whole translation row —
+a translation that only overrides `description` still lets `name` fall through to a
+less-specific match or the base value on its own, instead of forcing an unrelated field to inherit
+whatever row happened to match first. This directly matches Deel 6 §42's own framing of the
+fallback as being about "een gelokaliseerd veld" (a localized *field*), not a whole record.
+
+**Wired into `GET /products/:id?locale=fr-BE`** — `ProductsService.findOne` accepts an optional
+`locale` and, when given, returns the resolved `name`/`description` plus `requestedLocale`/
+`resolvedLocale` so a caller can tell exactly which locale actually supplied the name they got back
+(useful for a UI that wants to show "showing English, no French translation yet"). **Not wired into
+`GET /products` (the list/search endpoints)** in this pass — bulk per-row locale resolution across
+a listing is a related but separable concern, deliberately deferred rather than adding N-query
+resolution cost to every list call without a concrete need for it yet; `findOne` was the
+higher-value, unambiguous integration point.
+
+**Translation workflow deliberately NOT built** (Deel 7 §55's own "for MVP, keep this simpler"):
+just direct CRUD (`PUT`/`GET`/`DELETE /products/:id/translations[/:locale]`), no
+`SUBMITTED → TRANSLATED → REVIEWED → PUBLISHED` review pipeline. Any authenticated org member with
+`products:write` can set a translation directly, same access level as editing the base product.
+
+## Consequences
+
+- Verified end-to-end over live HTTP against a live Postgres instance, reproducing the spec's own
+ worked example nearly verbatim: a product with base `name: "Electric motor"`, an `nl` translation
+ (`name` only), and an `fr-BE` translation (`name` + `description`). `GET` without a `locale`
+ returned the untouched base values (zero behavior change for existing callers).
+ `?locale=fr-BE` returned the exact match on both fields (`resolvedLocale: "fr-BE"`).
+ `?locale=fr-FR` (no `fr-BE`, no plain `fr` row exists) correctly fell all the way to base.
+ `?locale=nl-BE` correctly fell back to the `nl` row for `name` (`resolvedLocale: "nl"`) while
+ `description` — which the `nl` row never set — independently fell all the way through to the
+ base value, proving the per-field (not per-row) resolution actually happens live, not just in
+ the unit tests. Deleting the `nl` translation and re-querying `?locale=nl-BE` correctly reverted
+ to the base name. An empty translation body (`{}`, no `name` or `description`) was correctly
+ rejected with `400`. A second, unrelated organization attempting to write a translation onto the
+ first organization's product correctly `404`'d.
+- RLS added for `product_translations`, joined through the parent product's `organizationId`, same
+ pattern as `dpp_records`/`webhook_deliveries`/`sessions`/`category_attribute_schemas`.
+- Sets up the rest of Phase 4 (item 15 Product Relationships, item 16 Document metadata) to build on
+ a product model that already has real, tested localization — matching `BACKLOG.md`'s own
+ sequencing rationale for putting this item first.
diff --git a/docs/architecture/adr/adr-033-product-relationships.md b/docs/architecture/adr/adr-033-product-relationships.md
new file mode 100644
index 0000000000..ca33a18470
--- /dev/null
+++ b/docs/architecture/adr/adr-033-product-relationships.md
@@ -0,0 +1,89 @@
+---
+title: "ADR-033: Product Relationships Model"
+sidebar_label: "ADR-033"
+sidebar_position: 33
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 4 (product content &
+relationships) of the self-directed build sequence (`BACKLOG.md`) — item 15, found independently
+by 3 of 5 re-audit passes.
+
+## Context
+
+Deel 7 §39-42, Deel 10 §43-44, Deel 22 §25-29/§107, and Deel 26 §48-51 all describe products
+relating to other products, converging on one concrete model (Deel 22 §26): a relationship has a
+`sourceProduct`, `relationshipType`, `targetProduct`, `metadata`, and a `validFrom`/`validUntil`
+window. Two structural requirements are explicit:
+
+- **Directionality where relevant** (Deel 22 §28): "Product A supersedes Product B" is not the
+ same claim as "Product B supersedes Product A" — the database must store direction explicitly,
+ not treat every relationship as inherently symmetric.
+- **Independent visibility** (Deel 7 §42): a relationship can be private or public, separately
+ from the product's own publication state — "een interne ERP-relatie hoeft niet automatisch
+ publiek te worden."
+
+The union of relationship-type examples across all four chapters: `replacement_for`,
+`compatible_with`, `accessory_for`/`accessory_of`, `part_of`, `contains`, `variant_of`,
+`supersedes`, `requires`.
+
+**Explicitly out of scope, by the spec's own words**: Deel 7 §43-44 (Product Bundles, Bill of
+Materials) are named as *separate*, deliberately modular features — "BOM functionaliteit wordt
+modulair gehouden zodat het core Product model niet onnodig complex wordt." This ADR does not build
+either. Product *Family* (variants of one base product) is separately and correctly already
+covered by `Product`/`ProductVariant` (ADR-010) — this ADR is additive, not a duplicate of that.
+
+## Decision
+
+**New `ProductRelationship(sourceProductId, targetProductId, relationshipType, visibility,
+metadata, validFrom, validUntil)`**, directional by construction — there is no symmetric/bidirectional
+flag or auto-generated reverse row; a caller wanting the converse relationship queryable creates a
+second, separate row. `relationshipType` is the eight-value union above
+(`REPLACEMENT_FOR | ACCESSORY_FOR | COMPATIBLE_WITH | PART_OF | CONTAINS | VARIANT_OF | SUPERSEDES |
+REQUIRES`). A unique constraint on `(sourceProductId, targetProductId, relationshipType)` prevents
+exact duplicates while still allowing the same product pair to carry multiple *different*
+relationship types (e.g. both `ACCESSORY_FOR` and `COMPATIBLE_WITH`).
+
+**Cross-organization by design, not an oversight**: creating a relationship only requires the
+caller to own the SOURCE product — the target just needs to exist, in any organization. "A
+third-party accessory maker declares their product is `COMPATIBLE_WITH` someone else's printer" is
+a real, legitimate use case this platform's multi-tenant marketplace nature explicitly calls for,
+not an access-control gap to close.
+
+**Visibility gates cross-organization reads, checked per-relationship-row, not per-queried-product**:
+a relationship is visible to a caller if it's `PUBLIC`, or if the caller's organization owns
+EITHER the source or the target of that specific row — independent of which of the two products the
+`GET .../relationships` call happened to be made through. This matters concretely: the target
+organization (who didn't create the relationship) can still see a `PRIVATE` relationship pointing at
+their own product, while a completely unrelated third organization sees only the `PUBLIC` ones.
+Default visibility is `PRIVATE` (Deel 7 §42's own framing — public is the exception, not the
+default). The same rule is enforced twice: once in `ProductsService.listRelationships` and once in
+`prisma/sql/rls.sql`'s new policy, matching this codebase's established defense-in-depth pattern.
+
+**Deletion is restricted to the source product's owner** — the party that created the relationship
+is the one who can retract it; the target owner (even though they can *see* a relationship pointing
+at their product) cannot unilaterally delete someone else's declared relationship about their own
+product.
+
+## Consequences
+
+- Verified end-to-end over live HTTP against a live Postgres instance with two genuinely separate
+ organizations, reproducing Deel 22 §27's own worked example almost exactly: "Printer A"
+ (organization 1) declared `COMPATIBLE_WITH` "Cartridge B" (organization 2, never granted any
+ special access) — the cross-organization creation succeeded. A duplicate of the exact same
+ (source, target, type) triple correctly `409`'d; a product declaring a relationship to itself
+ correctly `400`'d. With the relationship left at its default `PRIVATE` visibility: organization 1
+ (the source owner) and organization 2 (the target owner, despite never having created it)
+ BOTH correctly saw it when listing their own product's relationships, while a freshly-registered,
+ completely unrelated third organization correctly saw zero. Adding a second, `PUBLIC` relationship
+ between the same two products then correctly became visible to that third organization — while
+ the original `PRIVATE` one remained invisible to them, confirming the filter operates per-row,
+ not "product has any public relationship, show them all." Deletion authorization was verified
+ from both sides: the target owner (organization 2) attempting to delete the relationship via their
+ own product's route correctly `404`'d (they can see it, not retract it), while the actual source
+ owner (organization 1) deleted it successfully.
+- RLS added for `product_relationships`, matching the same visibility rule as the application-layer
+ check — a single join against `products` matched on EITHER `sourceProductId` or
+ `targetProductId`, the same bilateral-visibility shape `connections`/`sharing_grants` already use
+ for their own two-party relationships, applied here to a join instead of two direct columns.
diff --git a/docs/architecture/adr/adr-034-document-metadata.md b/docs/architecture/adr/adr-034-document-metadata.md
new file mode 100644
index 0000000000..a82310a6d5
--- /dev/null
+++ b/docs/architecture/adr/adr-034-document-metadata.md
@@ -0,0 +1,95 @@
+---
+title: "ADR-034: Document Metadata Model"
+sidebar_label: "ADR-034"
+sidebar_position: 34
+---
+
+**Status:** Accepted
+**Date:** 2026-08-20
+**Raised by:** re-audit against the source spec (2026-08-19), Phase 4 (product content &
+relationships) of the self-directed build sequence (`BACKLOG.md`) — item 16, the last item of
+Phase 4, found independently by 2 of 5 re-audit passes across 6 chapters.
+
+## Context
+
+Deel 3 §36-37, Deel 6 §46-48, Deel 7 §50-53, Deel 13 §7-31, Deel 18 §9-26, and Deel 22 §67-69 all
+describe the same gap: `Document` (ADR-017 built only the storage *backend* — where bytes actually
+live — not this metadata shape) had no `documentType`, no integrity/dedup mechanism, no validity
+window, no lifecycle state, and no certificate-specific fields. Concretely, from Deel 13 alone:
+
+- **Standardized document/asset types** (Deel 13 §14, Deel 7 §50): `PRIMARY_IMAGE`,
+ `GALLERY_IMAGE`, `TECHNICAL_DRAWING`, `DATASHEET`, `MANUAL`, `CERTIFICATE`, `DECLARATION`,
+ `SAFETY_DOCUMENT`, `INSTALLATION_GUIDE`, `VIDEO` — the union across both chapters.
+- **Integrity and dedup via checksum** (Deel 13 §9-10): every upload gets a SHA-256; identical
+ bytes uploaded twice can reuse the same stored asset rather than doubling storage.
+- **Validity windows** (Deel 7 §52): `validFrom`/`validUntil`, "voor certificaten is dit
+ essentieel," but meaningful for any document type.
+- **Document versions / current-version clarity** (Deel 7 §51): "de actuele versie moet duidelijk
+ bepaald zijn."
+- **Certificate-specific metadata** (Deel 13 §27-28): `certificateNumber`, `issuer`
+ (preferably a real `issuerOrganizationId` when the issuer is itself an OSPI organization),
+ `issuedAt`, `scope`.
+- **Ordering** (Deel 13 §16): `sortOrder` as presentation metadata.
+
+**A real, explicit distinction the spec draws but this ADR deliberately collapses**: Deel 13 §15
+separates "asset type" (intrinsic to the file) from "product role" (how one specific product uses
+it — "an image can be the primary image for one product and a gallery image for another"), which
+only matters if a single physical asset is reused across multiple products via a many-to-many
+`ProductAsset` join. `Document.productId` remains a direct, nullable FK in this build (one document,
+at most one product) — not restructured into that join table — so there is nothing for "type" and
+"role" to differ ACROSS in practice; this ADR uses one field, `documentType`, covering the full
+union list.
+
+## Decision
+
+**`Document` gains**: `documentType` (the union enum above, default `OTHER`), `lifecycleStatus`
+(`ACTIVE`/`SUPERSEDED`/`ARCHIVED`, default `ACTIVE` — answers "which version is current" via
+filtering rather than a separate version-chain model: an old version moves to `SUPERSEDED`, not
+deleted), `validFrom`/`validUntil`, `checksum` (SHA-256 hex), `sortOrder` (default `0`), and
+`certificateMetadata` (a single `Json?` blob — `{certificateNumber?, issuer?,
+issuerOrganizationId?, issuedAt?, scope?}` — collapsed from 5 separate typed columns since none of
+them need to be queried or joined on in this pass; `issuerOrganizationId` inside the JSON is a
+convention pointing at a real Organization id when known, not a DB-enforced foreign key).
+
+**Real SHA-256 dedup, not just a stored hash**: `DocumentsService.upload()` computes the checksum
+from the actual decoded bytes, then checks for an existing `Document` in the same organization with
+the identical checksum. If found, the NEW document row reuses that existing row's `storageRef`
+instead of calling `DocumentStorageService.upload()` a second time — the underlying bytes are
+genuinely stored once, while the new row still gets its own name/`productId`/`documentType`, since
+the same physical file can legitimately serve a different role attached to a different product.
+`CreateDocumentDto` (the metadata-only path, which never sees any bytes) accepts an optional
+caller-supplied `checksum` instead, since there's nothing to compute one from at that layer.
+
+**`PATCH /documents/:id`** (new) updates `documentType`/`lifecycleStatus`/`validFrom`/`validUntil`/
+`sortOrder`/`certificateMetadata` without ever touching the stored file — metadata corrections
+(e.g. discovering a certificate's real expiry after upload, or marking an old manual `SUPERSEDED`)
+shouldn't require re-uploading bytes that haven't changed.
+
+**`GET /documents?documentType=SAFETY_DOCUMENT`** (new filter) — the concrete query this metadata
+exists to answer ("does this product have a safety document"), validated against the known enum
+with a clean `400` on an unrecognized value rather than a raw ORM error.
+
+**Deliberately NOT built in this pass** (flagged, not silently dropped): Deel 13 §30's document
+provenance (`uploadedBy`/`sourceOrganization`/`sourceSystem`/`sourceReference`) — not part of this
+item's already-agreed field list; Deel 13 §17-19's per-locale document content (a `Manual` in
+`nl-BE`/`fr-BE`/`en-GB`) — a related but separate concern from ADR-032's product-field localization,
+not attempted here; Deel 7 §53's digital signatures — explicitly named by the spec itself as
+post-MVP ("Dit wordt niet verplicht voor MVP maar het datamodel mag dit niet onmogelijk maken" — the
+new nullable, additive fields don't foreclose adding this later).
+
+## Consequences
+
+- Verified end-to-end over live HTTP against a live Postgres instance: uploading a `CERTIFICATE`
+ document with `validFrom`/`validUntil` and full `certificateMetadata`
+ (`certificateNumber`/`issuer`/`scope`) round-tripped correctly, and its `checksum` was
+ independently recomputed in Python from the same raw bytes and confirmed to match exactly.
+ Uploading the IDENTICAL bytes a second time with a different name and `documentType: DATASHEET`
+ produced a distinct new `Document` row that reused the exact same `storageRef` as the first —
+ confirming the dedup actually skips a second physical store, not just a second checksum
+ computation. `PATCH /documents/:id` correctly moved a document to `SUPERSEDED` without touching
+ its stored bytes. `GET /documents?documentType=DATASHEET` and `?documentType=CERTIFICATE`
+ correctly returned exactly the matching documents each; an unrecognized `documentType` value
+ correctly `400`'d instead of surfacing a raw database error.
+- This closes `BACKLOG.md` Phase 4 (product content & relationships) in full — ADR-032
+ (localization), ADR-033 (relationships), and now ADR-034 (document metadata) together deliver
+ everything that phase named, narrowed in the specific, documented ways each ADR states.
diff --git a/docs/architecture/domain-model.md b/docs/architecture/domain-model.md
new file mode 100644
index 0000000000..3d7529c712
--- /dev/null
+++ b/docs/architecture/domain-model.md
@@ -0,0 +1,61 @@
+---
+title: Domain model
+sidebar_label: Domain model
+sidebar_position: 2
+---
+
+# Domain model
+
+The platform is a single PostgreSQL database (via Prisma) with one module per bounded domain. This page groups the real schema models (`prisma/schema.prisma`) by module — see the linked ADRs for why each shape was chosen where the source spec was ambiguous.
+
+## Organizations & Identity
+
+- **Organization** — the tenant. Every other row in the system is scoped to one, either directly (`organizationId`) or transitively.
+- **LegalEntity**, **User**, **Session** — an organization's legal registration and its human users; `Session` backs refresh-token revocation ([ADR-028](/architecture/adr/adr-028-session-and-token-revocation)).
+- **Role**, **UserRole** — custom, resource-scoped roles on top of a seeded `'*'` Owner role ([ADR-018](/architecture/adr/adr-018-fine-grained-rbac), [ADR-023](/architecture/adr/adr-023-resource-scoped-roles-and-system-roles)).
+- **ApiClient** — machine-to-machine credentials (`ospi_.`).
+
+## Producers & OSPI Codes
+
+- **Producer** — an organization's registration as a producer of goods.
+- **ProducerCode** — the `AAAA` segment of the OSPI code, issued per producer.
+- **OspiIdentity** — the global product/variant identifier: producer code + company product id + variant, with a `RESERVED → REGISTERED → ACTIVE → SUSPENDED → RETIRED` lifecycle ([ADR-024](/architecture/adr/adr-024-product-identity-lifecycle-and-decimal-quantity)). The checksum and segment-width rules are [ADR-004](/architecture/adr/adr-004-ospi-code-checksum) and [ADR-008](/architecture/adr/adr-008-ospi-code-segment-widths).
+- **SerializedUnit** — an optional, lightweight per-unit serial/batch record computed from its parent identity, never required for pricing ([ADR-015](/architecture/adr/adr-015-pricing-vs-serialization)).
+
+## Products & Classification
+
+- **Product**, **ProductVariant** — every variant always carries its own `OspiIdentity`.
+- **ProductTranslation** — per-locale `name`/`description` with fallback resolution ([ADR-032](/architecture/adr/adr-032-product-localization)).
+- **ProductRelationship** — directional links between products (`REPLACEMENT_FOR`, `ACCESSORY_FOR`, `COMPATIBLE_WITH`, `PART_OF`, `CONTAINS`, `VARIANT_OF`, `SUPERSEDES`, `REQUIRES`) ([ADR-033](/architecture/adr/adr-033-product-relationships)).
+- **Category**, **CategoryAttributeSchema** — categories can be organization-owned or proposed as `global` under registry governance ([ADR-020](/architecture/adr/adr-020-category-registry-governance)); a category declares required/recommended/optional/forbidden attributes ([ADR-029](/architecture/adr/adr-029-category-attribute-schema)).
+- **AttributeDefinition**, **AttributeValue** — the attribute engine. Every value carries a provenance/source and conflict state ([ADR-030](/architecture/adr/adr-030-attribute-value-provenance)); [ADR-003](/architecture/adr/adr-003-attribute-datatype-system) fixes the datatype system.
+- **ClassificationScheme**, **ClassificationNode**, **ClassificationAssignment** — a separate, largely unused classification tree (attribute schemas attach to `Category` instead — see ADR-029 for why).
+
+## Documents & Audit
+
+- **Document** — file metadata (`documentType`, `lifecycleStatus`, `validFrom`/`validUntil`, SHA-256 `checksum`, `certificateMetadata` — [ADR-034](/architecture/adr/adr-034-document-metadata)); storage is behind an abstraction currently bound to local disk ([ADR-017](/architecture/adr/adr-017-document-storage-abstraction)).
+- **AuditLog** — explicit `AuditService.log(...)` calls from every mutating service method, kept separate from application logs.
+
+## Inventory
+
+- **Location**, **InventoryRecord** — owner-scoped stock. `availableQuantity`/`availabilityStatus` are always *derived at read time*, never stored ([ADR-009](/architecture/adr/adr-009-inventory-record-shape)).
+
+## Connections, Sharing & Search
+
+- **Connection** — the request/accept/reject/suspend/terminate lifecycle between two organizations.
+- **SharingGrant** — riding on an `ACTIVE` connection, scopes exactly which products and data categories a partner can see, optionally narrowed by an attribute-based `ruleFilter` ([ADR-010](/architecture/adr/adr-010-sharing-scope-model), [ADR-022](/architecture/adr/adr-022-rule-based-sharing-scopes)).
+- Search is PostgreSQL full-text search plus a public OSPI code resolver ([ADR-012](/architecture/adr/adr-012-search-postgres-fts), [ADR-014](/architecture/adr/adr-014-code-resolution-visibility)).
+
+## Ordering & Commerce
+
+- **Offer** — a seller's commercial listing for a product (sellable even without owning it, given an `ORDERING` sharing grant), with optional per-buyer minimums ([ADR-021](/architecture/adr/adr-021-per-buyer-offer-minimum)).
+- **Order**, **OrderGroup**, **OrderLine** — draft → add lines → submit → accept/reject → process → fulfil → complete, split per seller into an `OrderGroup` ([ADR-011](/architecture/adr/adr-011-ordering-mvp-simplifications)).
+
+## Digital Product Passport & Webhooks
+
+- **DppProfile**, **DppRecord** — a named, versioned list of required attribute codes, composed live from existing Attributes/Documents with no duplicated storage. Explicitly not an EU ESPR compliance implementation ([ADR-006](/architecture/adr/adr-006-dpp-espr-stance)); public access is gated by a rotatable 256-bit token, not the (low-entropy) OSPI checksum ([ADR-013](/architecture/adr/adr-013-dpp-public-access-token)).
+- **WebhookSubscription**, **WebhookDelivery** — HMAC-signed, thin-payload event notifications with exponential-backoff retries and dead-lettering ([ADR-026](/architecture/adr/adr-026-webhooks)).
+
+---
+
+Every service method filters by `organizationId` explicitly (Constitution §14), and PostgreSQL Row-Level Security is layered on top as defense-in-depth ([ADR-007](/architecture/adr/adr-007-multi-tenancy-isolation)).
diff --git a/docs/architecture/intro.md b/docs/architecture/intro.md
new file mode 100644
index 0000000000..078b06093d
--- /dev/null
+++ b/docs/architecture/intro.md
@@ -0,0 +1,44 @@
+---
+title: Architecture overview
+sidebar_label: Overview
+sidebar_position: 1
+slug: /
+---
+
+# Architecture overview
+
+This section documents how the OSPI platform ([`ospi-platform`](https://github.com/BrickeVD/ospi-platform)) is actually built, and — just as importantly — every place the source specification left something ambiguous, conflicting, or unspecified, and what the build decided instead.
+
+The source specification is a set of 26 domain chapters ("Deel 1" through "Deel 26") plus a Project Constitution. Those chapters were written independently over time and, in several places, disagree with each other or describe something that cannot literally be implemented as written (a checksum algorithm applied to the wrong kind of data, duplicate chapters with diverging enum values, ambiguous identifier segment widths). Rather than silently picking one interpretation, every such judgment call was written down as a numbered **Architecture Decision Record (ADR)**.
+
+## How to use this section
+
+- **Start with [ADR-001](/architecture/adr/adr-001-technology-stack)** for why the platform is a NestJS/PostgreSQL modular monolith rather than a microservice mesh.
+- **Read [ADR-004](/architecture/adr/adr-004-ospi-code-checksum) and [ADR-008](/architecture/adr/adr-008-ospi-code-segment-widths) before issuing any OSPI code to a real external party** — together they define the actual, implemented public identifier format. The source documents' Luhn-checksum description is mathematically broken (Luhn operates on numeric digit streams, not a 3-character alphanumeric segment); ADR-004 replaces it with a CRC-16/base32 checksum instead, explicitly flagged as requiring formal ratification before production issuance.
+- **Read [ADR-010](/architecture/adr/adr-010-sharing-scope-model) and [ADR-022](/architecture/adr/adr-022-rule-based-sharing-scopes)** before connecting two real organizations — together they are the entire access-control model for cross-organization data.
+- Several ADRs are marked **provisional / requires ratification**. Treat those as open decisions for the team, not settled fact.
+- Some questions are explicitly **not** answered by any ADR because they aren't engineering questions — see [Open governance questions](#open-governance-questions) below.
+
+## Domain chapters implemented
+
+| Deel | Title | Status |
+| --- | --- | --- |
+| Constitution §43 | MVP boundary (Identity, Organizations, Auth, Producer Codes, OSPI Codes, Products, Variants, Categories, Attributes, Classification, Documents, Audit) | Built |
+| Deel 12 | Digital Product Passport | Built as a generic scaffold — **not** an EU ESPR compliance implementation, see [ADR-006](/architecture/adr/adr-006-dpp-espr-stance) |
+| Deel 14 | Product Sharing & Data Distribution | Built |
+| Deel 15 | Connections, Partners & Ecosystem | Built |
+| Deel 16 | Inventory, Availability & Where to Find | Built |
+| Deel 17 | Ordering & Commerce API | Built (no payments, no automatic stock reservation — see [ADR-011](/architecture/adr/adr-011-ordering-mvp-simplifications)) |
+| Deel 19 | Search, Discovery, Product Resolver & OSPI Graph | Built (PostgreSQL full-text search, not a dedicated search engine — see [ADR-012](/architecture/adr/adr-012-search-postgres-fts)) |
+
+## Open governance questions
+
+These are recorded because they materially affect how the platform should be used, but no ADR resolves them — they are not engineering problems:
+
+- Who owns/governs the OSPI standard itself (foundation, consortium, single company)?
+- The relationship to GS1/GTIN — complement, integrate, or compete? (`gtin` values are checksum-validated against GS1's published algorithm, but this does **not** confirm registration with GS1 — see [ADR-005](/architecture/adr/adr-005-gs1-relationship).)
+- Legal review of Digital Product Passport claims against the actual EU ESPR delegated acts.
+
+Treat these as blocking for anything beyond internal prototyping, particularly once real money moves through the Ordering module.
+
+See also: [Domain model](/architecture/domain-model).
diff --git a/docs/cli/getting-started.mdx b/docs/cli/getting-started.mdx
deleted file mode 100644
index 69c7c8fe2d..0000000000
--- a/docs/cli/getting-started.mdx
+++ /dev/null
@@ -1,81 +0,0 @@
----
-sidebar_position: 2
-description: >-
- Get started with Dyte CLI using our comprehensive guide. Follow step-by-step
- instructions for a smooth development.
----
-
-# Getting started
-
-The Dyte CLI needs a little bit of work to get started. We're working on
-reducing the amount of effort required, but for now you'll have to do the
-following.
-
-## Manual Configuration
-
-1. Authorize yourself with the Dyte Dev Portal. This allows you to access all
- the organizations that you belong to from the CLI.
-
-```shell
-dyte auth login
-```
-
-2. Select the organization you want to run commands in the context of.
-
-```bash
-dyte auth org
-```
-
-## Programmatic Configuration
-
-If browser-based authorization via `dyte auth login` is not suitable, you can alternatively authorize the Dyte CLI programmatically using the following command:
-
-```bash
-dyte config creds --org-id YOUR_DYTE_ORG_ID --api-key API_KEY_OF_THE_ORG
-```
-
-This method is especially beneficial for automating workflows, such as integrating CI/CD pipelines in custom plugin development.
-
-Note that this is an organization-specific authorization. As a result, commands like dyte auth org will not function. However, you can still perform organization-specific operations, including publishing plugins and creating meetings.
-
-## Usage
-
-### General
-
-The Dyte CLI is
-[POSIX compliant](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html).
-This means in general, a command has the following format:
-
-```shell
-dyte [subcommand] [options]
-```
-
-### Getting help
-
-The `dyte help` command shows you a comprehensive list of all the top-level
-commands and a short description of what each command does. You can run
-`dyte help` to know more about the command and its subcommands (if
-any).
-
-```shell
-dyte help
-```
-
- _Dyte help screen_
-
-### Switching organizations
-
-Simply run the following command again to switch to another organization. The
-list of organizations can be filtered by name or ID.
-
-```shell
-dyte auth org
-```
-
-
- CLI Getting started
-
-
diff --git a/docs/cli/installation.mdx b/docs/cli/installation.mdx
deleted file mode 100644
index 92b7528f70..0000000000
--- a/docs/cli/installation.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-sidebar_position: 1
-slug: /
-description: >-
- Learn about Dyte's Command Line Interface (CLI) and its powerful commands.
- Streamline your workflow with our CLI tools.
----
-
-# Dyte CLI
-
-The Dyte CLI is a unified utility that helps you manage Dyte services for your
-organization(s) directly from your command line.
-
-## Installation
-
-You can install the CLI from the NPM registry using `npm` or `yarn`.
-
-```bash npm2yarn
-npm install -g @dytesdk/cli
-```
-
-
- CLI Dyte CLI
-
-
diff --git a/docs/cli/meetings.mdx b/docs/cli/meetings.mdx
deleted file mode 100644
index e897e216e2..0000000000
--- a/docs/cli/meetings.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-sidebar_position: 3
-description: >-
- "Explore Dyte CLI's capabilities for managing meetings from the command line.
- Learn how to create
----
-
-# Meetings
-
-The CLI allows you to perform some basic functions with meetings, including
-creating a meeting and viewing its sessions.
-
-More functionality will make its way here soon.
-
-## Creating a meeting
-
-Creating a meeting is as simple as running:
-
-```shell
-dyte meetings create
-```
-
- _Creating a
-meeting_
-
-## Viewing a meeting's sessions
-
-You can view a meeting's sessions by running:
-
-```shell
-dyte meetings info
-```
-
- _Viewing meeting info_
-
-
- CLI Meetings
-
-
diff --git a/docs/cli/plugins.mdx b/docs/cli/plugins.mdx
deleted file mode 100644
index 91bd0f0666..0000000000
--- a/docs/cli/plugins.mdx
+++ /dev/null
@@ -1,181 +0,0 @@
----
-sidebar_position: 5
-description: >-
- Extend the functionality of Dyte CLI with our plugin documentation. Discover a
- variety of plugins and integration steps.
----
-
-# Plugins
-
-You may create, manage, and host your own custom plugins with the help of the
-`dyte plugins` subcommand.
-
-## Overview
-
-You can publish plugins for your organization on Dyte. We manage only the
-client-side code for plugins, the backend for a plugin (if any) **will not** be
-hosted by Dyte. Therefore, server-side templating is not supported in plugins.
-
-Every functional Dyte plugin requires a configuration file, which is named
-`dyte-config.json` by default. This contains details about the plugin such as
-the `pluginId`, `name`, `version`, `description`, etc. This file is
-auto-generated upon running the `dyte plugins create` command, which is
-explained in detail later. You can know more about the `dyte-config.json` file
-in the description for the `publish` subcommand.
-
-## TL;DR
-
-In order to create and publish a plugin, you need to do the following.
-
-1. Run `dyte plugins create`, and enter the details. This should create a
- `dyte-config.json` file.
-2. Copy the `dyte-config.json` into the folder containing the `index.html` file
- of your plugin. If you're using a frontend library like React, this would be
- the build folder.
-3. Change your directory to the folder containing the `index.html` and
- `dyte-config.json` files.
-4. Modify the `dyte-config.json` file to update the version and the files that
- will be included and excluded while generating the plugin archive.
-5. Run `dyte plugins publish -l` or `dyte plugins publish --latest` to upload
- and serve your plugin on Dyte.
-
-## Usage
-
-### Creating a plugin
-
-You can use the following subcommand to create a new Dyte plugin. This sends an
-API request to register a new plugin under your organization. Additionally, it
-creates a file called `dyte-config.json`, which is essential for the plugin to
-function properly.
-
-```shell
-dyte plugins create
-```
-
-### Listing your plugins
-
-The `list | ls` subcommand can be used to list the names and IDs of all plugins
-that were created by your organization.
-
-```shell
-dyte plugins ls
-```
-
-### Viewing plugin details
-
-The `describe` subcommand logs the details of a plugin. The `pluginId` is
-required.
-
-```shell
-dyte plugins describe -p
-```
-
-### Deleting a plugin
-
-With the help of the `delete | rm` subcommand, you can delete an existing
-plugin. The `pluginId` is required.
-
-```shell
-dyte plugins rm -p
-```
-
-### Updating a plugin
-
-To update the details of a plugin, you can use the `update` subcommand. The
-`pluginId` is required.
-
-```shell
-dyte plugins update -p
-```
-
-## Releasing plugins
-
-### Packaging a plugin
-
-In order to publish a plugin, a `.dyt` archive is created with all the
-client-side source code and the `dyte-config.json` file. This file is required
-by the `publish` subcommand, which also internally generates this archive. You
-can use the `pack` command if you just want to generate the archive, but do not
-want to publish it.
-
-```shell
-dyte plugins pack
-```
-
-### Publishing a plugin
-
-The `publish` subcommand handles publishing a plugin on Dyte. You must run this
-command in the directory where the `dyte-config.json` and the `index.html` files
-of your plugin are present. In the `dyte-config.json`, you can also describe the
-files you want to include in and exclude from the archive. In order to publish a
-plugin, you must follow these steps:
-
-1. Copy the `dyte-config.json` (which was created by the `dyte plugins create`
- command) into the folder containing your `index.html` file. In case you're
- using a frontend library like React, you must copy `dyte-config.json` into
- the `build` folder.
-2. Update the plugin version in `dyte-config.json`.
-3. Run `dyte plugins publish -l`.
-
-The `-l` or `--latest` option is **required** if you want your plugin's new
-version to be deployed. If the `-l` option is absent, the new version of the
-plugin will be saved in our storage bucket, but it will not be served. In that
-case, an older version (if any) will be served. You may not use the `-l` option
-if you want to upload your code to the storage bucket but you do not want to
-serve it.
-
-```shell
-dyte plugins publish -l
-```
-
-### Unpublishing a plugin
-
-The `unpublish` subcommand can be used if you want do not want your plugin to
-show up on the Dyte plugins panel. The `pluginId` is required.
-
-```shell
-dyte plugins unpublish
-```
-
-:::caution Note that the plugin and its code will not be deleted, it will just
-not show up on the panel (and thus become unusable). :::
-
-## Versioning
-
-The `version` subcommand has 3 subcommands of its own. The `pluginId` is
-required for each of these subcommands.
-
-### List
-
-`version list` can be used to list all versions of your Dyte plugin.
-
-```shell
-dyte plugins version list
-```
-
-### Delete
-
-`version delete` can be used to delete a particular version of your Dyte plugin.
-This accepts the version you want to delete with the help of the `-v` option.
-
-```shell
-dyte plugins version delete -v
-```
-
-### Change latest
-
-`version change-latest` can be used to change the version of your plugin that is
-served. This accepts the version you want to serve with the help of the `-v`
-option.
-
-```shell
-dyte plugins version change-latest -v
-```
-
-
- CLI Plugins
-
-
diff --git a/docs/cli/recording.mdx b/docs/cli/recording.mdx
deleted file mode 100644
index 5065ba0ea4..0000000000
--- a/docs/cli/recording.mdx
+++ /dev/null
@@ -1,75 +0,0 @@
----
-sidebar_position: 4
-description: >-
- Understand how to enable and configure recording features using Dyte CLI.
- Capture and review meeting content seamlessly.
----
-
-# Recordings
-
-The CLI lets you start, stop, view and configure meeting recordings.
-
-## Configuration
-
-Set up your recording configuration by running:
-
-```shell
-dyte recordings config
-```
-
-You will be asked a series of questions about the configuration you'd like for
-your recordings.
-
-:::tip If you don't know the answers to these questions, it's fine to skip this
-step. Our defaults are robust! :::
-
-## Controlling recordings
-
-### Starting
-
-You can start recording a meeting by running:
-
-```shell
-dyte recordings start
-```
-
-### Stopping
-
-You can end a recording by running:
-
-```shell
-dyte recordings stop
-```
-
-:::tip The meeting ID can be a UUID, eg: `f68a59ca-5e43-4267-8982-bfcabcab88a3`
-or it can be the simple ID used by our meetings in the browser, eg:
-`aoiler-tlmbwi` :::
-
-## Viewing recordings
-
-### Listing
-
-You can view a list of all recordings for a meeting by running:
-
-```shell
-dyte recordings list
-```
-
-### Getting a particular recording
-
-You can view the details for a particular recording by running
-
-```shell
-dyte recordings get
-```
-
-:::tip The `dyte recordings stop` command will helpfully output the complete
-command you need to retrieve that particular recording! :::
-
-
- CLI Recordings
-
-
diff --git a/docs/cli/webhooks.mdx b/docs/cli/webhooks.mdx
deleted file mode 100644
index 56e6d8dcf1..0000000000
--- a/docs/cli/webhooks.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-sidebar_position: 6
-description: >-
- Leverage Dyte CLI's webhook capabilities for real-time event notifications.
- Integrate webhooks into your applications.
----
-
-# Webhooks
-
-Instead of polling our APIs, you can use webhooks to get information as it is
-produced.
-
-## Creating a webhook
-
-Run the following command to create a webhook.
-
-```shell
-dyte webhooks create
-```
-
-
- CLI Webhooks
-
-
diff --git a/docs/community-packages/device-emulator/_category_.json b/docs/community-packages/device-emulator/_category_.json
deleted file mode 100644
index fcf1753adf..0000000000
--- a/docs/community-packages/device-emulator/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 2,
- "label": "Device Emulator",
- "collapsible": true,
- "collapsed": true
-}
diff --git a/docs/community-packages/device-emulator/examples.mdx b/docs/community-packages/device-emulator/examples.mdx
deleted file mode 100644
index 85a452a907..0000000000
--- a/docs/community-packages/device-emulator/examples.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-sidebar_position: 2
-keywords:
- - opensource
-description: >-
- Explore examples and use cases for Dyte's community package device emulator.
- Learn how to effectively use device emulation for testing and development.
----
-
-# Examples
-
-Here is a demo that will help you demonstrate the usage of device emulator [https://device-emulator.vercel.app](https://device-emulator.vercel.app).
-
-You can find the source code for this here [https://github.com/dyte-io/device-emulator/tree/main/examples](https://github.com/dyte-io/device-emulator/tree/main/examples).
-
-
- Community Packages Examples
-
-
diff --git a/docs/community-packages/device-emulator/intro.mdx b/docs/community-packages/device-emulator/intro.mdx
deleted file mode 100644
index 36b1559011..0000000000
--- a/docs/community-packages/device-emulator/intro.mdx
+++ /dev/null
@@ -1,170 +0,0 @@
----
-slug: /device-emulator
-sidebar_position: 1
-keywords:
- - opensource
----
-
-# Introduction
-
-For a product, integration tests are one of the crucial part that improves quality & stability. For a WebRTC based solution like Dyte, having integration tests that can test multi-user call with Audio/Video on is necessary.
-
-For an end user, sharing a camera & mic is easy. For this, browsers expose APIs such as enumerateDevices & getUserMedia on MediaDevices interface, on which user interfaces can be built easily.
-
-Access to camera & mic prompts the users to allow permissions to do so. This works great as long as an end-user is using the product and actively allowing permissions and selecting devices, However this makes it impossible to write integration tests because for integration tests there is no active user and you need to somehow allow permissions programmatically which at the moment of writing this README is not reliably supported in modern tools like Playwright.
-
-Even if we can somehow allow permissions, The next set of questions would be: What would the video & audio feed look like? Can we customize the feed? Can we use the feed to detect delays between a video feed producer and consumer? How do we test multiple devices? How do we test media ejection on the fly? How do we test addition of a new device?
-
-Dyte's Device Emulator is a solution that answers all these questions and provides a easier way to mimic, add, remove devices & their feed.
-
-## Installation
-
-
-
-
-To set up device-emulator add the following script tags inside
-the ` ` tag.
-
-```html
-
-
-```
-
-
-
-
-```bash
-npm install @dytesdk/device-emulator
-```
-
-use the package like below
-
-```js
-import '@dytesdk/device-emulator';
-
-// use the device emulator methods
-```
-
-
-
-
-
-```bash
-yarn add @dytesdk/device-emulator
-```
-
-use the package like below
-
-```js
-import '@dytesdk/device-emulator';
-
-// use the device emulator methods
-```
-
-
-
-
-## API reference
-
-### Add a virtual device
-
-```js {1}
-const virtualDeviceID = navigator.mediaDevices.addEmulatedDevice('videoinput');
-
-// get a media track from the virtual device
-navigator.mediaDevices
- .getUserMedia({
- video: {
- deviceId: {
- exact: virtualDeviceID,
- },
- },
- })
- .then((mediaStream) => {
- const video = document.querySelector('video');
- video.srcObject = mediaStream;
- video.onloadedmetadata = () => {
- video.play();
- };
- })
- .catch((err) => {
- // always check for errors at the end.
- console.error(`${err.name}: ${err.message}`);
- });
-```
-
-### Remove virtual device
-
-```js
-navigator.mediaDevices.removeEmulatedDevice(deviceId);
-```
-
-### Fail the device
-
-You can use `failDevice` method to test scenarios where the devices stops working abruptly.
-
-```js {4}
-const virtualDeviceID = navigator.mediaDevices.addEmulatedDevice('videoinput');
-
-// Stop the device from working
-navigator.mediaDevices.failDevice(virtualDeviceID, true);
-
-navigator.mediaDevices
- .getUserMedia({
- video: {
- deviceId: {
- exact: virtualDeviceID,
- },
- },
- })
- .then((mediaStream) => {
- // This will not work
- const video = document.querySelector('video');
- video.srcObject = mediaStream;
- video.onloadedmetadata = () => {
- video.play();
- };
- })
- .catch((err) => {
- // catch `NotReadableError` thrown from the device
- console.error(`${err.name}: ${err.message}`);
- });
-```
-
-Executing the `failDevice` after getting the tracks will stop the active tracks.
-
-### Resume the device
-
-Use `failDevice` method to make the device work normally
-
-```js
-navigator.mediaDevices.failDevice(deviceId, false);
-```
-
-### Silence the tracks
-
-Generate tracks that are silent
-
-```js
-navigator.mediaDevices.silenceDevice(deviceId, true);
-```
-
-### Unmute the tracks from the device
-
-Remove the silence check on the device
-
-```js
-navigator.mediaDevices.silenceDevice(deviceId, false);
-```
-
-
- Community Packages Introduction
-
-
diff --git a/docs/community-packages/index.mdx b/docs/community-packages/index.mdx
deleted file mode 100644
index 2fbc972953..0000000000
--- a/docs/community-packages/index.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-slug: /
-sidebar_position: 1
-sidebar_class_name: community_packages_sidebar_index
-description: >-
- Explore Dyte's community packages and their documentation. Discover additional
- functionalities contributed by the community.
----
-
-# Community packages
-
-At Dyte, we believe in empowering developers to create innovative solutions that go beyond our own use cases. By opening access to some of our resources, we aim to foster creativity, collaboration, and technological advancement across diverse domains.
-
-We are excited to see the new applications and platforms that you will build using our technology.
-
-
-
-
-
-
-
-
-
-
-
-
- Community Packages Community packages
-
-
diff --git a/docs/community-packages/socketio-client/_category_.json b/docs/community-packages/socketio-client/_category_.json
deleted file mode 100644
index 38e76085ce..0000000000
--- a/docs/community-packages/socketio-client/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 3,
- "label": "SocketIO Client",
- "collapsible": true,
- "collapsed": true
-}
diff --git a/docs/community-packages/socketio-client/emitting.mdx b/docs/community-packages/socketio-client/emitting.mdx
deleted file mode 100644
index 15b544a04e..0000000000
--- a/docs/community-packages/socketio-client/emitting.mdx
+++ /dev/null
@@ -1,100 +0,0 @@
----
-sidebar_position: 3
----
-
-# Events
-
-There are several ways to send events between the server and the client.
-
-## Basic emit
-
-_Client_
-
-```kotlin
-socket.emit("hello", "world");
-```
-
-_Server_
-
-```js
-io.on('connection', (socket) => {
- socket.on('hello', (arg) => {
- console.log(arg); // world
- });
-});
-```
-
-## Listen for events
-
-_Server_
-
-```js
-io.on('connection', (socket) => {
- socket.emit('hello', 'world');
-});
-```
-
-_Client_
-
-```kotlin
-socket.onEvent("hello") { args ->
- println(args[0]); // world
-}
-```
-
-## Acknowledgements
-
-Events are great, but in some cases you may want a more classic request-response API. In Socket.IO, this feature is named acknowledgements.
-
-You can add a callback as the last argument of the `emit()`, and this callback will be called once the other side acknowledges the event:
-
-### From client to server
-
-_Client_
-
-```kotlin
-
-socket.emit("update item", 1, fun(data: ArrayList) {
- val response = data[0] as JSONObject;
- println(response.getString("status")); // "ok"
-})
-```
-
-_Server_
-
-```js
-io.on('connection', (socket) => {
- socket.on('update item', (arg1, arg2, callback) => {
- console.log(arg1); // 1
- console.log(arg2); // { name: "updated" }
- callback({
- status: 'ok',
- });
- });
-});
-```
-
-### From server to client
-
-_Server_
-
-```js
-io.on('connection', (socket) => {
- socket.emit('hello', 'please acknowledge', (response) => {
- console.log(response); // prints "hi!"
- });
-});
-```
-
-_Client_
-
-```kotlin
-socket.on("hello") { args, ack ->
- println(args[0]); // "please acknowledge"
- ack?.invoke("hi!");
-}
-```
-
-
- Community Packages Events
-
diff --git a/docs/community-packages/socketio-client/initialization.mdx b/docs/community-packages/socketio-client/initialization.mdx
deleted file mode 100644
index ce3a96a4ec..0000000000
--- a/docs/community-packages/socketio-client/initialization.mdx
+++ /dev/null
@@ -1,294 +0,0 @@
----
-sidebar_position: 2
-keywords:
- - opensource
----
-
-# Initialization
-
-**Table of content**
-
-
-
-## Creation of a Socket instance
-
-```kotlin
-val uri = "https://example.com/socket.io/"
-
-val socket = IO.socket(endpoint)
-```
-
-The [scheme](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax) part of the URI is also mandatory. Both `ws://` and `http://` can be used interchangeably.
-
-```kotlin
-val socket = IO.socket("https://example.com/socket.io/"); // OK
-val socket = IO.socket("wss://example.com/socket.io/"); // OK, similar to the example above
-val socket = IO.socket("192.168.0.1:1234/socket.io/"); // NOT OK, missing the scheme part
-```
-
-### Connection
-
-```kotlin
-
-socket.onConnect { println("connected") }
-
-socket.onDisconnect { println("disconnected") }
-
-socket.connect()
-
-// socket.disconnect()
-
-```
-
-### Custom Path
-
-It is the name of the path that is captured on the server side.
-
-The server and the client values must match:
-
-_JavaScript Server_
-
-```js
-import { Server } from 'socket.io';
-
-const io = new Server(8080, {
- path: '/my-custom-path/',
-});
-
-io.on('connection', (socket) => {
- // ...
-});
-```
-
-_Client_
-
-```kotlin
-val uri = "https://example.com/my-custom-path/"
-
-val socket = IO.socket(endpoint)
-```
-
-:::info
-
-Please note that this is different from socket-io-client-java works where the path in the URI represents the [Namespace](https://socket.io/docs/v4/namespaces/).
-
-:::
-
-### Query Params
-
-Additional query parameters (then found in `socket.handshake.query` object on the server-side).
-
-_Client_
-
-```kotlin
-val uri = "https://example.com/socket.io/?x=42"
-
-val socket = IO.socket(endpoint)
-```
-
-_JavaScript Server_
-
-```js
-io.on('connection', (socket) => {
- console.log(socket.handshake.query); // prints { x: '42', EIO: '4', transport: 'polling' }
-});
-```
-
-:::info
-
-Please note that this is different from socket-io-client-java works where the query params are passed in IO.Options `query`
-
-:::
-
-## Default values
-
-```kotlin
-val options = IOOptions().apply {
- forceNew = false
- multiplex = true
-
- upgrade = true
- rememberUpgrade = true
- extraHeaders = null
-
- reconnection = true
- reconnectionAttempts = 5
- reconnectionDelay = 1000
- reconnectionDelayMax = 5000
- randomizationFactor = 0.5
- timeout = 20000
- }
-```
-
-## Description
-
-### IO factory options
-
-These settings will be shared by all Socket instances attached to the same Manager.
-
-#### `forceNew`
-
-Default value: `false`
-
-Whether to create a new Manager instance.
-
-A Manager instance is in charge of the low-level connection to the server (established with HTTP long-polling or WebSocket). It handles the reconnection logic.
-
-A Socket instance is the interface which is used to sends events to — and receive events from — the server. It belongs to a given [namespace](https://socket.io/docs/v4/namespaces).
-
-A single Manager can be attached to several Socket instances.
-
-The following example will reuse the same Manager instance for the 3 Socket instances (one single WebSocket connection):
-
-```kotlin
-val socket = IO.socket("https://example.com"); // the main namespace
-val productSocket = IO.socket("https://example.com", namespace = "product"); // the "product" namespace
-val orderSocket = IO.socket("https://example.com", namespace = "order"); // the "order" namespace
-```
-
-The following example will create 3 different Manager instances (and thus 3 distinct WebSocket connections):
-
-```kotlin
-val options = IOOptions().apply {
- forceNew = true
- }
-
-val socket = IO.socket("https://example.com", options); // the main namespace
-val productSocket = IO.socket("https://example.com", options, namespace = "product"); // the "product" namespace
-val orderSocket = IO.socket("https://example.com", options, namespace = "order"); // the "order" namespace
-```
-
-#### `multiplex`
-
-Default value: `true`
-
-The opposite of `forceNew`: whether to reuse an existing Manager instance.
-
-### Low-level engine options
-
-#### `transports`
-
-Default value: `listOf("polling", "websocket")`
-
-The low-level connection to the Socket.IO server can either be established with:
-
-- HTTP long-polling: successive HTTP requests (`POST` for writing, `GET` for reading)
-- [WebSocket](https://en.wikipedia.org/wiki/WebSocket)
-
-The following example disables the HTTP long-polling transport:
-
-```kotlin
-val options = IOOptions().apply {
- transports = listOf("websocket")
- }
-val socket = IO.socket("https://example.com", options);
-```
-
-Note: in that case, sticky sessions are not required on the server side (more information [here](https://socket.io/docs/v4/using-multiple-nodes/)).
-
-#### `upgrade`
-
-Default value: `true`
-
-Whether the client should try to upgrade the transport from HTTP long-polling to something better.
-
-#### `rememberUpgrade`
-
-Default value: `false`
-
-If true and if the previous WebSocket connection to the server succeeded, the connection attempt will bypass the normal upgrade process and will initially try WebSocket. A connection attempt following a transport error will use the normal upgrade process. It is recommended you turn this on only when using SSL/TLS connections, or if you know that your network does not block websockets.
-
-#### `extraHeaders`
-
-Default value: -
-
-Additional headers (then found in `socket.handshake.headers` object on the server-side).
-
-Example:
-
-_Client_
-
-```kotlin
-val options = IOOptions.apply {
- extraHeaders = mapOf("authorization", "bearer 1234")
- }
-
-val socket = IO.socket("https://example.com", options);
-```
-
-_JavaScript Server_
-
-```js
-io.on('connection', (socket) => {
- console.log(socket.handshake.headers); // prints { accept: '*/*', authorization: 'bearer 1234', connection: 'Keep-Alive', 'accept-encoding': 'gzip', 'user-agent': 'okhttp/3.12.12' }
-});
-```
-
-### Manager options
-
-These settings will be shared by all Socket instances attached to the same Manager.
-
-#### `reconnection`
-
-Default value: `true`
-
-Whether reconnection is enabled or not. If set to `false`, you need to manually reconnect.
-
-#### `reconnectionAttempts`
-
-Default value: `Integer.MAX_VALUE`
-
-The number of reconnection attempts before giving up.
-
-#### `reconnectionDelay`
-
-Default value: `1000`
-
-The initial delay before reconnection in milliseconds (affected by the [randomizationFactor](#randomizationfactor) value).
-
-#### `reconnectionDelayMax`
-
-Default value: `5000`
-
-The maximum delay between two reconnection attempts. Each attempt increases the reconnection delay by 2x.
-
-#### `randomizationFactor`
-
-Default value: `0.5`
-
-The randomization factor used when reconnecting (so that the clients do not reconnect at the exact same time after a server crash, for example).
-
-Example with the default values:
-
-- 1st reconnection attempt happens between 500 and 1500 ms (`1000 * 2^0 * ()`)
-- 2nd reconnection attempt happens between 1000 and 3000 ms (`1000 * 2^1 * ()`)
-- 3rd reconnection attempt happens between 2000 and 5000 ms (`1000 * 2^2 * ()`)
-- next reconnection attempts happen after 5000 ms
-
-#### `timeout`
-
-Default value: `20000`
-
-The timeout in milliseconds for each connection attempt.
-
-### Socket options
-
-These settings are specific to the given Socket instance.
-
-#### Multiplexing
-
-The client does support multiplexing: this allows to split the logic of your application into distinct modules, while using one single WebSocket connection to the server.
-
-Reference: https://socket.io/docs/v4/namespaces/
-
-```kotlin
-val socket = IO.socket("https://example.com"); // the main namespace
-val productSocket = IO.socket("https://example.com", namespace="product"); // the "product" namespace
-val orderSocket = IO.socket("https://example.com", namespace="order"); // the "order" namespace
-
-// All 3 sockets share the same Manager
-```
-
-
- Community Packages Initialization
-
diff --git a/docs/community-packages/socketio-client/intro.mdx b/docs/community-packages/socketio-client/intro.mdx
deleted file mode 100644
index d47c26ddf0..0000000000
--- a/docs/community-packages/socketio-client/intro.mdx
+++ /dev/null
@@ -1,77 +0,0 @@
----
-slug: ./
-sidebar_position: 1
-keywords:
- - opensource
----
-
-# Overview
-
-This is a [Socket.IO](https://socket.io/) Client Library for Kotlin (Multiplatform), which is ported from the official socket.io-client-java It is compatible with Socket.IO server 3.x / 4.x
-
-**Targets**
-
-- Android / JVM
-- iOS / macOS
-- Linux
-
-## Installation
-
-
-
-
-
-Use our maven central hosted archive in your gradle
-
-```gradle
-implementation("io.dyte:socketio-android:$version")
-```
-
-
-
-
-
-1. Add 'DyteSocketIO' to your Podfile.
-
-```
-pod 'DyteSocketIO' , '1.25.2'
-```
-
-2. Install the pod.
-
-```sh
-pod install
-```
-
-
-
-
-
-// TODO
-
-
-
-
-
-Use our maven central hosted archive in your gradle
-
-```gradle
-implementation("io.dyte:socketio-jvm:$version")
-```
-
-
-
-
-
-Use our maven central hosted archive in your gradle
-
-```gradle
-implementation("io.dyte:socketio:$version")
-```
-
-
-
-
-
- Community Packages Overview
-
diff --git a/docs/flutter-core/chat/_category_.json b/docs/flutter-core/chat/_category_.json
deleted file mode 100644
index e96d76d691..0000000000
--- a/docs/flutter-core/chat/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 6,
- "label": "Chat",
- "collapsible": true
-}
diff --git a/docs/flutter-core/chat/introduction.mdx b/docs/flutter-core/chat/introduction.mdx
deleted file mode 100644
index 018ab1db55..0000000000
--- a/docs/flutter-core/chat/introduction.mdx
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: Introducing chat
-description: >-
- Learn the fundamentals of integrating chat functionality into your Flutter
- app. Follow our documentation for a smooth introduction to Dyte's chat
- features.
-sidebar_position: 1
-tags:
- - flutter-core
- - chat
----
-
-# Introduction
-
-The meeting chat object is stored in `dyteClient.chat`, which has methods for
-sending and receiving messages. There are 3 types of messages that can be sent
-in chat - `text`, `images`, and `files`.
-
-The `dyteClient.chat.messages` array contains all the messages that have been
-sent in the chat. This is an array of objects, where each object is of type
-`DyteChatMessage`.
-
-The `DyteChatMessage` class has the following properties:
-
-- `userId` : UserID of the sender.
-- `displayName` : Display name of the sender.
-- `read` : Boolean whether the message is read or not.
-- `pluginId` : Plugin ID of the message.
-- `time` : Time at which the message was sent. It returns a `String` in milliseconds since epoch format.
-- `type` : `DyteMessageType` for type of message being sent (whether
- `DyteMessageType.text`, `DyteMessageType.image` or `DyteMessageType.file`).
-
-There are 3 message classes that extends `DyteChatMessage`, and each has some
-extra property in addition to `DyteChatMessage` properties:
-
-- `DyteTextMessage`
-- `DyteImageMessage`
-- `DyteFileMessage`
-
-#### DyteTextMessage:
-
-- `message`: Text message sent.
-
-#### DyteImageMessage:
-
-- `link`: URL of the image sent.
-
-#### DyteFileMessage:
-
-- `name`: Name of the file to be sent.
-- `link`: URL of the file sent.
-- `size`: Size of the file in bytes.
-
-
- Flutter Core Introducing chat
-
-
diff --git a/docs/flutter-core/chat/receiving-chat-messages.mdx b/docs/flutter-core/chat/receiving-chat-messages.mdx
deleted file mode 100644
index d0b60a0e4e..0000000000
--- a/docs/flutter-core/chat/receiving-chat-messages.mdx
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: Receiving chat messages
-description: >-
- Understand how to receive chat messages in your Flutter app using Dyte's
- features. Follow our documentation for effective implementation.
-sidebar_position: 3
-tags:
- - flutter-core
- - chat
----
-
-# Receive a Chat Message
-
-To receive chat messages, implement the `onChatUpdates(...)` method from callback `DyteChatEventsListener`. You can subscribe to these events by calling the following:
-
-```dart
-
-class ChatEventsListener with DyteChatEventsListener {
-
- ...
-
- @override
- void onChatUpdates(List messages) {
- messages.map((msg) {
- switch (msg.type) {
- case DyteMessageType.text:
- print((msg as DyteTextMessage).displayName);
- print((msg).message);
-
- // Show message/return state to show text message UI.
-
- break;
- case DyteMessageType.image:
- print((msg as DyteImageMessage).displayName);
- print((msg).link);
-
- // Show message/return state to show image message UI.
- break;
- case DyteMessageType.file:
- print((msg as DyteFileMessage).name);
- print((msg).link);
- print((msg).size);
- // Show message/return state to show file message UI.
-
- break;
- }
- });
- }
-
- void onNewChatMessage(DyteChatMessage message) {
- // your code to handle new chat message
- }
- ...
-}
-```
-
-```dart
-dyteClient.addChatEventsListener(ChatEventsListener());
-```
-
-In this context, `messages` refers to a list of all the chat messages in the meeting. The type of message used is `DyteChatMessage`, which was introduced earlier in the [introduction](./introduction.mdx) to Chat topic.
-
-Whenever a chat message is received, the `dyteClient.chat.messages` list is automatically updated.
-
-
- Flutter Core Receiving chat messages
-
-
diff --git a/docs/flutter-core/chat/sending-a-chat-message.mdx b/docs/flutter-core/chat/sending-a-chat-message.mdx
deleted file mode 100644
index 4dc3991e7a..0000000000
--- a/docs/flutter-core/chat/sending-a-chat-message.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Sending a chat message
-description: >-
- Learn how to send chat messages in your Flutter app with Dyte's features.
- Follow our documentation for seamless implementation.
-sidebar_position: 2
-tags:
- - flutter-core
- - chat
----
-
-# Sending a chat message
-
-As mentioned in [introduction](./introduction), there are 3 types of chat
-messages - `text`, `images`, and `file`. There are methods in `DyteChat` to send
-a message of each type.
-
-## Send a text message
-
-To send a text message, the `dyteClient.chat.sendTextMessage(message)` method can be
-used. It take a string `message` as an argument and sends it to the room.
-
-```dart
-final message = "Is this the real life?";
-dyteClient.chat.sendTextMessage(message);
-```
-
-## Send an image
-
-You can send an image with the help of `dyteClient.chat.sendImageMessage()` and
-sends it to the participants in the meeting.
-
-```dart
-final filePath = "file_path_of_image";
-final fileName = "file_name";
-dyteClient.chat.sendImageMessage(filePath, fileName);
-```
-
-## Send a file
-
-Sending a file is quite similar to sending an image. The only difference is that
-when you send an image, a preview will be shown in the meeting chat, which is
-not the case for sending files. That being said, an image can be sent as a file
-too using `dyteClient.chat.sendFileMessage()`.
-
-```dart
-final filePath = "file_path_of_image";
-final fileName = "file_name";
-dyteClient.chat.sendFileMessage(filePath, fileName);
-```
-
-
- Flutter Core Sending a chat message
-
-
diff --git a/docs/flutter-core/host-actions.mdx b/docs/flutter-core/host-actions.mdx
deleted file mode 100644
index 33b222a485..0000000000
--- a/docs/flutter-core/host-actions.mdx
+++ /dev/null
@@ -1,198 +0,0 @@
----
-title: Host Actions & Permissions
-description: >-
- Understand the host actions you can perform as per preset permissions set in Developer Portal & integration in Dyte's Flutter SDK.
-sidebar_position: 13
-tags:
- - flutter-core
- - permissions
- - host actions
----
-
-# Host Actions & Permissions
-
-Based on your peer preset permissions you can perform certain host actions in Dyte's Flutter SDK. As you follow through this page, you'll know what the host actions are and how to implement it based on permissions.
-
-## Permissions
-
-Permissions are set in the Developer Portal. Based on the permissions set, you can perform certain host actions. To access permissions, use `dyteClient.permissions` method. The permissions are as follows:
-
-### Media Permissions
-
-Media permissions (audio, video and screenshare) can be accessed using `dyteClient.permissions.media`. You can get audio, video and screenshare permissions. Audio and screenshare permissions are of `DyteMediaPermission` type & video permissions are of `DyteVideoPermissions` type.
-
-`DyteMediaPermission` is a enum & can have 3 values:
-
-- `DyteMediaPermission.allowed` : If the user is allowed to access the media.
-- `DyteMediaPermission.canRequest` : If the user can request access to the media. Ex: If a user is off stage but can request to come on stage in case of webinar.
-- `DyteMediaPermission.notAllowed` : If the user is not allowed to access the media.
-
-`DyteVideoPermissions` have 3 properties:
-
-- `permission`: It is of `DyteMediaPermission` type & stores the video permission.
-- `frameRate` : It is of type `int` & stores the frame rate of the video.
-- `quality` : It is of type `string` and stores the quality of the video.
-
-```dart
-
-// To get audio permission
-final DyteMediaPermission audioPermission = dyteClient.permissions.media.audio;
-
-// To get video details
-final DyteVideoPermissions videoPermission = dyteClient.permissions.media.video;
-
-// To get screenshare permission
-final DyteMediaPermission screensharePermission = dyteClient.permissions.media.screenshare;
-```
-
-### Waiting Room Permissions
-
-Waiting room permissions are of type `WaitingRoomPermissions` contains 2 properties:
-
-- `canAcceptRequests`: It is of type `bool` & tells if the user can accept/reject waiting requests of participants present in waiting room.
-- `type`: It is of enum type `WaitingRoomType` and is useful to know where client can directly enter meeting room or need permission from host.
-
-`WaitingRoomType` can have 4 values:
-
-- `WaitingRoomType.skip` : If the user can directly enter the meeting room.
-- `WaitingRoomType.onAccept` : If the user needs permission from host to enter the meeting room.
-- `WaitingRoomType.skipOnAccept` : If the user needs permission from host just the first time while trying to join meeting room.
-- `WaitingRoomType.skipOnPriviligedUserEntry` : If the user can enter once there's a privileged user is present in the room.
-
-```dart
-final WaitingRoomPermissions waitingRoomPermissions = dyteClient.permissions.waitingRoom;
-```
-
-### Chat Permissions
-
-Chat permissions are of type `ChatPermissions` contains 2 properties:
-
-- `canSendText`: It is of type `bool` & tells if the user can send messages in the chat.
-- `canSendFiles`: It is of type `bool` & tells if the user can send images/files in the chat.
-
-```dart
-final ChatPermissions chatPermissions = dyteClient.permissions.chat;
-```
-
-### Host Permissions
-
-Host permissions are of type `HostPermissions` contains 5 properties:
-
-- `canMuteAudio`: It is of type `bool` & tells if the user can mute audio of other participants in the room.
-- `canDisableVideo`: It is of type `bool` & tells if the user can disable other participant's video.
-- `canKickParticipant`: It is of type `bool` & tells if the user can kick other participants from the room.
-- `canPinParticipant`: It is of type `bool` & tells if the user can pin other participants in the room.
-- `canTriggerRecording`: It is of type `bool` & tells if the user can trigger recording in the room.
-
-```dart
-final HostPermissions hostPermissions = dyteClient.permissions.host;
-```
-
-### Poll Permissions
-
-Poll permissions are of type `PollPermissions` contains 3 properties:
-
-- `canCreate`: It is of type `bool` & tells if the user can create polls in the meeting room.
-- `canVote`: It is of type `bool` & tells if the user can vote in the polls.
-- `canView`: It is of type `bool` & tells if the user can view the polls.
-
-```dart
-final PollPermissions pollPermissions = dyteClient.permissions.poll;
-```
-
-### Plugin Permissions
-
-Plugin permissions are of type `PluginPermissions` contains 2 properties:
-
-- `canLaunch`: It is of type `bool` & tells if the user can launch plugins in the meeting room.
-- `canClose`: It is of type `bool` & tells if the user can close plugins in the meeting room.
-
-```dart
-final PluginPermissions pluginPermissions = dyteClient.permissions.plugin;
-```
-
-### Livestream Permissions
-
-Livestream permissions are of type `LivestreamPermissions` contains the following property:
-
-- `canLivestream`: It is of type `bool` & tells if the user can start/stop livestreaming.
-
-```dart
-final LivestreamPermissions livestreamPermissions = dyteClient.permissions.livestream;
-```
-
-### Miscellaneous Permissions
-
-Miscellaneous permissions are of type `MiscellaneousPermissions` with following property:
-
-- `canEditDisplayName`: It is of type `bool` & tells if the user can edit their display name.
-
-## Host Actions
-
-A peer can execute following actions if their preset allows it. To access preset permissions, see the permissions section [above](#permissions):
-
-### Pin/Unpin participant
-
-You can pin & unpin a participant in a meeting room. Use `pinParticipant(participant)` and `unpinParticipant()` method to pin & unpin the `participant` respectively. The `participant` is of `DyteMeetingParticipant`type.
-
-```dart
-
-// Pin the `participant`
-dyteClient.hostActions.pinParticipant(participant);
-
-// Unpin pinned participant
-dyteClient.hostActions.unpinParticipant();
-```
-
-### Kick participant(s)
-
-You can kick a participant or kick all participants from a meeting using `kickParticipant(participant)` and `kickAll()` method respectively. The `participant` is of `DyteMeetingParticipant` type.
-
-```dart
-
-// Kick the `participant`
-dyteClient.hostActions.kickParticipant(participant);
-
-// Kick all participants
-dyteClient.hostActions.kickAll();
-```
-
-### Accept/Reject waitlisted request
-
-You can accept or reject a waitlisted request using `acceptWaitlistedParticipant(participant)` and `rejectWaitlistedParticipant(participant)` method respectively. The `participant` is of `DyteMeetingParticipant` type.
-
-```dart
-
-// Accept the waitlisted `waitlistedParticipant`
-dyteClient.hostActions.acceptWaitlistedParticipant(waitlistedParticipant);
-
-// Reject the waitlisted `waitlistedParticipant`
-dyteClient.hostActions.rejectWaitlistedParticipant(waitlistedParticipant);
-```
-
-### Mute participant(s) audio
-
-You can mute a participant's audio or mute all participants' audio using `disableParticipantAudio(participant)` and `muteAllAudios()` method respectively. The `participant` is of `DyteMeetingParticipant` type.
-
-```dart
-
-// Mute the `participant` audio
-dyteClient.hostActions.disableParticipantAudio(participant);
-
-// Mute all participants' audio
-dyteClient.hostActions.muteAllAudios();
-
-```
-
-### Disable participant(s) video
-
-You can disable a participant's video or disable all participants' video using `disableParticipantVideo(participant)` and `disableAllVideos()` method respectively. The `participant` is of `DyteMeetingParticipant` type.
-
-```dart
-
-// Disable the `participant` video
-dyteClient.hostActions.disableParticipantVideo(participant);
-
-// Disable all participants' video
-dyteClient.hostActions.disableAllVideos();
-```
diff --git a/docs/flutter-core/introduction.mdx b/docs/flutter-core/introduction.mdx
deleted file mode 100644
index f7185b51de..0000000000
--- a/docs/flutter-core/introduction.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Introduction
-sidebar_position: 3
-sidebar_class_name: module-seperation
----
-
-import ProductSection from '/docs/partials/_product-section.mdx';
-
-# Introduction
-
-The Dyte Core SDK is designed to provide you with an easy way to incorporate live video, voice, livestream and chat capabilities into your Android apps. The Core SDK acts as a data-only layer. It provides simple APIs offering high-level primitives and abstracting away complex media and networking optimizations.
-
-## Why Core SDK?
-
-The Core SDK was developed with a user-friendly approach to eliminate the complexity of managing streams. Unlike traditional
-SDKs that require knowledge of WebRTC functioning, Dyte's Core SDK provides a simple API that abstracts out the complexity,
-making it easier for developers to use. For instance, enabling video with Dyte's Core SDK is as easy as calling
-`dyteMobileClient.localUser.enableVideo()`.
-
-## Utility Modules
-
-The Core SDK includes various modules for in-call utilities like chat, polls, and recording that enable building a UI on top of
-it. The following are the core SDK modules:
-
-- **meeting.localUser**: This consists of properties and methods corresponding to the current (local) user, such as enabling or disabling their audio and video, getting a list of media devices or changing the device, or sharing your mobile screen.
-- **meeting.participants**: Use this module to get useful information about the other participants that are present in the meeting. A host can use this module for access control. For example, the host can mute or kick a participant.
-- **meeting.chat**: It provides the methods to integrate chat features such as sending/receiving text, images, and files.
-- **meeting.polls**: Meetings can have polls. This module lets you perform actions related to polls, that is create and manage
- a poll within a meeting.
-- **meeting.recording**: When a meeting needs to be recorded, this module can be used. It lets you start or stop a recording,
- and get the current status of an ongoing recording.
-- **meeting.meta**: This object consists of all the metadata related to the current meeting, such as the title, the timestamp
- of when it started, and more.
-- **meeting.plugins**: Provides the list of available plugins and active plugins. Use this module to enable or disable plugins as needed.
-
-
- Flutter Core Introduction
-
diff --git a/docs/flutter-core/livestream.mdx b/docs/flutter-core/livestream.mdx
deleted file mode 100644
index 1ef7a72b96..0000000000
--- a/docs/flutter-core/livestream.mdx
+++ /dev/null
@@ -1,145 +0,0 @@
----
-title: Livestreaming
-sidebar_position: 7
-tags:
- - flutter-core
- - livestream
----
-
-## Introduction
-
-- Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms.
-- Dyte uses LHLS to deliver low latency one way streams.
-- The Interactive Livestream product delivers interactivity via chat, polls, reactions etc.
-- Viewer can also be pulled in the livestream by the host using Stage Management APIs [ref: [here](/flutter-core/stage-management/introduction)].
-
-This section will guide you through the process of integrating the livestreaming feature into your product.
-
-## Properties
-
-### Playlist URL:
-
-Livestream playlist URL is accessible via `url` property of `DyteLivestreamData` instance:
-
-If the livestream is not active for current room, it'll return `null`.
-
-```dart
-final String? url = dyteClient.livestream.data.url;
-```
-
-### Livestream Status:
-
-The current livestream status can be accessed from `state` property of the `DyteLivestreamData` instance:
-
-```dart
-final DyteLivestreamStatus? status = dyteClient.livestream.data.state;
-```
-
-There can be 6 livestream statuses:
-
-- _DyteLivestreamStatus.none_ : When livestream is not active.
-- _DyteLivestreamStatus.starting_ : When livestream is starting.
-- _DyteLivestreamStatus.started_ : When livestream is going on.
-- _DyteLivestreamStatus.ending_ : When livestream is ending.
-- _DyteLivestreamStatus.ended_ : When livestream ended.
-- _DyteLivestreamStatus.errored_ : When livestream encountered an error.
-
-### Viewer Count
-
-The current viewer count for livestream can be accessed via `viewerCount`property of `DyteLivestreamData` instance.
-
-```dart
-final int? viewerCount = dyteClient.livestream.data.viewerCount;
-```
-
-### Room Name
-
-The room name of current livestream can be accessed via `roomName` property of `DyteLivestreamData` instance.
-
-```dart
-final String? roomName = dyteClient.livestream.data.roomName;
-```
-
-## Methods
-
-Use the following methods to start and stop livestreaming.
-
-:::tip Note
-
-You'll be able to start/stop livestream if your preset allows it.
-
-:::
-
-### Start Livestream
-
-You can start a livestream with the following method:
-
-```dart
-dyteClient.livestream.start();
-```
-
-### Stop Livestream
-
-You can stop a livestream with the following method:
-
-```dart
-dyteClient.livestream.stop();
-```
-
-## LivestreamView
-
-LivestreamView widget returns the view for the current livestream. It takes `String? url` as an argument of the livestream which is accessible via `dyteMobileClient.livestream.url` method or `Future getUrl()` method on `DyteLivestream` instance, which returns `null` if there's no livestream url.
-
-```dart
-final livestreamView = LivestreamView(
- url: dyteMobileClient.livestream.url,
-);
-
-// or
-
-Future fetchLivestreamView () async {
- String? url = await dyteMobileClient.livestream.getUrl();
- if (url != null) {
- return LivestreamView(
- url: url,
- );
- } else {
- return Container();
- }
-
- final livestreamView = await fetchLivestreamView();
-}
-```
-
-## Events
-
-You need to subscribe to LivestreamEventListener to be able to listen livestream events. You can do it as follows:
-
-```dart
-class LivestreamListener implements DyteLivestreamEventsListener{
- ...
- void onLiveStreamStateUpdate(DyteLivestreamData data) {
- // Handle livestream state update
- }
- ...
-}
-
-dyteClient.addLivestreamEventsListener(LivestreamListener());
-```
-
-Here are a list of events the livestream listener emits:
-
-| **Event** | **Description** |
-| ------------------------- | ------------------------------------------------------------------------------------------------------------ |
-| `onLiveStreamStateUpdate` | Emitted when a livestream state is updated. It contains the updated livestream state in the payload. |
-| `onViewerCountUpdated` | Emitted when a viewer count of a livestream is updated. It contains the updated viewer count in the payload. |
-| `onStageCountUpdated` | Emitted when a participants on stage changes. It contains the updated viewer count in the payload. |
-| `onLiveStreamStarting` | Emitted when livestream state is updated to _DyteLivestreamStatus.Starting_ |
-| `onLiveStreamStarted` | Emitted when livestream state is updated to _DyteLivestreamStatus.Started_ |
-| `onLiveStreamEnding` | Emitted when livestream state is updated to _DyteLivestreamStatus.Ending_ |
-| `onLiveStreamEnded` | Emitted when livestream state is updated to _DyteLivestreamStatus.Ended_ |
-| `onLiveStreamErrored` | Emitted when livestream state is updated to _DyteLivestreamStatus.Errored_ |
-
-
- Flutter Core Livestreaming
-
diff --git a/docs/flutter-core/local-user/_category_.json b/docs/flutter-core/local-user/_category_.json
deleted file mode 100644
index f02d560bef..0000000000
--- a/docs/flutter-core/local-user/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 3,
- "label": "Local User",
- "collapsible": true
-}
diff --git a/docs/flutter-core/local-user/events.mdx b/docs/flutter-core/local-user/events.mdx
deleted file mode 100644
index 19cbc110ec..0000000000
--- a/docs/flutter-core/local-user/events.mdx
+++ /dev/null
@@ -1,236 +0,0 @@
----
-title: Events
-description: >-
- Explore events related to local user interactions in Flutter. Follow our
- documentation for effective handling of local user events in your app.
-sidebar_position: 2
-tags:
- - flutter-core
- - local-user
- - self
----
-
-# Local User - Events
-
-You can subscribe to various local user events:
-
-- To subscribe, pass the instance of `LocalUserListener` class created below
- to `addSelfEventsListener()` method of `dyteClient` instance as follows:
-
-```dart {2}
-dyteClient.addSelfEventsListener(LocalUserListener());
-```
-
-- Implement `DyteSelfEventsListener` to a class say `LocalUserListener`, and
- listen to event from `DyteSelfEventsListener` by overriding them. This class
- can be user to manage your state in the application.
-
-```dart
-class LocalUserListener implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onAudioDevicesUpdated() {
- /// code to handle onAudioDevicesUpdated() event
- }
-
- ...
-}
-```
-
-### Video update
-
-Triggered when the user starts / stops the video using `enableVideo()`/
-`disableVideo()`, or host turns-off the video.
-
-```dart
-class LocalUserListener implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onVideoUpdate(bool videoEnabled) {
- if(isVideoEnabled){
- // Video is enabled, other users can see the video.
- } else {
- // Video is disabled, others users can't see the video.
- }
-
- // or alternatively you can pass the bool through state as demonstrated in example app.
- }
-
- ...
-}
-```
-
-### Audio update
-
-Triggered when the user starts / stops the audio using `enableAudio()`/
-`disableAudio()`, or host mutes the audio.
-
-```dart
-
-class LocalUserListener implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onAudioUpdate(bool audioEnabled) {
- if (audioEnabled) {
- // audio is enabled, and other participants in room can hear local user
- } else {
- // audio is disabled, and other participants in room can not hear local user.
- }
-
- // or alternatively you can pass the bool through state as demonstrated in example app.
- }
- ...
-}
-```
-
-### Proximity changed
-
-Triggered by any change in proximity, such as when the device is brought near or moved away from an earpiece, which triggers the display to turn on or off.
-
-```dart
-
-class LocalUserListener implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onProximityChanged(bool isNear) {
- if (isNear) {
- // Display should be turned off, as user might be speaking through ear piece
- } else {
- // Display should be tunred on, as user might be looking at display and listening through speaker/earphones.
- }
- }
- ...
-}
-```
-
-### Waitlist status
-
-When the waiting room feature is enabled for a meeting, you can use the `onWaitListStatusUpdate()` callback function to receive updates on waiting room status changes.
-
-```dart
-
-class LocalUserNotifier implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onWaitListStatusUpdate(DyteWaitListStatus waitListStatus) {
- // DyteWaitListStatus is an enum with the following values:
- // if `DyteWaitListStatus.none`, user is not on the waitlist
- // if `DyteWaitListStatus.waiting`, user is on the waitlist
- // if `DyteWaitListStatus.accepted`, user has been accepted in the meeting.
- // if `DyteWaitListStatus.rejected`, user has been rejected from the meeting.
- }
-
- ...
-}
-```
-
-## Local user removed
-
-When the local user is removed from the meeting, the `onRemovedFromMeeting()` callback is triggered.
-
-```dart
-
-class LocalUserNotifier implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onRemovedFromMeeting() {
- // Display an alert to the user indicating that they are no longer in the meeting.
- }
-
- ...
-}
-```
-
-## Screenshare callbacks for local user
-
-```dart
-
-class LocalUserNotifier implements DyteSelfEventsListener {
-
- ...
-
-
- @override
- void onScreenShareStartFailed(String reason) {
- // screenshare failed to start
- }
-
- @override
- void onScreenShareStarted() {
- // screenshare started presenting in the meeting
- }
-
- @override
- void onScreenShareStopped() {
- // screenshared stopped by the local user
- }
-
- ...
-}
-
-```
-
-## Change in audio/video source
-
-Whenever user changes audio/video source using `setAudioDevice(DyteAudioDevice)` and `setVideoDevice(DyteVideoDevice)` respectively [ref: [here](/flutter-core/local-user/manage-media-devices)], `onAudioDevicesUpdated()` and `onVideoDevicesChanged()` are triggered respectively.
-
-```dart
-
-class LocalUserNotifier implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onAudioDevicesUpdated() {
- // triggered on successful execution of `setAudioDevice(DyteAudioDevice)`
- }
-
- @override
- void onVideoDeviceChanged(DyteVideoDevice videoDevice) {
- // triggered on successful execution of `setVideoDevice(DyteVideoDevice)`
- }
-
- ...
-
-}
-
-```
-
-## Process message within the room
-
-Manage messages within the room using `onRoomMessage(String message)` callback.
-
-```dart
-
-class LocalUserNotifier implements DyteSelfEventsListener {
-
- ...
-
- @override
- void onRoomMessage(String type, Map payload) {
- // triggered when a message is sent within the room.
- }
-
- ...
-}
-```
-
-
- Flutter Core Events
-
-
diff --git a/docs/flutter-core/local-user/introduction.mdx b/docs/flutter-core/local-user/introduction.mdx
deleted file mode 100644
index 5459c8008b..0000000000
--- a/docs/flutter-core/local-user/introduction.mdx
+++ /dev/null
@@ -1,142 +0,0 @@
----
-title: Introduction
-description: >-
- Learn about the local user concept in Flutter with Dyte's documentation.
- Follow our guide for a smooth introduction and integration.
-sidebar_position: 1
-tags:
- - flutter-core
- - local-user
- - self
----
-
-# Introduction - Local User
-
-The local user in the `dyteMobileClient` object has a set of methods and properties related to media controls. These can be accessed using the identifier localUser.
-
-## Properties
-
-Here is a list of properties that local user provides:
-
-- `id`: ID of the participant pertaining to local user. (aka `peerId`)
-- `userId`: The `userId` of the participant.
-- `name`: Contains Name of the local user.
-- `picture`: Link to the url of the participant
-- `clientSpecificId`: Identifier provided by the developer while adding the
- participant.
-- `flags`: Type `ParticipantFlags` and it contains two boolean values
- - `recorder`: if the participant is recorder
- - `hidden`: if the participant is hidden
-- `audioEnabled`: Boolean value indicating if the audio is currently enabled.
-- `videoEnabled`: Boolean value indicating if the video is currently enabled.
-
-Local user properties can be fetched via `localUser` getter on the `dyteClient`.
-
-```dart
-final selfUser = dyteClient.localUser;
-```
-
-## Change default audio / video settings
-
-By default as soon as you join the meeting, Dyte SDK will produce your video and
-audio streams. To change this behaviour, use the `audioEnabled` & `videoEnabled`
-parameter
-
-```dart {4,5}
-final meetingInfo = DyteMeetingInfoV2(
- roomName = MEETING_ROOM_NAME,
- authToken = AUTH_TOKEN,
- audioEnabled = false,
- videoEnabled = true
-);
-```
-
-## Turn on audio/video tracks after initializing the client
-
-If audio and video tracks are disabled during the `DyteMobileClient`
-initialization process. You can setup the audio and video tracks by simply
-calling `enableAudio()` and `enableVideo()` like below:
-
-```dart
-dyteClient.localUser.enableAudio();
-dyteClient.localUser.enableVideo();
-```
-
-## Change the name of the local user
-
-Change the user's name by calling `setDisplayName` method. The changed name will
-reflect across all participants ONLY if the change happens before joining the
-meeting. This is only possible when the user has the permission to change the name.
-
-```dart
-if(dyteClient.permissions.miscellaneous.canEditDisplayName)
-{
- dyteClient.localUser.setDisplayName("New Name");
-}
-```
-
-## Mute/Unmute microphone
-
-```dart
-// Mute Audio
-dyteClient.localUser.disableAudio();
-
-// Unmute Audio
-dyteClient.localUser.enableAudio();
-
-// Get current status
-final isAudioEnabled = dyteClient.localUser.audioEnabled;
-```
-
-## Enable/Disable camera
-
-```dart
-// Disable Video
-dyteClient.localUser.disableVideo();
-
-// Enable Video
-dyteClient.localUser.enableVideo();
-
-// Get current status
-final isVideoEnabled = dyteClient.localUser.videoEnabled;
-```
-
-## Switch camera between sources
-
-```dart
-// switch camera
-dyteClient.localUser.switchCamera();
-```
-
-## Enable / Disable Screen share
-
-:::tip Note
-
-### Android
-
-To use screenshare on Android devices running Android API 14 and above, you will need to declare the following permission in your app's AndroidManifest.xml.
-
-` `
-
-Adding above permission will require you to do extra steps on Google Play Console while submitting the app. For more information please refer [this](https://support.google.com/googleplay/android-developer/answer/13392821?hl=en#declare).
-
-### iOS
-
-Refer to screenshare setup for iOS [here](./screen-share-iOS-guide.mdx)
-:::
-
-```dart
-// Enable Screenshare
-dyteClient.localUser.enableScreenshare();
-
-// Disable Screenshare
-dyteClient.localUser.disableScreenshare();
-```
-
-
- Flutter Core Introduction
-
-
diff --git a/docs/flutter-core/local-user/manage-media-devices.mdx b/docs/flutter-core/local-user/manage-media-devices.mdx
deleted file mode 100644
index fe6357a28f..0000000000
--- a/docs/flutter-core/local-user/manage-media-devices.mdx
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: Manage Media Devices
-description: >-
- Understand how to manage media devices for local users in Flutter. Follow
- Dyte's documentation for effective management of media devices.
-sidebar_position: 3
-tags:
- - flutter-core
- - local-user
- - self
- - self events
----
-
-# Manage Media Devices
-
-To get the list of media devices that are currently being used, you can
-use the following methods:
-
-### For audio devices:
-
-To get audio devices, use `getAudioDevices()` method on `localUser` object. It
-returns `List` object, where each object in the list refers to
-an audio device of the system.
-
-```dart
-// Get all audio devices
-final audioDevices = await dyteClient.localUser.getAudioDevices();
-```
-
-### For video devices
-
-To get audio devices, use `getVideoDevices()` method on `localUser` object. It
-returns `List` object, where each object in the list refers to
-an video device of the system.
-
-```dart
-// Get all video devices
-final videoDevices = await dyteClient.localUser.getVideoDevices();
-```
-
-## Set Audio Device
-
-To set an active audio device, you can call `setAudioDevice()` method. This
-takes a `DyteAudioDevice` object that needs to be set active for audio.
-
-```dart
-await dyteClient.localUser.setAudioDevice(device);
-```
-
-## Set Video Device
-
-To set a active video device, you can call `setVideoDevice()` method. This takes
-a `DyteVideoDevice` object that needs to be set active for video.
-
-```dart
-await dyteClient.localUser.setVideoDevice(device);
-```
-
-
- Flutter Core Manage Media Devices
-
-
diff --git a/docs/flutter-core/local-user/manage-permissions.mdx b/docs/flutter-core/local-user/manage-permissions.mdx
deleted file mode 100644
index cdff163500..0000000000
--- a/docs/flutter-core/local-user/manage-permissions.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Media Permissions
-description: >-
- Learn how to manage permissions in your Flutter application for a secure and
- controlled user experience with Dyte Docs.
-sidebar_position: 5
-tags:
- - flutter-core
- - local-user
- - self
- - self events
----
-
-# Media Permissions
-
-To get media permissions (audio/video) for localUser we can do as follows
-
-```dart
-final isCameraPermissionGranted
- = dyteMobileClient.localUser.permissions.isCameraPermissionGranted;
-final isMicrophonePermissionGranted
- = dyteMobileClient.localUser.permissions.isMicrophonePermissionGranted;
-```
-
-Similarly to listen to callbacks regarding media permissions once user joins
-the meeting
-
-```dart
-
-class LocalUserNotifier implements DyteSelfEventsListener {
-
- ...
- @override
- void onMeetingRoomJoinedWithoutCameraPermission() {
- // when meeting room is joined without camera permission
- }
-
- override
- void onMeetingRoomJoinedWithoutMicPermission() {
- // when meeting room is joined without microphone permission
- }
-
- ...
-}
-```
-
-
- Flutter Core Media Permissions
-
-
diff --git a/docs/flutter-core/local-user/screen-share-iOS-guide.mdx b/docs/flutter-core/local-user/screen-share-iOS-guide.mdx
deleted file mode 100644
index 40ac00ec4b..0000000000
--- a/docs/flutter-core/local-user/screen-share-iOS-guide.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: Sharing screen on iOS
-sidebar_position: 12
-tags:
- - flutter-core
----
-
-This document explains how to setup screen sharing on a Flutter iOS App using Dyte SDK
-
-## Overview
-
-1. Add a new Broadcast Upload Extension to your project.
-2. Setup app groups
-3. Have your SampleHandler class initialize DyteBroadcastHandler and proxy a few methods.
-4. Update Info.plist
-
-### Add a new Broadcast Upload Extension to your project.
-
-Add a Broadcast Upload Extension through `File` -> `New` -> `Target`.
-Choose `iOS` -> `Broadcast Upload Extension` and fill out the required information for your extension and click `Finish`.
-
-
-
-
-### Setup app groups
-
-Add your extension to an app group by going to your extension's target in the project; in the Signings & Capabilities tab, click the + button in the top left and add App Groups. If you haven't done so already, add App Groups to your main app as well, ensuring that the App Group identifier is the same for both.
-
-
-
-
-### Setup SampleHandler
-
-- Place the `DyteSampleHandler.swift` file present [here](https://github.com/dyte-io/iOS-ScreenShare/blob/main/DyteSampleHandler.swift) in the `ios//` folder in your flutter project.
-
-- Create a `SampleHandler.swift` file or replace the contents of the file if already present in the same `ios//` to look something like this:
-
-```swift
-
-import ReplayKit
-
-class SampleHandler: DyteSampleHandler {
-
-}
-
-```
-
-### Modify Info.plist
-
-Make sure **both of them** (App and Extension Info.plist) contains these keys
-
-```
- RTCAppGroupIdentifier
- (name of the group)
- RTCScreenSharingExtension
- (Bundle Identifier)
-```
-
-
-
-### Start the Screenshare
-
-Call the method `enableScreenshare()`
-
-```
-dyteClient.localUser.enableScreenshare()
-```
-
-
-
-
-
- Flutter Core Sharing screen on iOS
-
diff --git a/docs/flutter-core/participants/_category_.json b/docs/flutter-core/participants/_category_.json
deleted file mode 100644
index 1506bb147c..0000000000
--- a/docs/flutter-core/participants/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Remote Participants",
- "collapsible": true
-}
diff --git a/docs/flutter-core/participants/events.mdx b/docs/flutter-core/participants/events.mdx
deleted file mode 100644
index 30c6e60f5b..0000000000
--- a/docs/flutter-core/participants/events.mdx
+++ /dev/null
@@ -1,157 +0,0 @@
----
-title: Participant Events
-description: >-
- Explore events related to participants in Flutter. Follow our documentation
- for effective handling of participant events in your Flutter app.
-sidebar_position: 3
-tags:
- - flutter-core
- - participants
- - self
----
-
-## Participant joined
-
-Trigger an event when any participant joins the meeting.
-
-```dart
-class ParticipantsEventListener extends DyteParticipantEventsListener {
- ...
- @override
- void onParticipantJoin(DyteJoinedMeetingParticipant participant) {
- // your code here to handle new participant
- }
- ...
-}
-```
-
-## Participant updated
-
-Trigger an event when any participant update in meeting. For example, when a participant changes their name.
-
-```dart
-...
-
-@override
-void onParticipantUpdated(DyteJoinedMeetingParticipant participant) {
- // your code here to handle new participant
-}
-
-...
-```
-
-## Participant left
-
-Trigger an event when any participant leaves the meeting.
-
-```dart
-...
-
-@override
-void onParticipantLeave(DyteJoinedMeetingParticipant participant) {
- // your code here to handle participant left from meeting
-}
-
-...
-```
-
-## Video update
-
-Trigger an event when any participant starts or stops the video.
-
-```dart
-...
-
-@override
-void onVideoUpdate({
- required bool videoEnabled,
- required DyteJoinedMeetingParticipant participant,
-}) {
- // your code here to handle participant video toggle update
-}
-
-...
-```
-
-## Audio update
-
-Triggers an event when a participant starts or stops the audio.
-
-```dart
-...
-
-@override
-void onAudioUpdate({
- required bool audioEnabled,
- required DyteJoinedMeetingParticipant participant,
-}) {
- // your code here to handle participant audio toggle update
-}
-
-...
-```
-
-## Screen share update
-
-Triggers an event when a participant starts or stops screen share.
-
-```dart
-...
-
-@override
-void onScreenShareStarted(DyteJoinedMeetingParticipant participant) {
- /// handle screen share started of `DyteJoinedMeetingParticipant` participant
-}
-
-@override
-void onScreenShareEnded(DyteJoinedMeetingParticipant participant) {
- /// handle screen share ended of `DyteJoinedMeetingParticipant` participant
-}
-
-...
-```
-
-## Screen share participants list
-
-Obtain the list of the screenshare participants, using the `participants.screenshares` function which returns a `DyteRoomParticipants` object that maintains a record of participants who have joined, pinned, and screenshared. This object updates with each `onUpdate` call.
-
-## Screen share view
-
-To get the screenshare widget, create an object of the `ScreenshareView` class.
-
-```dart
-// To show screenshare of a participant
-final screenshareView = ScreenShareView(meetingParticipant);
-```
-
-## Active Participants changed
-
-This event is triggered when the active participant changes, for example, when the user moves to the next page of participants. It provides the list of participants on the current page.
-
-```dart
-...
-
-@override
-void onActiveParticipantsChanged(List active) {
- /// handle active participants changed
-}
-
-...
-```
-
-Other events:
-
-| **Event** | **Description** |
-| ------------------------ | ------------------------------------------------------------------------------------------ |
-| `onActiveSpeakerChanged` | Triggered when active speaker is change. Updated active speaker is sent as payload. |
-| `onNoActiveSpeaker` | Triggered when there is no active participant. |
-| `onParticipantPinned` | Triggered when a participant is pinned. Pinned participant details is sent as payload. |
-| `onParticipantUnpinned` | Triggered when a participant is unpinned. Unpinned participant details is sent as payload. |
-
-
- Flutter Core Participant Events
-
-
diff --git a/docs/flutter-core/participants/introduction.mdx b/docs/flutter-core/participants/introduction.mdx
deleted file mode 100644
index 25b552fbbc..0000000000
--- a/docs/flutter-core/participants/introduction.mdx
+++ /dev/null
@@ -1,143 +0,0 @@
----
-title: Introduction
-description: >-
- Learn about participants in Flutter and how to integrate participant features
- with Dyte's documentation. Follow our guide for a smooth introduction.
-sidebar_position: 1
-tags:
- - flutter-core
- - participants
- - participant
----
-
-# Introduction - Participants
-
-The data regarding all meeting participants is stored under `participants`
-objects of `DyteMobileClient()` instance. To get all the objects and methods
-related to participants:
-
-```dart
- final participants = dyteClient.participants;
-```
-
-Use the methods and events to consume the participants data. For example, to get
-all the participants who joined the meeting:
-
-```dart
-// get all joined participants
-final joinedParticipants = dyteClient.participants.joined;
-```
-
-The `dyteClient.participants` object has the following properties.
-
-- `waitlisted`: A list that contains all the participants waiting to join the
- meeting. All elements of this array are of type _DyteWaitlistedParticipant_.
-- `joined`: A list that contains all the participants who have joined the
- meeting. All elements of this array are of type _DyteJoinedMeetingParticipant_.
-- `active`: A list that contains all the participants except the local user who
- are supposed to be on the screen at the moment. All elements of this array are of type _DyteJoinedMeetingParticipant_.
-- `screenshares`: A list that contains all the participants who have shared
- screen in the meeting. All elements of this array are of type _DyteJoinedMeetingParticipant_.
-- `pinned`: Pinned participant of the meeting. It can be nullable as well. This is of type _DyteJoinedMeetingParticipant_.
-
-Therefore, if you were to make a grid of participants, you'd use the `active`
-list, but to display all participants in the meeting you'd use the `joined`
-list.
-
-- `dyteClient.pinned` is of type `DyteJoinedMeetingParticipant`.
-- All participant in each of the `joined`, `waitlisted`, `active`, and
- `screenshares` list is of type `DyteJoinedMeetingParticipant`.
-
-## Grid info for the room
-
-`DyteGridPagesInfo` object is designed to help you with pagination decisions. It
-is returned with `onGridUpdated` event. It contains the following properties:
-
-- `currentPageNumber`: Int, returns the current page number (currently displayed
- by the client).
-- `pageCount`: Int, max pages possible with current number of participants.
-- `isNextPagePossible`: bool, if the next page of participants is available.
-- `isPreviousPagePossible`: bool, if previous page of participants is available.
-
-## Video view
-
-To access the video view of a participant, create an object of the `VideoView` class.
-
-```dart
-// To show the video of a participant
-final videoView = VideoView(meetingParticipant: participant);
-// To get video view for a local user
-final selfVideoView = VideoView(isSelfTrue: true);
-```
-
-## Move between pages in paginated mode
-
-The `setPage(int pageNumber)` method allows you to switch between pages of
-participants present in the meeting.
-
-_Note: Indexing of page starts from 0_
-
-```dart
-// switch to page 1
-dyteClient.setPage(1);
-```
-
-## Broadcast Message to all participants
-
-```dart
-// payload is a Map
-const payload = {
- "message": "Hello World",
-};
-dyteClient.broadcastMessage("type", payload);
-```
-
-## Video update for all participants
-
-Triggered when any participant of the meeting enable/disable it's video. It also passes the participant details who has updated it's video status.
-
-```dart
-class ParticipantNotifier implements DyteParticipantEventsListener{
-
- ...
- @override
- void onVideoUpdate(
- bool videoEnabled,
- DyteJoinedMeetingParticipant participant,
- ) {
- //
- }
- ...
-}
-
-
-```
-
-## Audio update
-
-Triggered when any participant of the meeting enable/disable it's audio. It also passes the participant details who has updated it's audio status.
-
-```dart
-
-class ParticipantNotifier implements DyteParticipantEventsListener{
-
- ...
- @override
- void onAudioUpdate(
- bool audioEnabled,
- DyteJoinedMeetingParticipant participant,
- ) {
- //
- }
- ...
-}
-
-```
-
-
- Flutter Core Introduction
-
-
diff --git a/docs/flutter-core/participants/participant-object.mdx b/docs/flutter-core/participants/participant-object.mdx
deleted file mode 100644
index 7e852e7c77..0000000000
--- a/docs/flutter-core/participants/participant-object.mdx
+++ /dev/null
@@ -1,161 +0,0 @@
----
-title: Participant Object
-description: >-
- Understand the participant object and its integration in Flutter. Follow
- Dyte's documentation for effective implementation in your app.
-sidebar_position: 2
-tags:
- - flutter-core
- - participants
- - participant
----
-
-# The Participant object
-
-The `DyteMeetingParticipant` object consists of all the information related to a
-particular participant. For instance, it contains a participants
-video/audio/screenshare stream, and the participant's name. It also contains
-state variables that indicate whether a participant's camera is on or off, and
-whether they are muted or unmuted.
-
-The participant object has the following properties.
-
-- `id`: The `participantId` of the participant (aka `peerId`).
-- `userId`: The `userId` of the participant.
-- `name`: Contains participant's name.
-- `picture`: Contains participant's picture (if any).
-- `isHost`: Boolean value indicating whether this user is host of current
- meeting or not.
-- `clientSpecificId`: Arbitrary ID that can be set to identify the participant.
-- `videoEnabled`: Set to true if the participant's camera is on.
-- `audioEnabled`: Set to true if the participant is unmuted.
-
-You can subscribe to various participants events. For subscribing:
-
-- Implement `DyteParticipantEventsListener` to a class say
- `ParticipantEventListener`, and listen to event from
- `DyteParticipantEventsListener` by overriding them. This class can be user to
- manage your state in the application.
-
-```dart
-class ParticipantEventListener extends DyteParticipantEventsListener {
-
- @override
- void onAudioUpdate({
- required bool audioEnabled,
- required DyteJoinedMeetingParticipant participant,
- }) {
- /// handle audioUpdate of `DyteJoinedMeetingParticipant` participant
- }
-
- @override
- void onActiveSpeakerChanged(DyteJoinedMeetingParticipant participant) {
- /// handle active speaker changing to `DyteJoinedMeetingParticipant` participant
- }
-
- @override
- void onNoActiveSpeaker() {
- /// handle no active speaker
- }
-
- @override
- void onParticipantPinned(DyteJoinedMeetingParticipant participant) {
- /// handle pinning of `DyteJoinedMeetingParticipant` participant
- }
-
-
- @override
- void onParticipantUnpinned(DyteJoinedMeetingParticipant participant) {
- /// handle unpinning the pinned participant
- }
-
- @override
- void onScreenShareStarted(DyteJoinedMeetingParticipant participant) {
- /// handle screen share started of `DyteJoinedMeetingParticipant` participant
- }
-
- @override
- void onScreenShareEnded(DyteJoinedMeetingParticipant participant) {
- /// handle screen share ended of `DyteJoinedMeetingParticipant` participant
- }
-
- @override
- void onVideoUpdate({
- required bool videoEnabled,
- required DyteJoinedMeetingParticipant participant,
- }) {
- /// handle videoUpdate of `DyteJoinedMeetingParticipant` participant
- }
-
-}
-```
-
-- Now to subscribe, pass the instance of `DyteParticipantEventsListener` class
- created above to `addParticipantEventsListener()` method of `dyteClient`
- instance as follows:
-
-```dart {2}
-dyteClient.addParticipantEventsListener(ParticipantEventListener());
-```
-
-## Audio/Video updates for participant
-
-```dart
-
-...
-
-@override
-void onVideoUpdate(bool videoEnabled) {
- if (videoEnabled) {
- // video is enabled, and other participants in room can see local user
- } else {
- // video is disabled, and other participants in room can not see local user.
- }
-}
-
-@override
-void onAudioUpdate({
- required bool audioEnabled,
- required DyteJoinedMeetingParticipant participant,
-}) {
- if (audioEnabled) {
- // audio is enabled, and other participants in room can hear local user
- } else {
- // audio is disabled, and other participants in room can not hear local user.
- }
-}
-
-...
-
-```
-
-## Host controls methods
-
-If you (the local user) have the relevant permissions in the meeting, you can
-disable a participant's video/audio streams, or even remove them from the
-meeting.
-
-```dart
-final participant = meeting.participants.joined.first;
-
-// To disable a participant's video stream
-participant.disableVideo();
-
-// To disable a participant's audio stream
-participant.disableAudio();
-
-// To kick a participant from the meeting
-participant.kick();
-
-// to pin a participant in a meeting
-participant.pin();
-
-```
-
-
- Flutter Core The participant object
-
-
diff --git a/docs/flutter-core/participants/remote-participants.mdx b/docs/flutter-core/participants/remote-participants.mdx
deleted file mode 100644
index 445ab6d84b..0000000000
--- a/docs/flutter-core/participants/remote-participants.mdx
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Participant Types
-description: 'Events, methods and data pertaining to meeting participants.'
-sidebar_position: 1
-slug: /participants/
-tags:
- - flutter-core
- - participants
----
-
-# Participant Types
-
-The data regarding all meeting participants is stored under `meeting.participants`. These **does not** include the local user. Use the methods and events to consume the participants data. For example, to get all the participants who joined the meeting:
-
-```kotlin
-// get all joined participants
-final List joined = dyteMobileClient.participants.active;
-
-// get active participants
-final List active = dyteMobileClient.participants.active;
-```
-
-The `dyteMobileClient.participants` object has the following **lists** of participants
-
-- **joined**: A list that contains all the participants who are currently in the meeting
- except the local user
-- **waitlisted**: A list that contains all the participants waiting to join the
- meeting.
-- **active**: A list that contains all the participants, **including** the local user whose media is subscribed to i.e participants who are supposed to be on the screen at the moment, including the local user.
-- **pinned**: A list that contains all the pinned participants of the meeting.
-- **screenShares**: A list that contains all the participants who are sharing their screen.
-
-Therefore if you were to make a video / audio grid of participants, you'd use the `active` list, but to display the list of all participants in the meeting you'd use the `joined` list.
-
-Each participant in each of the `joined`, `active`, `pinned` and `screenShares` list are of type `DyteJoinedMeetingParticipant`, `waitlisted` list is of type `DyteWaitlistedParticipant`.
-
-
- Flutter Core Participants
-
diff --git a/docs/flutter-core/participants/waitlisted-participants.mdx b/docs/flutter-core/participants/waitlisted-participants.mdx
deleted file mode 100644
index 6d5858edd6..0000000000
--- a/docs/flutter-core/participants/waitlisted-participants.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Waitlisted Participants
-description: 'Events, methods and data to manage waiting room participants.'
-sidebar_position: 4
-tags:
- - flutter-core
- - participants
- - waitlisted
- - waiting room
----
-
-Participants in the waiting room are represented by `DyteWaitlistedParticipant` objects. If the local user has the permission to
-accept waiting room requests (`dyteMobileClient.permissions.waitingRoom.canAcceptRequests` is _true_), you can manage pending waiting room requests,
-accepting or rejecting them as needed.
-You can access the list of waitlisted participants via the `dyteMobileClient.participants.waitlisted` property.
-
-**Note**: If the local user is not a host, `dyteMobileClient.participants.waitlisted` property returns an empty list.
-
-### Accepting Requests
-
-To accept a waiting room request, use the `acceptWaitListedRequest()` method on a `dyteMobileClient.hostActions` object:
-
-```dart
-final waitlistedParticipant = dyteMobileClient.participants.waitlisted[0];
-dyteMobileClient.hostActions.acceptWaitlistedParticipant(waitlistedParticipant);
-```
-
-### Rejecting Requests
-
-To deny a waiting room request, use the `rejectWaitListedRequest()` method on a `dyteMobileClient.hostActions` object:
-
-```dart
-final waitlistedParticipant = dyteMobileClient.participants.waitlisted[0];
-dyteMobileClient.hostActions.rejectWaitListedRequest(waitlistedParticipant);
-```
-
-### Waiting Room Events
-
-Implement the `DyteWaitlistEventsListener` interface to listen for events related to the waiting room:
-
-```kotlin
-class WaitlistStatusNotifier extends DyteWaitingRoomEventsListener {
- @override
- void onWaitListParticipantJoined(DyteWaitlistedParticipant participant) {
- // Triggered when a new participant joins the waiting room
- }
-
- @override
- void onWaitListParticipantAccepted(DyteWaitlistedParticipant participant) {
- // Triggered when a waitlisted participant is accepted into the meeting
- }
-
- @override
- void onWaitListParticipantRejected(DyteWaitlistedParticipant participant) {
- // Triggered when a waitlisted participant is denied entry into the meeting
- }
-
- @override
- void onWaitListParticipantClosed(DyteWaitlistedParticipant participant) {
- // Triggered when a waitlisted participant leaves the waiting room
- }
-}
-
-dyteMobileClient.addWaitingRoomListener(WaitlistStatusNotifier());
-```
-
-
- Flutter Core Waitlisted Participants
-
diff --git a/docs/flutter-core/polls/_category_.json b/docs/flutter-core/polls/_category_.json
deleted file mode 100644
index 3d3e19b415..0000000000
--- a/docs/flutter-core/polls/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Polls",
- "collapsible": true
-}
diff --git a/docs/flutter-core/polls/creating-a-poll.mdx b/docs/flutter-core/polls/creating-a-poll.mdx
deleted file mode 100644
index e78fcdffe6..0000000000
--- a/docs/flutter-core/polls/creating-a-poll.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Creating a poll
-description: >-
- Learn how to create polls in Flutter using Dyte's features. Follow our
- documentation for seamless integration and effective poll creation.
-sidebar_position: 2
-tags:
- - flutter-core
- - polls
- - create
----
-
-# Creating a poll
-
-A new poll can be created using the `create` method from the
-[`dyteClient.polls`](./introduction) object. The `dyteClient.polls.create()`
-method accepts the following params.
-
-| Param | Type | Default Value | Required | Description |
-| --------- | -------- | ------------- | -------- | ------------------------------------------ |
-| question | string | - | yes | The question that is to be voted for. |
-| options | string[] | - | yes | The options of the poll. |
-| anonymous | boolean | - | yes | If true, the poll votes are anonymous. |
-| hideVotes | boolean | - | yes | If true, the votes on the poll are hidden. |
-
-The following snippet creates a poll where votes are anonymous.
-
-```dart
-dyteClient.polls.create(
- question: "Are you an early bird or a night owl?",
- options: ["Early bird", "Night owl"],
- anonymous: true,
- hideVotes: false,
-);
-```
-
-
- Flutter Core creating/voting a poll
-
-
diff --git a/docs/flutter-core/polls/introduction.mdx b/docs/flutter-core/polls/introduction.mdx
deleted file mode 100644
index 264b97b039..0000000000
--- a/docs/flutter-core/polls/introduction.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Introduction
-description: >-
- Get started with Dyte's polling features in Flutter. Follow our documentation
- for an introduction to polling capabilities in your app.
-sidebar_position: 1
-tags:
- - flutter-core
- - polls
----
-
-# Introduction
-
-The meetings polls object can be accessed using `dyteClient.polls`. It provides
-methods to create polls, vote, and more.
-
-`dyteClient.polls.polls` returns an array of all polls created in a meeting,
-where each element is an object of type `DytePollMessage`.
-
-```dart
-class DytePollMessage {
- final String id;
- final String question;
- final bool anonymous;
- final bool hideVotes;
- final String createdBy;
- final List options;
- final List voted;
-}
-```
-
-The `DytePollMessage` class has the following properties:
-
-- `id`: Unique ID assigned to each poll.
-- `question`: Question of the poll.
-- `anonymous`: To hide the votes of each user even after completion. (false by
- default)
-- `hideVotes`: Hide votes until the voting is complete. (enabled if anonymous is
- enabled)
-- `createdBy`: Name of creator the poll.
-- `options`: Array of `DytePollOption` object, contains all the options to the
- poll question.
-
-The type `DytePollMessage` represents a poll in a Dyte meeting. It also
-contains list of `DytePollOption` which are _options_ for a given poll. And every
-`DytePollOption` has list of votes inside of it. Votes are objects of class
-`DytePollVote` which internally has id and name of the vote.
-
-```dart
-class DytePollOption(
- final String text; // Option text.
- final List votes; // List of votes.
- final int count; // Number of votes.
-);
-
-class DytePollVote {
- final String id; // ID of the voter.
- final String name; // Name of the voter.
-}
-```
-
-### Listening to new polls in a meeting
-
-To be able to receive new poll messages you need to implement a method
-`onPollUpdates()` method from callback `DytePollEventsListener`:
-
-To get poll updates, listen to `onPollUpdates()` callback:
-
-```dart
-
-class PollEventsListeners extends DytePollEventsListener {
-
- @override
- void onPollUpdates(List polls) {
- /// code to handle polls
- }
-
- @override
- void onNewPoll(DytePollMessage poll) {
- /// code to handle new poll
- }
-
-}
-
-```
-
-You can subscribe to these events as follows:
-
-```dart
-dyteClient.addPollEventsListener(PollEventsListeners());
-```
-
-
- Flutter Core Introduction
-
-
diff --git a/docs/flutter-core/polls/voting-on-a-poll.mdx b/docs/flutter-core/polls/voting-on-a-poll.mdx
deleted file mode 100644
index e0ec56ce0b..0000000000
--- a/docs/flutter-core/polls/voting-on-a-poll.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Voting on a poll
-description: >-
- Understand how users can vote on polls in Flutter with Dyte's features. Follow
- our documentation for effective implementation in your app.
-sidebar_position: 3
-tags:
- - flutter-core
- - polls
- - votes
----
-
-# Voting on a poll
-
-The `dyteClient.polls.vote()` method can be used to register a vote on a poll.
-It accepts the following params.
-
-| Param | Type | Default Value | Required | Description |
-| ----------- | --------------- | ------------- | -------- | ---------------------------------------------------------- |
-| pollMessage | DytePollMessage | - | yes | Contains all the poll properties (question, options, etc.) |
-| pollOption | DytePollOption | yes | yes | Option on which the user voted |
-
-The following snippet votes for the 1st option on the 1st poll created in the
-meeting.
-
-```dart
-final poll = dyteClient.polls.polls[0];
-final selectedPollOption = poll.options[0];
-dyteClient.polls.vote(poll, selectedPollOption);
-```
-
-
- Flutter Core Voting on a poll
-
-
diff --git a/docs/flutter-core/pre-call/1-media-preview.mdx b/docs/flutter-core/pre-call/1-media-preview.mdx
deleted file mode 100644
index 1f99eb6f73..0000000000
--- a/docs/flutter-core/pre-call/1-media-preview.mdx
+++ /dev/null
@@ -1,123 +0,0 @@
-# Media Preview
-
-Before joining a meeting, users may want to preview and configure their media devices like camera, microphone, and audio output.
-This section provides developers with the tools to prepare the media environment before joining a Dyte meeting.
-
-If you are using our UI Kits, this functionality can be handled by `DyteSetupScreen` or built with `DyteParticipantTile` widget.
-
-## Properties
-
-- `dyteMobileClient.localUser.audioEnabled`: A boolean value indicating if the audio is currently enabled.
-- `dyteMobileClient.localUser.videoEnabled`: A boolean value indicating if the video is currently enabled.
-
-## Methods
-
-### Toggling Media
-
-The same methods used for controlling media during a meeting are also applicable for pre-call media configuration.
-
-**1. Mute/Unmute microphone**
-
-```dart
-// Mute Audio
-dyteMobileClient.localUser.disableAudio()
-
-// Unmute Audio
-dyteMobileClient.localUser.enableAudio()
-
-```
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableAudio()") --> success("Gives onAudioUpdate callback to DyteSelfEventsListener")
-
- class eam basic;
-```
-
-
-
-Anytime there is an update in the audio state of the local user, the Core SDK notifies the client through the `onAudioUpdate` callback
-from `DyteSelfEventsListener`. Here's how you can register the listener:
-
-```dart
-class SelfAudioNotifier extends DyteSelfEventsListener{
- override fun onAudioUpdate(bool audioEnabled) {
- // Show local user's VideoView if video is enabled
- }
-}
-
-dyteMobileClient.addSelfEventsListener(SelfAudioNotifier())
-```
-
-**2. Enable/Disable camera**
-
-```dart
-// Disable Video
-dyteMobileClient.localUser.disableVideo()
-
-// Enable Video
-dyteMobileClient.localUser.enableVideo()
-```
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableVideo()") --> success("Gives onVideoUpdate callback to DyteSelfEventsListener")
-
- class eam basic;
-```
-
-
-
-Whenever there is an update in the video state of the local user, the Core SDK notifies the client through the `onVideoUpdate` callback
-from `DyteSelfEventsListener`. Here's how you can register the listener:
-
-```dart
-class SelfVideoNotifier extends DyteSelfEventsListener{
- override fun onVideoUpdate(bool videoEnabled) {
- // Show local user's VideoView if video is enabled
- }
-}
-
-dyteMobileClient.addSelfEventsListener(SelfVideoNotifier());
-```
-
-### Changing Media Device
-
-Media devices represent the hardware for the camera, microphone, and speaker devices. To get the list of media devices currently
-available, use the following methods:
-
-```dart
-// Get all audio devices
-final audioDevices = dyteMobileClient.localUser.getAudioDevices()
-
-// Get all video devices
-final videoDevices = dyteMobileClient.localUser.getVideoDevices()
-```
-
-To get the currently selected media device, use the following methods:
-
-```dart
-// Get current audio device being used
-final currentAudioDevice = dyteMobileClient.localUser.getSelectedAudioDevice()
-
-// Get current video device being used
-final currentVideoDevice = dyteMobileClient.localUser.getSelectedVideoDevice()
-```
-
-Use these methods to create a UI that allows users to configure their media devices. When the user selects a device, use the below methods to set the device.
-
-**Set device**
-
-```kotlin
-// Set audio device
-dyteMobileClient.localUser.setAudioDevice(device)
-// eg. device = audioDevices[0]
-
-// Set video device
-dyteMobileClient.localUser.setVideoDevice(device)
-// eg. device = videoDevices[0]
-```
diff --git a/docs/flutter-core/pre-call/3-meeting-meta.mdx b/docs/flutter-core/pre-call/3-meeting-meta.mdx
deleted file mode 100644
index 04b44b324b..0000000000
--- a/docs/flutter-core/pre-call/3-meeting-meta.mdx
+++ /dev/null
@@ -1,11 +0,0 @@
-# Meeting Metadata
-
-### Change the name of the user
-
-You can allow the user to edit their name by using the `setDisplayName` method.
-
-```dart
-dyteMobileClient.localUser.setDisplayName("New Name")
-```
-
-**Note**: The name change will only be reflected to other participants if this method is called before joining the room.
diff --git a/docs/flutter-core/pre-call/4-waiting-room.mdx b/docs/flutter-core/pre-call/4-waiting-room.mdx
deleted file mode 100644
index 5b2c4782f0..0000000000
--- a/docs/flutter-core/pre-call/4-waiting-room.mdx
+++ /dev/null
@@ -1,60 +0,0 @@
-# Waiting Room
-
-When you call `dyteMobileClient.joinRoom()`, the user either enters the meeting room directly if allowed, or they are placed in the waiting room
-if they are a waitlisted participant.
-
-The diagram illustrates the possible room states the local user can be in.
-
-```mermaid
-stateDiagram-v2
- init --> joined
- init --> waitlisted
- waitlisted --> joined
- waitlisted --> rejected
-```
-
-
-
-### Meeting Room Joined
-
-If user joins the room successfully, you receive the `onMeetingRoomJoinCompleted()` callback in `DyteMeetingRoomEventsListener`.
-You can listen for this callback as follows:
-
-```dart
-
-class MeetingRoomNotifier extends DyteMeetingRoomEventsListener{
- override fun onMeetingRoomJoinCompleted() {
- // Local user is in the meeting
- }
-}
-
-dyteMobileClient.addMeetingRoomEventsListener(MeetingRoomNotifier());
-```
-
-### Waitlisted Participant
-
-If the user is waitlisted, the `onWaitListStatusUpdate` callback in `DyteSelfEventsListener` notifies you of any changes in the
-user's waitlist status. You can check the `waitListStatus` to determine their status:
-
-- `WAITING`: Local user is in the waiting room.
-- `REJECTED`: Local user's join room request is rejected by the host.
-
-```dart
-class WaitingRoomNotifier extends DyteSelfEventsListener{
- @override
- void onWaitListStatusUpdate(DyteWaitListStatus waitListStatus) {
- switch (waitListStatus) {
- case DyteWaitListStatus.waiting:
- // Local user is in the waiting room
- case DyteWaitListStatus.rejected:
- // Local user's join room request was rejected by the host
- default:
- break;
- }
- }
-}
-
-dyteMobileClient.addSelfEventsListener(WaitingRoomNotifier());
-```
-
-Host can use [these methods to accept/reject participants](/flutter-core/participants#waiting-room-methods).
diff --git a/docs/flutter-core/pre-call/_category_.json b/docs/flutter-core/pre-call/_category_.json
deleted file mode 100644
index 2e19b91163..0000000000
--- a/docs/flutter-core/pre-call/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 2,
- "label": "Pre-call",
- "collapsible": true,
- "className": "pre-call-docs"
-}
diff --git a/docs/flutter-core/quickstart.mdx b/docs/flutter-core/quickstart.mdx
deleted file mode 100644
index f2d7059779..0000000000
--- a/docs/flutter-core/quickstart.mdx
+++ /dev/null
@@ -1,336 +0,0 @@
----
-title: Quickstart
-description: >-
- Dive into the core of Flutter development with Dyte. Explore essential
- documentation to streamline your Flutter app integration.
-sidebar_position: 1
-tags:
- - flutter-core
- - quickstart
-slug: /
----
-
-# Flutter Core SDK Quickstart
-
-This quickstart shows how to use Dyte's Flutter Core SDK to add live video and
-audio call to your Flutter applications.
-
-For getting started quickly, you can use our sample code. You can clone and run
-a sample application from the
-[Flutter Core SDK GitHub repository](https://github.com/dyte-io/flutter-samples/tree/main/flutter_core).
-
-## Objective
-
-You'll learn how to:
-
-- Install the Dyte SDK
-- Initialize the SDK
-- Configure a Dyte meeting
-- Initialize the Dyte meeting
-- And go live with your Dyte meeting
-
-## Before Getting Started
-
-- Make sure you've read the
- [Getting Started with Dyte](/getting-started) topic and
- completed the steps in the
- [Integrate Dyte](/getting-started#integrate-dyte) section.
- You must complete the following steps:
- - Create a [Dyte Developer Account](https://dev.dyte.io/)
- - Create a
- [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
- - [Add Participant](/api/?v=v2#/operations/add_participant)
- to the meeting
-- Install Flutter on your system
-- (For iOS apps) Install
- [Xcode](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwin55bqodH8AhUVQXwKHaR-DAsQFnoECA0QAQ&url=https%3A%2F%2Fapps.apple.com%2Fus%2Fapp%2Fxcode%2Fid497799835%3Fmt%3D12&usg=AOvVaw2fEvMbfRtGhB4SPHYB54NX)
-- Ensure that Rosetta is installed with Xcode on Mac computers with Apple
- silicon.
-- Make sure your Mac computers are running macOS version 12.0 Monterey or
- higher.
-- (For Android apps) Install
- [Android Studio](https://developer.android.com/studio), or install the Android
- SDK for Command-Line Interface (CLI) only.
-
-## Step 1: Install the SDK
-
-1. To install the SDK, add the Dyte Core Flutter SDK dependency into the
- `pubspec.yaml` file.
-
- ```dart
- flutter pub add dyte_core
- ```
-
-2. Then import the following package into your project:
-
- ```dart
- import 'package:dyte_core/dyte_core.dart';
- ```
-
-After importing the package, perform the following steps for Android and iOS.
-
-### For Android
-
-Set `compileSdkVersion 33` and `minSdkVersion 21` inside `build.gradle` file at the `/android/app/build.gradle` file.
-
-```kotlin
- defaultConfig {
- ...
-
- compileSdkVersion 33
- minSdkVersion 21
-
- ...
- }
-```
-
-And change the kotlin version to `1.9.0`
-
-```kotlin
- ext.kotlin_version = '1.9.0'
-```
-
-### For iOS
-
-1. Set your platform to iOS 13.0 or above in your Podfile.
-
-```dart
-platform :ios, '13.0'
-```
-
-2. Add the following entries to the `Info.plist` file. This gives permission to
- your app to access the camera and microphone, access photos, install the
- required fonts and icons.
-
-```dart
-NSBluetoothPeripheralUsageDescription
-We will use your Bluetooth to access your Bluetooth headphones.
-
-NSBluetoothAlwaysUsageDescription
-We will use your Bluetooth to access your Bluetooth headphones.
-
-NSCameraUsageDescription
-For people to see you during meetings, we need access to your camera.
-
-NSMicrophoneUsageDescription
-For people to hear you during meetings, we need access to your microphone.
-
-NSPhotoLibraryUsageDescription
-For people to share, we need access to your photos.
-
-UIBackgroundModes
-
- audio
- voip
- fetch
- remote-notification
-
-
-```
-
-In iOS, if you are allowing user to download attachments in chat, add the following permissions in your app's Info.plist:
-
-```
-LSSupportsOpeningDocumentsInPlace
-
-UIFileSharingEnabled
-
-```
-
-:::tip Note
-
-If you intend to publish your app to the Google Play or App Store, you'll need
-to perform a few additional steps. So if you're working on release builds and
-not debug builds, refer to the [Release Builds](#release-builds) section.
-
-:::
-
-## Step 2: Initialize the SDK
-
-The `DyteMobileClient` is the main class of the SDK. It is the entry point and
-the only class required to initialize Dyte SDK.
-
-```dart
-final dyteClient = DyteMobileClient();
-```
-
-## Step 3: Set the meeting properties
-
-Set the properties in the `DyteMeetingInfo` class. You just need to provide the
-participant's `authToken`.
-
-| Name | Description |
-| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api?v=v2#/operations/add_participant) (The presetName created earlier must be passed in the body of the Add Participant API request) The API response contains the `authToken`. |
-| `baseUrl` | The base URL of the Dyte server. Default value is `https://api.dyte.io/v2`. This is an optional argument. |
-| `enableAudio` | A boolean value to enable or disable audio in the meeting. Default value is `true`. This is an optional argument. |
-| `enableVideo` | A boolean value to enable or disable video in the meeting. Default value is `true`. This is an optional argument. |
-
-```dart
-final meetingInfo = DyteMeetingInfoV2(
- authToken: '',
- baseUrl: 'https://api.dyte.io/v2', // optional argument, if you want to pass your own baseUrl
- enableAudio: false, // optional argument, to enable or disable audio in the meeting
- enableVideo: false, // optional argument, to enable or disable video in the meeting
- );
-```
-
-## Step 4: Initialize the connection request
-
-To initialize the connection request, call the `init()` method obtained on
-`dyteClient` with the `meetingInfo` argument. This will establish the connection
-with the Dyte meeting server.
-
-```dart
-dyteClient.init(meetingInfo);
-```
-
-By registering state observers, you receive callbacks for this action on the
-meeting object.
-
-```dart
-
-class RoomStateNotifier implements DyteMeetingRoomEventsListener {
-
- ...
-
- @override
- void onMeetingInitStarted() {
- /// on meeting init started
- }
-
- override
- void onMeetingInitCompleted() {
- /// on meeting init completed
- }
-
- @override
- void onMeetingInitFailed(Exception exception) {
- /// on meeting init failed
- }
-
- ...
-}
-
-```
-
-Subscibe to the `DyteMeetingRoomEventsListener` to receive the callbacks for the meeting object.
-
-```dart
-dyteClient.addMeetingRoomEventsListener(RoomStateNotifier());
-```
-
-## Step 5: Connect to the meeting
-
-Now, if you have established the connection with the Dyte meeting server
-successfully i.e. if you received `onMeetingInitCompleted` callback, next step is to join the room.
-
-### Join the room
-
-To join the meeting room, call `joinRoom()` method on the `dyteClient` instance
-as shown below.
-
-```dart
-dyteClient.joinRoom();
-```
-
-By registering state observers, you receive callbacks for join related actions on the
-meeting object.
-
-```dart
-class RoomStateNotifier implements DyteMeetingRoomEventsListener {
-
- ...
-
- @override
- void onMeetingRoomJoinStarted() {
- /// Handle join start state
- }
-
- @override
- void onMeetingRoomJoined() {
- /// Handle joining completion, ex: move to room screen
- }
-
- @override
- void onMeetingRoomJoinFailed(exception){
- /// Handle failure
- }
-
- ...
-}
-```
-
-Successful joining of meeting is indicated by `onMeetingRoomJoined` callback.
-
-### Leave the room
-
-Once the meeting is over, you can leave the meeting room.
-
-Once leave meeting is completed or you decide to `release()` the meeting [called when user exits the SDK without joining the meeting room, say user exited from setup/waiting room], make sure to cleanup all listeners by calling `dyteClient.cleanAllNativeListeners()`.
-
-To leave the meeting room, call `leaveRoom()` method on the `dyteClient` as
-shown below.
-
-```dart
-dyteClient.leaveRoom();
-```
-
-### Cleanup listeners
-
-Introduced in `dyte_core: 0.3.6`, `cleanAllNativeListeners()` method which needs to be called when you're done with current session of dyte meeting. It interally calls individual new clean methods for each listener `cleanNativeMeetingRoomEventsListener()`, `cleanNativeParticipantEventListener()`, `cleanNativePollListener()`, `cleanNativeRecordingListener()`, `cleanNativeStageEventsListener()`, `cleanNativeSelfParticipantEventListener()`, `cleanNativeChatListener()`, `cleanNativeDataUpdateListener()`, `cleanNativeLivestreamListener()`, `cleanNativePluginEventsListener()`.
-
-By registering state observers, you receive callbacks for this action on the
-meeting object.
-
-```dart
-class RoomStateNotifier implements DyteMeetingRoomEventsListener {
-
- ...
-
- @override
- void onMeetingRoomLeaveStarted() {
- /// on meeting room leave started
- }
-
- @override
- void onMeetingRoomLeaveCompleted() {
- dyteClient.removeMeetingRoomEventsListener(this);
- dyteClient.cleanupAppListeners();
- /// on meeting room left
- }
-
- ...
-
-}
-```
-
-Successfully exiting the meeting is indicated by `onMeetingRoomLeaveCompleted` callback.
-
-## Release Builds
-
-If you intend to publish your app to the Google Play or App Store, perform the
-following steps after installing the SDKs. So if you're working on release
-builds and not debug builds, do the following:
-
-### For iOS release builds
-
-Disable `BITCODE` in your Podfile.
-
-```dart
-post_install do |installer|
- installer.pods_project.targets.each do |target|
- target.build_configurations.each do |config|
- config.build_settings['ENABLE_BITCODE'] = 'NO'
- end
- end
-end
-```
-
-
- Flutter Core Quickstart
-
-
diff --git a/docs/flutter-core/recording.mdx b/docs/flutter-core/recording.mdx
deleted file mode 100644
index aeb5a53ee5..0000000000
--- a/docs/flutter-core/recording.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Recording
-description: >-
- Explore recording features in Flutter with Dyte's documentation. Learn how to
- enable and configure recording for a seamless user experience.
-sidebar_position: 9
-tags:
- - flutter-core
- - recording
----
-
-# Recording
-
-The `dyteClient.recording` object can be used start and stop recordings in a
-meeting.
-
-### Recording State
-
-The `dyteClient.recording.recordingState` property indicates the current state of the recording. Possible states include `idle`, `recording`, `starting`, `stopping`.
-
-### Start a recording
-
-To start a recording, you need to call the `start()` method in the
-`dyteClient.recording` object, as shown below.
-
-```dart
-dyteClient.recording.start();
-```
-
-### Stop a recording
-
-To stop a recording, you need to call the `stop()` method in the
-`dyteClient.recording` object, as shown below.
-
-```dart
-dyteClient.recording.stop();
-```
-
-### Listening for Recording Events
-
-To handle recording-related updates, you need to listen for
-`onMeetingRecordingStateUpdated()` event. This returns `DyteRecordingState`
-object with it.
-
-### Listen to recording state changes
-
-To handle recording-related updates, you need to implement `DyteMeetingRoomEventsListener`. This interface provides callbacks for various recording events as described in excerpt below:
-
-- `onMeetingRecordingStarted()`: Called when the recording is started or resumed, either by the user or their peer.
-- `onMeetingRecordingEnded()`: Called when the recording is stopped or paused, either by the user or their peer.
-- `onMeetingRecordingStateUpdated(DyteRecordingState` recordingState): Notifies when there is a change in the recording state.
-- `onMeetingRecordingStopError(String error)`: Indicates an error occurred while stopping an active recording.
-- `onMeetingRecordingPauseError(String error)`: Indicates an error occurred while pausing an active recording.
-- `onMeetingRecordingResumeError(String error)`: Indicates an error occurred while resuming a paused recording.
-
-```dart
-
-class RecordingListener with DyteRecordingEventsListener {
-
- @override
- void onMeetingRecordingStarted() {
- /// Handle starting of recording
- }
-
- @override
- void onMeetingRecordingStateUpdated(DyteRecordingState recordingState) {
- /// Handle status update of recording
- }
-
- @override
- void onMeetingRecordingEnded() {
- /// Handle recording ended
- }
-
- @override
- void onMeetingRecordingStopError(String error) {
- /// Handle recording error
- }
-
-}
-
-```
-
-You can subscribe to this events by `addRecordingListener` method:
-
-```dart
-dyteClient.addRecordingListener(RecordingListener());
-```
-
-
- Flutter Core Recording
-
-
diff --git a/docs/flutter-core/release-notes.mdx b/docs/flutter-core/release-notes.mdx
deleted file mode 100644
index 69bdf461c8..0000000000
--- a/docs/flutter-core/release-notes.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-sidebar_class_name: releaseSidebarHeading
-tags:
- - mobile-core
- - releasenotes
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-
-
-
- Flutter Core Release Notes
-
diff --git a/docs/flutter-core/room-metadata.mdx b/docs/flutter-core/room-metadata.mdx
deleted file mode 100644
index 0eecfa4ad7..0000000000
--- a/docs/flutter-core/room-metadata.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Room Metadata
-description: >-
- Understand how to manage room metadata in Flutter. Follow Dyte's documentation
- for effective integration and management of room metadata.
-sidebar_position: 4
-tags:
- - flutter-core
- - room-metadata
----
-
-# Room Metadata
-
-All metadata related to a meeting is stored in `meeting.meta`. This includes:
-
-- `roomName`: The name of the room the current participant is connected to.
-- `roomType`: Indicates the meeting is a group-call, webinar or livestream.
-- `meetingTitle`: The title of the meeting.
-- `meetingStartedTimestamp`: The timestamp when the meeting started.
-
-For example, if you want to get the name of the room the current participant is
-connected to, you can do so by doing:
-
-```dart
-final roomName = meeting.meta.roomName;
-print("The local user has joined room ${roomName}.");
-```
-
-
- Flutter Core Room Metadata
-
-
diff --git a/docs/flutter-core/stage-management/_category_.json b/docs/flutter-core/stage-management/_category_.json
deleted file mode 100644
index 064be588fb..0000000000
--- a/docs/flutter-core/stage-management/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 7,
- "label": "Stage Management",
- "collapsible": true,
- "className": "pre-call-docs"
-}
diff --git a/docs/flutter-core/stage-management/host-controls.mdx b/docs/flutter-core/stage-management/host-controls.mdx
deleted file mode 100644
index 77e3118dcc..0000000000
--- a/docs/flutter-core/stage-management/host-controls.mdx
+++ /dev/null
@@ -1,115 +0,0 @@
----
-title: Stage Host Controls
-description: Stage management APIs for Host in Dyte meetings.
-sidebar_position: 2
-tags:
- - flutter-core
- - stage
----
-
-In a stage management-enabled meeting, a user with the `selfPermissions.host.canAcceptStageRequests` permission as `true` is
-considered a host. The `dyteMobileClient.stage` object in Dyte's Flutter Core SDK provides stage management APIs that allow hosts to
-manage stage access requests, invite participants to the stage, and remove participants from the stage.
-
-### List of Stage Access Requests
-
-You can retrieve the list of pending stage access requests by accessing the `dyteMobileClient.stage.accessRequests` property. This property
-provides a list of `DyteJoinedMeetingParticipant` objects who have requested stage access.
-
-:::note
-If the local user is not a host, this property returns an empty list.
-:::
-
-### Grant stage access
-
-A privileged user can grant access to stage for a set of users with `grantAccess` method.
-
-| **Parameters** | **Type** |
-| -------------- | ------------------------------ |
-| peer | _DyteJoinedMeetingParticipant_ |
-
-```dart
-dyteClient.stage.grantAccess(peer);
-```
-
-To grant access to all stage requests at a time, you can user `grantAccessToAll()` method. This method takes no parameters.
-
-```dart
-dyteClient.stage.grantAccessToAll();
-```
-
-### Deny stage access
-
-A privileged user can deny access to stage for a set of users with `denyAccess` method.
-
-| **Parameters** | **Type** |
-| -------------- | ------------------------------ |
-| peer | _DyteJoinedMeetingParticipant_ |
-
-```dart
-dyteClient.stage.denyAccess(peer);
-```
-
-To deny all stage requests at a time, you can user `denyAccessToAll()` method. This method takes no parameters.
-
-```dart
-dyteClient.stage.denyAccessToAll();
-```
-
-### Kick participant from stage
-
-A privileged user can kick a participant from stage with `kick` method.
-
-| **Parameters** | **Type** |
-| -------------- | ------------------------------ |
-| peer | _DyteJoinedMeetingParticipant_ |
-
-```dart
-dyteClient.stage.kick(peer);
-```
-
-### Listening to Stage Access Requests
-
-You can listen to incoming stage access requests or changes in the access requests list if you are a host. The SDK provides the
-following callbacks to `DyteStageEventsListener`:
-
-```dart
-class StageEventListener extends DyteStageEventsListener {
- @override
- void onPresentRequestAdded(DyteJoinedMeetingParticipant participant) {
- // Called when a participant requests to join the stage. Triggered only if the local user is a host.
- }
-
- @override
- void onPresentRequestClosed(DyteJoinedMeetingParticipant participant) {
- // Called when a participant with a pending stage access request leaves the meeting.
- // Triggered only if the local user is a host.
- }
-
- @override
- void onPresentRequestRejected(DyteJoinedMeetingParticipant participant) {
- // Called when a participant's stage access request is denied by the host.
- // Triggered only if the local user is a host.
- }
-
- @override
- void onPresentRequestWithdrawn(DyteJoinedMeetingParticipant participant) {
- // Called when a participant cancels their stage access request.
- // Triggered only if the local user is a host.
- }
-
- @override
- void onStageRequestsUpdated(List accessRequests) {
- // Called when the list of stage access requests is updated.
- }
-}
-```
-
-You need to attach the listener to meeting client as follows:
-
-```dart
-dyteClient.addStageEventsListener(StageEventsListener())
-```
-
-These APIs enable you to manage stage access requests and participants effectively in Dyte meetings. Next, we'll explore the
-Stage APIs available to Viewer participants.
diff --git a/docs/flutter-core/stage-management/introduction.mdx b/docs/flutter-core/stage-management/introduction.mdx
deleted file mode 100644
index 90ed3ded8c..0000000000
--- a/docs/flutter-core/stage-management/introduction.mdx
+++ /dev/null
@@ -1,140 +0,0 @@
----
-title: Introduction
-description: Stage management in Dyte meetings.
-sidebar_position: 1
-tags:
- - flutter-core
- - stage
----
-
-_Below documentation is relevant for Interactive Livestream(LHLS) and Webinar(WebRTC) use cases._
-
-Instead of a traditional publish-subscribe model, where a user can publish their media and others can choose to subscribe, Dyte
-comes with an optional managed configuration. In this managed configuration, a less privileged user can be configured with a
-default behavior to not publish media. The user can then request permission to publish their media, which a privileged user can
-choose to grant or deny.
-
-### Accessing the Stage APIs
-
-Dyte's stage management APIs allow users to perform actions such as joining and leaving the stage, managing stage requests and
-permissions, and kicking participants from the stage. These APIs are accessible through the `dyteMobileClient.stage` object.
-
-### Stage Status
-
-In meetings where stage management is enabled, a user's stage status can change within the values represented by the `DyteStageStatus`
-enum. These status values include:
-
-- `onStage`: Indicates that the user is currently on the stage and is allowed to publish media.
-- `offStage`: Indicates that the user is a viewer and is not on the stage. They can see and listen to those on stage.
-- `requestedToJoinStage`: Indicates that the user has a pending request to join the stage. This status is assigned to the user
- until the host accepts or rejects their request.
-- `acceptedToJoinStage`: Indicates that the host has accepted the user's request to join the stage.
-- `rejectedToJoinStage`: Indicates that the host has rejected the user's request to join the stage. The user can request again
- to join from this status.
-
-The `dyteMobileClient.stage.status` property provides the current stage status of the local user.
-
-### Viewers
-
-You can retrieve a list of off-stage participants (viewers) in a stage-enabled meeting by accessing the `meeting.stage.viewers`
-property. This property provides a list of `DyteJoinedMeetingParticipant` objects whose stage status is not `onStage`.
-
-### Joining the Stage
-
-To interact with peers and publish media, users can join the stage. This action is only possible if the user's preset allows them
-to publish media or if their request to join the stage has been accepted by a host (i.e., their stage status is `acceptedToJoinStage`).
-
-```dart
-dyteClient.stage.join();
-```
-
-### Leaving the Stage
-
-When users want to stop interacting with peers, they can leave the stage. This action stops their media from being published,
-and their audio and video are no longer received by others in the room.
-
-```dart
-dyteClient.stage.leave();
-```
-
-### List of Stage Events
-
-The `DyteStageEventListener` interface provides callback methods for various stage events. Implement these callbacks to handle
-stage-related events in your application:
-
-```dart
-class StageEventListener extends DyteStageEventsListener {
- @override
- void onAddedToStage() {
- // Called when the local user successfully joins the stage.
- }
-
- @override
- void onParticipantRemovedFromStage(
- DyteJoinedMeetingParticipant participant) {
- // Called when a participant is removed from the stage by the host.
- }
-
- @override
- void onPresentRequestAdded(DyteJoinedMeetingParticipant participant) {
- // Called when a participant requests to join the stage. Triggered only if the local user is a host.
- }
-
- @override
- void onPresentRequestClosed(DyteJoinedMeetingParticipant participant) {
- // Called when a participant with a pending stage access request leaves the meeting.
- // Triggered only if the local user is a host.
- }
-
- @override
- void onPresentRequestReceived() {
- // Called when the local user's stage access request is accepted by the host,
- // or when the local user, who is a viewer, is invited to the stage by the host.
- }
-
- @override
- void onPresentRequestRejected(DyteJoinedMeetingParticipant participant) {
- // Called when a participant's stage access request is denied by the host.
- // Triggered only if the local user is a host.
- }
-
- @override
- void onPresentRequestWithdrawn(DyteJoinedMeetingParticipant participant) {
- // Called when a participant cancels their stage access request.
- // Triggered only if the local user is a host.
- }
-
- @override
- void onRemovedFromStage() {
- // Called when the local user is removed from the stage.
- }
-
- @override
- void onStageRequestsUpdated(List accessRequests) {
- // Called when the list of stage access requests is updated.
- }
-
- @override
- void onStageStatusUpdated(DyteStageStatus stageStatus) {
- // Called when the local user's stage status is updated.
- }
-
- @override
- void onParticipantStartedPresenting(DyteJoinedMeetingParticipant participant) {
- // Called when a participant joins the stage.
- }
-
- @override
- void onParticipantStoppedPresenting(DyteJoinedMeetingParticipant participant) {
- // Called when a participant leaves the stage.
- }
-}
-```
-
-You need to attach the listener to meeting client as follows:
-
-```dart
-dyteClient.addStageEventsListener(StageEventsListener())
-```
-
-Next, we'll explore the Stage Management APIs for hosts, allowing them to manage stage requests, participants in Dyte meetings.
diff --git a/docs/flutter-core/stage-management/viewer-participants.mdx b/docs/flutter-core/stage-management/viewer-participants.mdx
deleted file mode 100644
index 387ed81e19..0000000000
--- a/docs/flutter-core/stage-management/viewer-participants.mdx
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Stage Access for Viewers
-description: Stage APIs for Viewers in Dyte meetings.
-sidebar_position: 3
-tags:
- - flutter-core
- - stage
----
-
-Viewer participants in a stage-enabled meeting are users whose preset permission for media production is set as `canRequest`.
-The `dyteMobileClient.stage` object provides APIs for viewer participants to request stage access and withdraw their join stage request.
-
-### Request access
-
-This method is used to create a new stage request which can be approved by the host.
-
-```dart
-dyteClient.stage.requestAccess();
-```
-
-When a host accepts the user's stage access request or allows the user directly to the stage, the SDK triggers the
-`onPresentRequestReceived` callback in `DyteStageEventListener`. You can listen to this event:
-
-```dart
-class StageEventListener with DyteStageEventsListener {
- @override
- void onPresentRequestReceived() {
- // Host accepted the join stage request or invited user directly to stage
- }
-}
-```
-
-### Withdraw join request
-
-To cancel or withdraw a pending stage access request, you can call the `withdrawJoinRequest()` method:
-
-```dart
-dyteClient.stage.withdrawJoinRequest();
-```
diff --git a/docs/flutter/Components/_category_.json b/docs/flutter/Components/_category_.json
deleted file mode 100644
index c3d1cb5125..0000000000
--- a/docs/flutter/Components/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 4,
- "label": "Components",
- "collapsible": true
-}
diff --git a/docs/flutter/Components/dyte-audio-indicator-icon-widget.mdx b/docs/flutter/Components/dyte-audio-indicator-icon-widget.mdx
deleted file mode 100644
index 8b778f5964..0000000000
--- a/docs/flutter/Components/dyte-audio-indicator-icon-widget.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
-# DyteAudioIndicatorIconWidget
-
-A widget that displays audio status of a participant in dyte meeting.
-
-:::info
-
-[`DyteProvider`](./dyte-provider.mdx) needs to be added above `DyteAudioIndicatorIconWidget` which will manage dyte client object for polls screen by itself.
-
-:::
-
-## Usage
-
-```dart
-DyteAudioIndicatorIconWidget(
- participant: participant
-);
-
-```
-
-Here, `participant` is dyte participant object of type `DyteJoinedMeetingParticipant` of whom you want to show audio status.
-
-## Screenshot
-
-| Audio Icon | Participant Screen |
-| ---------------------------------------------------------------------- | -------------------------------------------------------------------------- |
-| | |
diff --git a/docs/flutter/Components/dyte-chat-icon-widget.mdx b/docs/flutter/Components/dyte-chat-icon-widget.mdx
deleted file mode 100644
index 4537809dcd..0000000000
--- a/docs/flutter/Components/dyte-chat-icon-widget.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
-# DyteChatIconWidget
-
-A widget for displaying a chat icon in a Dyte-based Flutter application, enabling users to navigate to the chat page.. The icon triggers navigation to the `ChatsPage` upon being pressed and marks all messages as read.
-
-:::info
-
-[`DyteProvider`](./dyte-provider.mdx) needs to be added above `DyteChatIconWidget` which will manage dyte client object for polls screen by itself.
-
-:::
-
-## Usage
-
-Below is an example illustrating the integration of `DyteChatIconWidget` within a Flutter application:
-
-```dart
-DyteChatIconWidget()
-```
-
-## Details
-
-When the `DyteChatIconWidget` is tapped, it performs two primary actions:
-
-1. Marks all chat messages as read.
-2. Navigates the user to the `ChatsPage`.
-
-| Chat Icon | Chat Screen |
-| --------------------------------------------------------------------- | --------------------------------------------------------------- |
-| | |
diff --git a/docs/flutter/Components/dyte-join-button.mdx b/docs/flutter/Components/dyte-join-button.mdx
deleted file mode 100644
index 8f627e09f6..0000000000
--- a/docs/flutter/Components/dyte-join-button.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
-# DyteJoinButton
-
-A button widget specifically designed for joining a Dyte meeting room. This widget encapsulates functionality related to the meeting room joining process, providing visual feedback to the user based on the current state of the joining process.
-
-## Usage
-
-Here is a basic example of how to use the `DyteJoinButton` in your Flutter app:
-
-```dart
-DyteJoinButton(
- dyteMobileClient = yourDyteMobileClientInstance,
- onMeetingJoined = () {
- // Your code to execute after joining the meeting
- },
- height = 50.0,
- width = 200.0,
- isDisabled = false,
-)
-```
-
-## Properties
-
-- `dyteMobileClient`: (**Required**) An instance of `DyteMobileClient` to manage meeting room events.
-- `onMeetingJoined`: (Optional) A callback that gets called when the meeting room is successfully joined.
-- `dyteDesignToken`: (Optional) An instance of `DyteDesignTokens` for customizing the button's appearance according to the Dyte Design System.
-- `height`: (Optional) The height of the button. If not specified, it defaults to the height defined by the button style.
-- `width`: (Optional) The width of the button. If not specified, it defaults to the width defined by the button style.
-- `isDisabled`: (Optional) A boolean that disables the button when set to `true`. Default is `false`.
-
-## Screenshot
-
-
diff --git a/docs/flutter/Components/dyte-leave-button.mdx b/docs/flutter/Components/dyte-leave-button.mdx
deleted file mode 100644
index 9a8d67e7ca..0000000000
--- a/docs/flutter/Components/dyte-leave-button.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
-# DyteLeaveButton
-
-A specialized button widget for leaving a Dyte meeting. This widget is designed in accordance with the Dyte UI Kit and facilitates a seamless exit process from a meeting environment.
-
-## Usage
-
-Here is how you can use the `DyteLeaveButton` in your Flutter application:
-
-```dart
-DyteLeaveButton(
- dyteMobileClient: yourDyteMobileClientInstance,
- height: 50.0,
- width: 50.0,
-)
-```
-
-## Properties
-
-- `dyteMobileClient`: (**Required**) An instance of `DyteMobileClient` used to perform the leave meeting operation.
-- `designToken`: (Optional) An instance of `DyteDesignTokens` for customizing the appearance according to the Dyte Design System. If not specified, the widget will default to the global design tokens.
-- `height`: (Optional) The height of the button. If not specified, it defaults to a predefined size based on the design tokens.
-- `width`: (Optional) The width of the button. If not specified, it defaults to a predefined size based on the design tokens.
-
-## Features
-
-- **Customizable Size**: The size of the button can be adjusted using the `height` and `width` properties.
-- **Consistent Styling**: Adheres to the Dyte Design System for visual consistency across the Dyte UI Kit.
-- **Leave Dialog**: Upon pressing the button, a confirmation dialog is displayed to the user to prevent accidental meeting exits.
-
-## Screenshot
-
-
diff --git a/docs/flutter/Components/dyte-leave-meeting-dialog.mdx b/docs/flutter/Components/dyte-leave-meeting-dialog.mdx
deleted file mode 100644
index 4ad73b18ad..0000000000
--- a/docs/flutter/Components/dyte-leave-meeting-dialog.mdx
+++ /dev/null
@@ -1,39 +0,0 @@
-# DyteLeaveMeetingDialog
-
-A dialog widget designed for confirming the action of leaving a Dyte meeting. This widget is part of the Dyte UI Kit and is intended to provide a clear and concise user interface for confirming the exit process from a meeting environment.
-
-## Usage
-
-Here is how you can use the `DyteLeaveMeetingDialog` in your Flutter application:
-
-```dart
-DyteLeaveMeetingDialog(
- dyteMobileClient: yourDyteMobileClientInstance,
-)
-```
-
-## Properties
-
-- `dyteMobileClient`: (**Required**) An instance of `DyteMobileClient` used to perform actions like leaving the meeting room or ending the meeting for all participants.
-- `designToken`: (Optional) An instance of `DyteDesignTokens` for customizing the appearance according to the Dyte Design System. If not specified, the widget will default to the global design tokens.
-
-## Design Token
-
-The `DyteLeaveMeetingDialog` utilizes `DyteDesignTokens` for theming:
-
-- `borderRadius`: The border radius of the dialog box, which defaults to a value defined in the design tokens.
-- `fillColor`: The background color of the dialog, typically set to provide a neutral or alerting backdrop for the content.
-- `textColor`: The color of the text within the dialog, ensuring it is readable against the `fillColor`.
-
-## Features
-
-- **Confirmation Prompt**: Provides a clear prompt asking the user if they are sure they want to leave the meeting.
-- **Action Buttons**: Includes "Cancel" and "Leave" buttons, allowing the user to either cancel the action or confirm their intent to leave the meeting.
-- **Host Controls**: If the user has host permissions, an additional button "End meeting for all" is displayed, providing the option to end the meeting for all participants.
-
-## Screenshot
-
-
diff --git a/docs/flutter/Components/dyte-meeting-title.mdx b/docs/flutter/Components/dyte-meeting-title.mdx
deleted file mode 100644
index c861b16528..0000000000
--- a/docs/flutter/Components/dyte-meeting-title.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
-# DyteMeetingTitle
-
-A simple, customizable widget designed to display the title of a Dyte meeting. This widget is part of the Dyte UI Kit and integrates seamlessly with Dyte's design system and meeting services.
-
-## Usage
-
-Below is a basic example of how to use the `DyteMeetingTitle` widget in your Flutter app:
-
-```dart
-DyteMeetingTitle(
- dyteMobileClient: yourDyteMobileClientInstance,
-)
-```
-
-## Properties
-
-- `dyteMobileClient`: (**Required**) An instance of `DyteMobileClient`. This is used to fetch and display the current meeting's title.
-- `designToken`: (Optional) An instance of `DyteDesignTokens` for customizing the appearance according to the Dyte Design System. If not specified, the widget will use the global design tokens.
-
-## Screenshot
-
-
diff --git a/docs/flutter/Components/dyte-name-tag-widget.mdx b/docs/flutter/Components/dyte-name-tag-widget.mdx
deleted file mode 100644
index da3300a1fa..0000000000
--- a/docs/flutter/Components/dyte-name-tag-widget.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
-# DyteNameTag
-
-A widget with name tag of the participant in participant tile.
-
-## Usage
-
-```dart
-DyteNameTag(
- size: size, // type: double, size of the name tag
- color: widget.textColor, // color: Color, color of the name tag
- participant: widget.participant, // type: DyteMeetingParticipant
-);
-```
-
-## Screenshot
-
-| Name Tag Widget | Meeting Screen |
-| ------------------------------------------------------------- | -------------------------------------------------------------------- |
-| | |
diff --git a/docs/flutter/Components/dyte-participant-tile.mdx b/docs/flutter/Components/dyte-participant-tile.mdx
deleted file mode 100644
index 8d184ff021..0000000000
--- a/docs/flutter/Components/dyte-participant-tile.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
-# DyteParticipantTile
-
-A comprehensive widget designed to display a participant's video or avatar within a Dyte meeting environment. This widget is part of the Dyte UI Kit and is optimized for showing participant information, including live video feed, name, and audio status.
-
-:::info
-
-[`DyteProvider`](./dyte-provider.mdx) needs to be added above `DyteParticipantTile` which will manage dyte client object for polls screen by itself.
-
-:::
-
-## Usage
-
-Below is an example of how to use the `DyteParticipantTile` in your Flutter application:
-
-```dart
-DyteParticipantTile(
- participant,
- designToken: yourDesignToken,
- height: 240,
- width: 180,
-)
-```
-
-## Properties
-
-- `participant`: (**Required**) An instance of `DyteMeetingParticipant`. This represents the participant whose information and video are to be displayed.
-- `designToken`: (Optional) An instance of `DyteDesignTokens` for customizing the appearance according to the Dyte Design System. If not specified, the widget will use the global design tokens.
-- `height`: (Optional) The height of the tile. Default is `240`.
-- `width`: (Optional) The width of the tile. Default is `180`.
-
-## Features
-
-- **Video or Avatar Display**: Automatically displays the participant's video feed if available; otherwise, shows the participant's avatar.
-- **Dynamic Resizing**: Adapts size based on the constraints provided by the parent widget.
-- **Pinned Status**: Indicates if the participant is pinned in the meeting.
-- **Audio Status**: Shows an icon indicating whether the participant's audio is on or off.
-- **Name Tag**: Displays the participant's name and, if applicable, indicates if they are the local user with a "You" tag.
-
-## Screenshot
-
-
diff --git a/docs/flutter/Components/dyte-participants-icon-widget.mdx b/docs/flutter/Components/dyte-participants-icon-widget.mdx
deleted file mode 100644
index 11758b16ec..0000000000
--- a/docs/flutter/Components/dyte-participants-icon-widget.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
-# DyteParticipantsIconWidget
-
-This widget is designed to integrate a participants icon within a Dyte-based Flutter application. It facilitates navigation to the `DyteParticipantPage` when pressed, serving as a user interface element for accessing the participants list of a Dyte session.
-
-:::info
-
-[`DyteProvider`](./dyte-provider.mdx) needs to be added above `DyteParticipantsIconWidget` which will manage dyte client object for polls screen by itself.
-
-:::
-
-## Usage
-
-To use the `DyteParticipantsIconWidget` in a Flutter application, instantiate it directly in your widget tree:
-
-```dart
-DyteParticipantsIconWidget()
-```
-
-## Details
-
-Upon interacting with the widget, the following actions occur:
-
-- The application navigates to the `DyteParticipantPage`, which displays the list of participants in the current session.
-
-| Participant Icon | Participant Screen |
-| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
-| | |
diff --git a/docs/flutter/Components/dyte-plugins-screen.mdx b/docs/flutter/Components/dyte-plugins-screen.mdx
deleted file mode 100644
index 163b556156..0000000000
--- a/docs/flutter/Components/dyte-plugins-screen.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-# DytePluginsScreen
-
-A widget that provides a well-built plugins screen using molecular components. This widget integrates with the Dyte UI Kit and return our plugins page as a widget.
-
-:::info
-
-[`DyteProvider`](./dyte-provider.mdx) needs to be added above `DytePluginsScreen` which will manage dyte client object for polls screen by itself.
-
-:::
-
-## Usage
-
-```dart
-DytePluginsScreen()
-```
diff --git a/docs/flutter/Components/dyte-polls-screen.mdx b/docs/flutter/Components/dyte-polls-screen.mdx
deleted file mode 100644
index 5c43754d15..0000000000
--- a/docs/flutter/Components/dyte-polls-screen.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-# DytePollsScreen
-
-A widget that provides a well-built polls screen using molecular components. This widget integrates with the Dyte UI Kit and return our polls page as a widget.
-
-:::info
-
-[`DyteProvider`](./dyte-provider.mdx) needs to be added above `DytePollsScreen` which will manage dyte client object for polls screen by itself.
-
-:::
-
-## Usage
-
-```dart
-DytePollsScreen();
-```
diff --git a/docs/flutter/Components/dyte-provider.mdx b/docs/flutter/Components/dyte-provider.mdx
deleted file mode 100644
index 612b4666be..0000000000
--- a/docs/flutter/Components/dyte-provider.mdx
+++ /dev/null
@@ -1,57 +0,0 @@
-# DyteProvider
-
-A foundational widget designed to initialize and provide the necessary Dyte environment for a Flutter application. The `DyteProvider` acts as a context wrapper that sets up design tokens, client configurations, and UI Kit information required for Dyte components. It ensures that Dyte functionalities are available and properly initialized throughout the widget tree where it's used.
-
-## Usage
-
-To use `DyteProvider`, wrap the root of your application:
-
-```dart
-DyteProvider(
- client: dyteMobileClientInstance,
- uiKitInfo: dyteUIKitInfoInstance,
- child: MaterialApp(
- // Your app's home screen or an entry widget
- home: YourAppHome(),
- ),
-)
-```
-
-if you don't want to wrap the root of your app inside `DyteProvider`, you can also wrap a specific part of your app where you want to use Dyte components but after adding `DyteProvider` you need a `MaterialApp` widget under it.
-
-This approach ensures that all the necessary Dyte setup is done before your app UI starts, allowing you to utilize Dyte features seamlessly within your application.
-
-## Properties
-
-- `child`: (**Required**) The widget below this widget in the tree. This is usually your MaterialApp or your application's home widget.
-- `client`: (**Required**) An instance of `DyteMobileClient`. This represents the Dyte client configuration that includes authentication and other essential settings.
-- `uiKitInfo`: (**Required**) An instance of `DyteUIKitInfo`. This holds information related to the Dyte UI Kit such as design tokens and other UI configurations.
-
-## Notes
-
-Ensure that the `DyteMobileClient` and `DyteUIKitInfo` are properly configured before passing them to the `DyteProvider`. This is crucial for the proper functioning of all Dyte-related components within your application.
-
-## Example
-
-Here is an example of using `DyteProvider` in an application:
-
-```dart
-class MyApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return DyteProvider(
- client: DyteMobileClient(
- // Dyte client configuration
- ),
- uiKitInfo: DyteUIKitInfo(
- // UI Kit information and design tokens
- ),
- child: MaterialApp(
- home: HomeScreen(),
- ),
- );
- }
-}
-```
-
-By wrapping your app with `DyteProvider`, you ensure that all necessary Dyte setups are initialized and available for your app components, allowing you to build a fully functional Dyte-enabled application.
diff --git a/docs/flutter/Components/dyte-self-audio-toggle.mdx b/docs/flutter/Components/dyte-self-audio-toggle.mdx
deleted file mode 100644
index 3c803f7aec..0000000000
--- a/docs/flutter/Components/dyte-self-audio-toggle.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
-# DyteSelfAudioToggleButton
-
-A toggle button widget designed for controlling the audio state in the Dyte video conference environment. This widget integrates with the Dyte UI Kit and allows users to enable or disable their microphone audio during a meeting.
-
-## Usage
-
-Here is a basic example of how to use the `DyteSelfAudioToggleButton` in your Flutter app:
-
-```dart
-DyteSelfAudioToggleButton(
- dyteMobileClient: yourDyteMobileClientInstance,
- onAudioToggle: () {
- // Your code to handle toggle
- },
- iconSize: 24.0,
- iconColor: Colors.blue,
- showLabel: true,
-)
-```
-
-## Properties
-
-- `dyteMobileClient`: (**Required**) An instance of `DyteMobileClient` to manage the audio state and events.
-- `onAudioToggle`: (Optional) A callback that gets called when the audio toggle button is pressed.
-- `iconSize`: (Optional) Size of the icon inside the toggle button. If not specified, the default size is used.
-- `iconColor`: (Optional) Color of the icon inside the toggle button. If not specified, the default color from the design tokens is used.
-- `showLabel`: (Optional) Boolean to show or hide the label next to the icon. Default is `false`.
-
-## Design Token
-
-The widget uses `DyteDesignTokens` for theming, which allows for customization according to the Dyte Design System. The `designToken` can be passed as a parameter or will default to the global design token.
-
-## Screenshot
-
-
diff --git a/docs/flutter/Components/dyte-self-video-toggle.mdx b/docs/flutter/Components/dyte-self-video-toggle.mdx
deleted file mode 100644
index 1f0b7b53d0..0000000000
--- a/docs/flutter/Components/dyte-self-video-toggle.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
-# DyteSelfVideoToggleButton
-
-A custom Flutter widget designed for toggling video state in a Dyte video conference environment. This widget is part of the Dyte UI Kit and allows users to enable or disable their video during a meeting.
-
-## Usage
-
-Below is an example of how to integrate the `DyteSelfVideoToggleButton` into your Flutter app:
-
-```dart
-DyteSelfVideoToggleButton(
- dyteMobileClient: yourDyteMobileClientInstance,
- onVideoToggle: () {
- // Code to execute after video toggle
- },
- iconSize: 24.0,
- iconColor: Colors.red,
- showLabel: true,
-)
-```
-
-## Properties
-
-- `dyteMobileClient`: (**Required**) An instance of `DyteMobileClient` to manage video state and events.
-- `onVideoToggle`: (Optional) A callback that is called when the video toggle button is pressed.
-- `iconSize`: (Optional) Size of the icon inside the toggle button. If not specified, a default size is used.
-- `iconColor`: (Optional) Color of the icon inside the toggle button. If not specified, the default color from the design tokens is used.
-- `showLabel`: (Optional) A boolean to show or hide the label next to the icon. Default is `false`.
-- `dyteDesignToken`: (Optional) An instance of `DyteDesignTokens` for customizing the appearance according to the Dyte Design System.
-
-## Design Token
-
-The widget utilizes `DyteDesignTokens` for theming, which allows customization following the Dyte Design System. The `designTokens` can either be passed as a parameter or will default to the global design tokens.
-
-## Screenshot
-
-
diff --git a/docs/flutter/Components/dyte-setup-screen-component.mdx b/docs/flutter/Components/dyte-setup-screen-component.mdx
deleted file mode 100644
index 1ce0a8198f..0000000000
--- a/docs/flutter/Components/dyte-setup-screen-component.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
-# DyteSetupScreen
-
-A widget that provides a well-built setup screen using our exportable components itself. This widget integrates with the Dyte UI Kit and gives our setup page as a widget.
-
-:::info
-
-[`DyteProvider`](./dyte-provider.mdx) needs to be added above `DyteSetupScreen` which will manage dyte client object for polls screen by itself.
-
-:::
-
-## Usage
-
-Here is a basic example of how to use the `DyteSetupScreen` in your Flutter app:
-
-```dart
-DyteSetupScreen(
- selectedAudioDevice,
- selectedVideoDevice,
-);
-```
-
-Here, `selectedAudioDevice` and `selectedVideoDevice` can be fetched using `dyteClient.getSelectedAudioDevice()` & `dyteClient.getSelectedVideoDevice()` respectively.
-
-## Screenshot
-
-
diff --git a/docs/flutter/design-token.mdx b/docs/flutter/design-token.mdx
deleted file mode 100644
index e393f2abe0..0000000000
--- a/docs/flutter/design-token.mdx
+++ /dev/null
@@ -1,144 +0,0 @@
----
-title: Design System
-description: >-
- Explore design token integration in Flutter with Dyte's documentation. Follow
- our guide for effective design token implementation in your app.
-sidebar_position: 3
-tags:
- - Flutter UI Kit
- - Design System
----
-
-# Design System
-
-A design system is a collection of reusable components, defined by clear standards, that can be assembled together to build any number of applications.
-
-Dyte's UI kit uses the Atomic design principle, which logically organizes screens for various devices, making it a versatile system. Design tokens are used in Dyte's UI Kit to maintain a consistent look across platforms. By combining design tokens and Atomic design principles, Dyte ensures a smooth and adaptable user interface experience on different platforms.
-
-## Design Tokens
-
-Design tokens are the single source of truth to name and store design decisions.They are values that help keep the design consistent and flexible. These values include things like font styles, spacing, colors, borders, and more, allowing you to easily customize the overall look and feel of a system.
-
-In the Flutter UI kit, design tokens are shared and managed using `themes`. Themes in Flutter use the `ThemeData` class to store and propagate design properties, such as colors, fonts, and more, throughout the widget tree.
-
-Let's understand how you can customize your UI with Dyte's Flutter UI Kit using design tokens.
-
-### Customize themes with design tokens
-
-Dyte offers the `DyteDesignToken` class to customize the theme of the UI kit. Pass the `DyteDesignToken` object within the `DyteUIKitInfo` object to customize the theme.
-
-With `DyteDesignToken`, you can customize the following design properties:
-
-- `backgroundColor`:The background color of the UI Kit.
-- `textOnBackground`: The text color on the background of the UI Kit.
-- `backgroundColorSwatch`: The background color swatch of the UI Kit.
-- `brandColor`: The primary color of the UI Kit.
-- `textOnBrand`: The text color on the brand color of the UI Kit.
-- `brandColorSwatch`: The brand color swatch of the UI Kit.
-- `danger`: The danger color of the UI Kit.
-- `success`: The success color of the UI Kit.
-- `warning`: The warning color of the UI Kit.
-
-You have two options to customize the UI Kit's theme:
-
-#### Pass a single color.
-
-You can pass a single color to the `backgroundColor`, `brandColor` parameters. Or you can use a combination of `backgroundColorSwatch` and `brandColor` to customize the theme.
-
-#### Use a color swatch.
-
-For the brand color swatch, make sure it contains 5 entries with keys 300, 400, 500, 600, and 700.
-For the background color swatch, provide 5 entries with keys 600, 700, 800, 900, and 1000.
-
-To achieve this, utilize the `DyteColorSwatch` class with two parameters: the default color key and a map of colors.
-
-```dart
-final primarySwatch = DyteColorSwatch(
- 500,
- {
- 300: Colors.blue.shade300,
- 400: Colors.blue.shade400,
- 500: Colors.blue.shade500,
- 600: Colors.blue.shade600,
- 700: Colors.blue.shade700,
- },
- );
-```
-
-### Customize borders with configuration
-
-To customize the border radius and border width of the UI Kit, you can use the `DyteBorderRadius` and `DyteBorderWidth` enum values in the design token.
-
-Here are the available `DyteBorderRadius` values:
-
-| Token Name | values |
-| ------------------ | ---------------------------------------------- |
-| `DyteBorderRadius` | `sharp`, `rounded`, `extraRounded`, `circular` |
-
-Here are the available `DyteBorderWidth` values:
-
-| Token Name | values |
-| ----------------- | --------------------- |
-| `DyteBorderWidth` | `none`, `thin`, `fat` |
-
-## Example
-
-Here's an example of how you can customize the Flutter UI Kit using the design token:
-
-```dart
-final uikitInfo = DyteUIKitInfo(meetingInfo,
- designToken: DyteDesignToken(
- colorToken: DyteColorToken(
- borderRadius: DyteBorderRadius.circular,
- borderWidth: DyteBorderWidth.fat,
- backgroundColor: Colors.black,
- textOnBrand: Colors.white,
- textOnBackground: Colors.white,
- danger: Colors.red,
- success: Colors.green,
- warning: Colors.yellow,
- brandColorSwatch: DyteColorSwatch(
- 500,
- {
- 300: Colors.blue.shade300,
- 400: Colors.blue.shade400,
- 500: Colors.blue.shade500,
- 600: Colors.blue.shade600,
- 700: Colors.blue.shade700,
- },
- )),
- ));
-```
-
-
- {[
- '/static/mobile/0.x.x/flutter-setup-ct.png',
- '/static/mobile/0.x.x/flutter-vc-ct.png',
- '/static/mobile/0.x.x/flutter-host-actions-ct.png',
- '/static/mobile/0.x.x/flutter-poll-ct.png',
- '/static/mobile/0.x.x/flutter-participants-list-ct.png',
- ].map((i) => (
-
- ))}
-
-
-
- Flutter Design System
-
-
diff --git a/docs/flutter/introduction.mdx b/docs/flutter/introduction.mdx
deleted file mode 100644
index 0d539344ee..0000000000
--- a/docs/flutter/introduction.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Introduction
-description: Beginner's guide to Dyte's Flutter UI Kit.
-sidebar_position: 1
-slug: /
----
-
-# Introduction
-
-Dyte's Flutter UI Kit is a prebuilt design library of UI components that makes it easy to integrate video and voice calls into any Flutter app within minutes.
-
-## Usage
-
-The UI Kit under the hood works on top of the same Core SDK that is publicly available. Core SDK handles all the low-level media and network handling parts
-of a meeting and exposes methods and properties that the UI Kit uses
-
-Uses a layered design structure, allowing you to start with one prebuilt component and slowly go down layers and add custom UI incrementally as your needs evolve.
-
-- **Use prebuilt component**: You can use prebuilt component to
- create your meeting quickly. With this component, you don't have to handle all
- the states, dialogs, and other aspects of managing the application. The UI kit
- also respect your permissions and theming configuration from the preset.
-
- For more information, see [UI Kit Quickstart](/flutter/quickstart).
-
-- **Mix and match**: Use some components from our component library, build some custom components yourself.
-
-## Supported Versions
-
-Here are the version requirements:
-
-- Android SDK version: 23+
-- iOS deployment version: 13.0+
-
-## Setup
-
-In iOS, for downloading attachments in chat, add the following permissions in your app's Info.plist:
-
-```
-LSSupportsOpeningDocumentsInPlace
-
-UIFileSharingEnabled
-
-```
-
-
- Flutter Introduction
-
-
diff --git a/docs/flutter/meeting-locale.mdx b/docs/flutter/meeting-locale.mdx
deleted file mode 100644
index 0d30515035..0000000000
--- a/docs/flutter/meeting-locale.mdx
+++ /dev/null
@@ -1,118 +0,0 @@
----
-title: Custom Meeting Locale
-description: Beginner's guide to Dyte's Flutter UI Kit.
-sidebar_position: 4
----
-
-Dyte's Flutter UI Kit allows you to customize the locale of the whole UI Kit. This means you can change the language of the UI Kit to any language you want. You can do this by providing an arb path to the `DyteUIKitBuilder` object. Follow the following steps to achieve the same:
-
-1. Create an Application Resource Bundle (_.arb_) file and place it in your project's assets folder. The arb file should contain the translations for the UI Kit in the desired language. For example, if you want to change the language to French, you can create a file `fr.arb` and place it in you `/assets/` folder.
-
-:::info
-To know more about ARB files in Flutter, head [here](https://localizely.com/flutter-arb/).
-:::
-
-2. Pass the path of the arb file to the `DyteUIKitBuilder.build()` method. The arb file should be passed as a string. For example, if you have placed the arb file in the assets folder, you can pass the path as `assets/fr.arb` as a second argument as follows:
-
-```dart
-/// assuming Step 1 is completed:
-
-import 'package:dyte_uikit/dyte_uikit.dart';
-
-// Declare and assign a DyteMeetingInfo object.
-final DyteMeetingInfo meetingInfo = DyteMeetingInfoV2(authToken: );
-
-// Build the DyteUiKit object with the meetingInfo and the arb file path.
-final DyteUiKit uikit= DyteUIKitBuilder.build(meetingInfo, 'assets/fr.arb');
-
-// Push the uikit widget to the navigator to launch the UI Kit.
-Navigator.push(context, MaterialPageRoute(builder: (context) => uikit),);
-```
-
-You can have the following `keys` in the arb file:
-
-| `key` | `value` |
-| ----------------------------------------------------------------- | -------------------- |
-| ------------- **_Newer strings introduced in v0.7.9_** ---------- | -------------------- |
-| "endMeetingForAll" | "_\_" |
-| "message" | "_\_" |
-| "newPollCreated" | "_\_" |
-| "waitingToGoLive" | "_\_" |
-| "frontCamera" | "_\_" |
-| "rearCamera" | "_\_" |
-| "externalCamera" | "_\_" |
-| "headset" | "_\_" |
-| "speaker" | "_\_" |
-| "bluetooth" | "_\_" |
-| "earpiece" | "_\_" |
-| ----------------------------------------------------------- | -------------------- |
-| "join" | "_\_" |
-| "joinInAs" | "_\_" |
-| "enterYourName" | "_\_" |
-| "micOn" | "_\_" |
-| "micOff" | "_\_" |
-| "leave" | "_\_" |
-| "cancel" | "_\_" |
-| "areYouSureYouWantToLeaveTheCall" | "_\_" |
-| "more" | "_\_" |
-| "selectAudioDevice" | "_\_" |
-| "selectVideoDevice" | "_\_" |
-| "videoOn" | "_\_" |
-| "videoOff" | "_\_" |
-| "mute" | "_\_" |
-| "unmute" | "_\_" |
-| "unpin" | "_\_" |
-| "pin" | "_\_" |
-| "kick" | "_\_" |
-| "removeFromStage" | "_\_" |
-| "screenShare" | "_\_" |
-| "plugins" | "_\_" |
-| "createPoll" | "_\_" |
-| "question" | "_\_" |
-| "askAQuestion" | "_\_" |
-| "options" | "_\_" |
-| "enterAnOption" | "_\_" |
-| "addOption" | "_\_" |
-| "anonymous" | "_\_" |
-| "hideResultsBeforeVoting" | "_\_" |
-| "questionAndOptionsCantBeEmpty" | "_\_" |
-| "polls" | "_\_" |
-| "pollBy" | "_\_" |
-| "vote" | "_\_" |
-| "voted" | "_\_" |
-| "viewVoters" | "_\_" |
-| "stopRecording" | "_\_" |
-| "startRecording" | "_\_" |
-| "muteAll" | "_\_" |
-| "disableAllVideos" | "_\_" |
-| "settings" | "_\_" |
-| "rec" | "_\_" |
-| "camera" | "_\_" |
-| "microphoneInput" | "_\_" |
-| "chat" | "_\_" |
-| "noMessages" | "_\_" |
-| "chatMessagesWillAppearHere" | "_\_" |
-| "file" | "_\_" |
-| "image" | "_\_" |
-| "send" | "_\_" |
-| "participants" | "_\_" |
-| "waitlisted" | "_\_" |
-| "inCall" | "_\_" |
-| "you" | "_\_" |
-| "turnOffVideo" | "_\_" |
-| "videoAlreadyOff" | "_\_" |
-| "dyte" | "_\_" |
-| "back" | "_\_" |
-| "waitingForTheHostToLetYouIn" | "_\_" |
-| "shareScreen" | "_\_" |
-| "stopSharing" | "_\_" |
-
-3. All set, run the app and view the UI Kit in the desired language!
-
-
- Flutter Custom Locale
-
-
diff --git a/docs/flutter/quickstart.mdx b/docs/flutter/quickstart.mdx
deleted file mode 100644
index a8717e08de..0000000000
--- a/docs/flutter/quickstart.mdx
+++ /dev/null
@@ -1,240 +0,0 @@
----
-title: Quickstart
-description: Quickstart guide for Dyte's Flutter UI Kit.
-sidebar_position: 2
----
-
-# Quickstart
-
-This quickstart shows how to use Dyte's Flutter UI Kit SDK to add live video and
-audio to your Flutter applications.
-
-For getting started quickly, you can use our sample code. You can clone and run
-a sample application from the
-[Flutter UI Kit Sample App GitHub repository](https://github.com/dyte-io/flutter-samples/tree/main/flutter_uikit).
-
-## Objective
-
-You’ll learn how to:
-
-- Install the Dyte SDK
-- Configuring Android & iOS permissions
-- Initialize the SDK
-- Configure a Dyte meeting
-- Launch the meeting UI
-
-## Before Getting Started
-
-Make sure you've read the
-[Getting Started with Dyte](https://docs.dyte.io/getting-started) topic and
-completed the steps in the
-[Integrate Dyte](https://docs.dyte.io/getting-started#integrate-dyte) section.
-You must complete the following steps:
-
-- Create a [Dyte Developer Account](https://dev.dyte.io/)
-- Create [Presets](https://dev.dyte.io/roles-presets)
-- Create a
- [Dyte Meeting](https://docs.dyte.io/api/?v=v2#/operations/create_meeting)
-- [Add Participant](https://docs.dyte.io/api/?v=v2#/operations/add_participant)
- to the meeting
-
-## Step 1: Install the SDK
-
-Install the SDK from [pub.dev](https://pub.dev).
-
-```shell
-
-flutter pub add dyte_uikit
-
-```
-
-## Step 2: Configure permissions for Android and iOS
-
-Perform the following steps:
-
-### Android
-
-Set `compileSdkVersion 33` and `minSdkVersion 21` inside `build.gradle` file at the `/android/app/build.gradle` file.
-
-```kotlin
- defaultConfig {
- ...
-
- compileSdkVersion 33
- minSdkVersion 21
-
- ...
- }
-```
-
-And change the kotlin version to `1.9.0`
-
-```kotlin
- ext.kotlin_version = '1.9.0'
-```
-
-### iOS
-
-1. Set minimum deployment target for your Flutter app to 13.0 or higher.
-
-```
-platform :ios, '13.0'
-```
-
-2. Add the following keys to your `Info.plist` file, located in `/ios/Runner/Info.plist` :
-
-```
-/* Attach the permission to use camera & microphone. */
-NSBluetoothPeripheralUsageDescription
-We will use your Bluetooth to access your Bluetooth headphones.
-
-NSBluetoothAlwaysUsageDescription
-We will use your Bluetooth to access your Bluetooth headphones.
-
-NSCameraUsageDescription
-For people to see you during meetings, we need access to your camera.
-
-NSMicrophoneUsageDescription
-For people to hear you during meetings, we need access to your microphone.
-
-NSPhotoLibraryUsageDescription
-For people to share, we need access to your photos.
-
-
-UIBackgroundModes
-
- audio
- voip
- fetch
- remote-notification
-
-```
-
-3. In iOS, if you are allowing user to download attachments in chat, add the following permissions in your app's Info.plist:
-
-```
-LSSupportsOpeningDocumentsInPlace
-
-UIFileSharingEnabled
-
-```
-
-## Step 3: Configure a Dyte meeting
-
-To initiate Dyte Meeting for any participant you just need to pass `authToken` as an argument. You can get the `authToken` via the [Add Participant API](https://docs.dyte.io/api?v=v2#/operations/add_participant).
-
-After getting the `authToken`, you need to create the `DyteMeetingInfoV2` object as follows:
-
-| Name | Description |
-| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api?v=v2#/operations/add_participant) (The presetName created earlier must be passed in the body of the Add Participant API request) The API response contains the `authToken`. |
-| `baseUrl` | The base URL of the Dyte server. Default value is `https://api.dyte.io/v2`. This is an optional argument. |
-| `enableAudio` | A boolean value to enable or disable audio in the meeting. Default value is `true`. This is an optional argument. |
-| `enableVideo` | A boolean value to enable or disable video in the meeting. Default value is `true`. This is an optional argument. |
-
-```dart
-final meetingInfo = DyteMeetingInfoV2(
- authToken: '',
- baseUrl: 'https://api.dyte.io/v2', // optional argument, if you want to pass your own baseUrl
- enableAudio: false, // optional argument, to enable or disable audio in the meeting
- enableVideo: false, // optional argument, to enable or disable video in the meeting
- );
-```
-
-## Step 4: Initialize the SDK
-
-The `DyteUIKit` is the main class of the SDK. It is the entry point and the only
-class required to initialize Dyte UI Kit SDK. To initialize it we have to pass `DyteUIKitInfo` object as an argument.
-
-```dart
-
-/* Passing the DyteMeetingInfoV2 object `meetingInfo` you created in the Step 3,
-*/
-
-final uikitInfo = DyteUIKitInfo(
- meetingInfo,
- // Optional: Pass the DyteDesignTokens object to customize the UI
- designToken: DyteDesignTokens(
- colorToken: DyteColorToken(
- brandColor: Colors.purple,
- backgroundColor: Colors.black,
- textOnBackground: Colors.white,
- textOnBrand: Colors.white,
- ),
- ),
- );
-
-final uiKit = DyteUIKitBuilder.build(uiKitInfo: uikitInfo,
- skipSetupScreen: true, // optional argument, to skip the setup screen, defaults to false
-);
-
-```
-
-:::info Note
-
-Note: To skip the setup screen, you need to pass the `skipSetupScreen` argument as `true` in the `DyteUIKitBuilder.build` method.
-
-:::
-
-You can learn more about customization of the uikit in the [Design System](/flutter/design-token) section.
-
-## Step 5: Launch the meeting UI
-
-To launch the meeting you can simply use the object returned after calling `build` method. The `uikit` above is a widget itself.
-You can push this widget as a page to start the flow of prebuilt Flutter UI Kit.
-
-```dart
-import 'package:dyte_uikit/dyte_uikit.dart';
-import 'package:flutter/material.dart';
-
-class DyteMeetingPage extends StatelessWidget {
- const DyteMeetingPage({super.key});
-
- @override
- Widget build(BuildContext context) {
- ...
- // Push this widget as page in your app
- // Earlier it was uikit.loadUI() which is now deprecated,just use uikit.
- return uiKit;
- }
-}
-
-```
-
-Voila! You're all done. Here is the pictorial representation of all the configuration options passed.
-
-
- {[
- '/static/mobile/0.x.x/flutter-setup-page.png',
- '/static/mobile/0.x.x/flutter-video-call.png',
- '/static/mobile/0.x.x/flutter-participant-list.png',
- '/static/mobile/0.x.x/flutter-advanced-features.png',
- '/static/mobile/0.x.x/flutter-chat.png',
- ].map((i) => (
-
- ))}
-
-
-
- Flutter Quickstart
-
-
diff --git a/docs/flutter/release-notes.mdx b/docs/flutter/release-notes.mdx
deleted file mode 100644
index 8e0d78d875..0000000000
--- a/docs/flutter/release-notes.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-sidebar_class_name: releaseSidebarHeading
-tags:
- - releasenotes
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-
-
-
- Flutter Release Notes
-
diff --git a/docs/guides/authentication.md b/docs/guides/authentication.md
new file mode 100644
index 0000000000..ddd0131456
--- /dev/null
+++ b/docs/guides/authentication.md
@@ -0,0 +1,52 @@
+---
+title: Authentication
+sidebar_position: 3
+---
+
+# Authentication
+
+The API has exactly one way to authenticate a request — a single `Authorization: Bearer ` header — but two kinds of token behind it.
+
+## JWTs, for people
+
+`POST /auth/register` and `POST /auth/login` both return a token pair:
+
+```json
+{
+ "accessToken": "eyJhbGciOiJIUzI1NiIs...",
+ "refreshToken": "d1b2c3...",
+ "expiresIn": 900
+}
+```
+
+- The **access token** goes in `Authorization: Bearer ` and is short-lived — 15 minutes or less.
+- The **refresh token** goes to `POST /auth/refresh` to get a new access token, without asking the user to log in again.
+
+Each refresh token backs a `Session` row (device/IP metadata, absolute 7-day expiry). `GET /auth/sessions` lists them; `DELETE /auth/sessions/:id` or `POST /auth/logout-all` revokes them. Revocation blocks *future* refreshes immediately, but an access token already in flight keeps working until its own natural expiry — plan for a ≤15 minute window between "I revoked this session" and "every request using it actually fails."
+
+## API keys, for machines
+
+For a server-to-server integration (an ERP sync, a scheduled import), don't share a human's JWT — mint a dedicated API key instead:
+
+```http
+POST /api/v1/auth/api-clients
+Authorization: Bearer
+Content-Type: application/json
+
+{ "name": "ERP sync", "scopes": ["products:write", "inventory:write"] }
+```
+
+The response includes a key formatted `ospi_.` — store it like a password, it's shown once. Use it exactly like a JWT: `Authorization: Bearer ospi_.`.
+
+`scopes` must be real, enforced permission codes (see [Roles & Permissions](/guides/roles-and-permissions)) — minting a key requires `org:manage`, and the scopes you request are capped at what your own role can grant.
+
+## Choosing between them
+
+| | JWT | API key |
+| --- | --- | --- |
+| Who | A human, via login | A service/integration |
+| Lifetime | Minutes (access) / days (refresh) | Until revoked |
+| Revocation | Per session, near-immediate for refresh | `DELETE` the client |
+| Scoping | Whatever the user's role grants | Explicit `scopes[]`, capped at the caller's own permissions |
+
+See [API Reference → Authentication](/api-reference/authentication) for the full endpoint list.
diff --git a/docs/guides/capabilities/_category_.json b/docs/guides/capabilities/_category_.json
deleted file mode 100644
index f03d7a7f83..0000000000
--- a/docs/guides/capabilities/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 5,
- "label": "Capabilities",
- "collapsible": true,
- "className": "releaseSidebarHeading"
-}
diff --git a/docs/guides/capabilities/ai/_category_.json b/docs/guides/capabilities/ai/_category_.json
deleted file mode 100644
index d06ca9fd4f..0000000000
--- a/docs/guides/capabilities/ai/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 4,
- "label": "AI",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/ai/index.mdx b/docs/guides/capabilities/ai/index.mdx
deleted file mode 100644
index 3b0486df52..0000000000
--- a/docs/guides/capabilities/ai/index.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
-# Meeting AI
-
-Learn how you can harnesses the power of Artificial Intelligence in Dyte meetings to perform transcription, summarization, and so on.
-
-
-
-
-
-
-
- Meeting AI Guide
-
-
diff --git a/docs/guides/capabilities/ai/meeting-summary.mdx b/docs/guides/capabilities/ai/meeting-summary.mdx
deleted file mode 100644
index 2535dcc973..0000000000
--- a/docs/guides/capabilities/ai/meeting-summary.mdx
+++ /dev/null
@@ -1,108 +0,0 @@
----
-sidebar_position: 1
-description: >-
- Learn how to generate and utilize meeting summaries with Dyte's AI.
- This guide will help you understand and implement summarization features effectively.
----
-
-# Meeting Summary
-
-Dyte's meeting summary feature allows you to automatically generate concise summaries of your meeting based on the transcription data.
-This feature makes it easy to capture key points and action items, providing a concise overview of your discussions.
-
-:::info
-To generate a meeting summary, transcription must be enabled. The summarization feature relies on the transcription data to create accurate and meaningful summaries.
-:::
-
-## Enabling Meeting Summarization
-
-To enable automatic summarization post meeting, you can set the `summarize_on_end` flag when creating a meeting using the [REST API](/api#/operations/create_meeting).
-
-### Summarization Configuration Options
-
-You can tailor the summarization process using the following configuration options:
-
-#### Word Limit
-
-Define the word limit for the summary, ensuring it fits your needs. You can set a limit between 150 and 1000 words.
-
-```json lines
-"word_limit": 500
-```
-
-#### Text Format
-
-Choose the format for the summary text. Supported formats are:
-
-- `plain_text`
-- `markdown`
-
-```json lines
-"text_format": "markdown"
-```
-
-#### Summary Type
-
-Select the type of summary based on the nature of the meeting. Supported types are:
-
-- `general`
-- `team_meeting`
-- `sales_call`
-- `client_check_in`
-- `interview`
-- `daily_standup`
-- `one_on_one_meeting`
-- `lecture`
-- `code_review`
-
-```json lines
-"summary_type": "team_meeting"
-```
-
-### Example Configuration
-
-Here is an example of how to enable summarization in the meeting creation API call:
-
-```json
-{
- "title": "Team Meeting",
- "ai_config": {
- "summarization": {
- "word_limit": 500,
- "text_format": "plain_text",
- "summary_type": "team_meeting"
- }
- },
- "summarize_on_end": true
-}
-```
-
-## Consuming Summaries
-
-There are two ways to consume the generated summaries:
-
-1. **Webhooks:** Receive the meeting summary via a webhook after the meeting ends.
-2. **API Call:** Fetch the meeting summary using the [REST API](/api#/operations/GetMeetingSummary).
-
-### Fetching Summary via Webhook
-
-To receive the meeting summary automatically once the meeting concludes, configure a webhook with the `meeting.summary` event enabled. This can be done either on our [Developer Portal](https://dev.dyte.io/webhooks) or using a [REST API](/api#/operations/addWebhook).
-
-You can see the webhook format [here](/guides/capabilities/webhooks/webhook-events#meetingsummary).
-
-### Fetching Summary via API Call
-
-You can use API to fetch the summary for a meeting at a later time using [REST API](/api#/operations/GetSessionSummary)
-Dyte stores the summary of a meeting for 7 days since the start of the meeting.
-
-## Triggering Summary manually
-
-If you need to generate a summary after the meeting has ended, you can trigger the summary using [REST API](/api#/operations/post-sessions-session_id-summary).
-
-
- Meeting Summary Guide
-
-
diff --git a/docs/guides/capabilities/ai/meeting-transcription.mdx b/docs/guides/capabilities/ai/meeting-transcription.mdx
deleted file mode 100644
index 4a8fcd5c34..0000000000
--- a/docs/guides/capabilities/ai/meeting-transcription.mdx
+++ /dev/null
@@ -1,173 +0,0 @@
----
-sidebar_position: 1
-description: >-
- Explore meeting transcription capabilities with Dyte's AI. Follow our guide to
- understand and implement transcription features.
----
-
-# Meeting Transcription
-
-Dyte's meeting transcription allows you to transcribe your Dyte meetings in real-time, making it easy to capture important discussions and refer back to them later.
-This guide will walk you through how to use this feature effectively.
-
-## Control transcriptions for participants using presets
-
-You can control whether or not a participant's audio will be transcribe with the help of the `transcription_enabled` flag in the participant's preset.
-All participants with the `transcription_enabled` turned on in their preset will be able to generate transcripts in real-time in a Dyte meeting.
-
-You can create a new preset on our [Developer Portal](https://dev.dyte.io/presets), or using our [REST API](/api#/operations/post-presets).
-
-## Modify Transcription Behavior with AI Config
-
-You can control transcription behavior through a configurable AI setup. When creating a meeting using the [REST API](/api#/operations/create_meeting), you can pass an AI configuration for transcriptions. This allows for greater control over the transcription process.
-
-### Supported Languages
-
-You can specify the language for transcription to ensure accurate and relevant results. The following languages are supported:
-
-- _English (United States):_ `en-US`
-- _English (India):_ `en-IN`
-- _German:_ `de`
-- _Hindi:_ `hi`
-- _Swedish:_ `sv`
-- _Russian:_ `ru`
-- _Polish:_ `pl`
-- _Greek:_ `el`
-- _French:_ `fr`
-- _Dutch:_ `nl`
-- _Turkish_ `tr`
-- _Spanish_ `es`
-- _Italian_ `it`
-- _Portuguese_ `pt`
-- _Romanian_ `ro`
-- _Korean_ `ko`
-- _Indonesia_ `id`
-- _Multi_ `multi`
-
-```json lines
-"language": "en-US"
-```
-
-### Keywords
-
-Keywords can be added to help the transcription engine accurately detect and transcribe specific terms, such as names, technical jargon, or other context-specific words. This is particularly useful in meetings where certain terms are frequently used and need to be recognized correctly.
-
-```json lines
-"keywords": ["Dyte", "Mary", "Sue"]
-```
-
-### Profanity Filter
-
-You can enable or disable the profanity filter based on your needs. This feature ensures that any offensive language is either included or excluded from the transcriptions, depending on your preference.
-
-```json lines
-"profanity_filter": false
-```
-
-By utilizing these new features, you can customize the transcription experience to better suit your needs.
-
-### Example Configuration
-
-Here is an example of how to pass the AI configuration in the [meeting creation API](/api#/operations/create_meeting):
-
-```json
-{
- "title": "Meeting Transcriptions",
- "ai_config": {
- "transcription": {
- "keywords": ["Dyte"],
- "language": "en-US",
- "profanity_filter": false
- }
- }
-}
-```
-
-## Consuming transcripts
-
-There are 3 ways in which these transcripts can be consumed.
-
-1. Client core SDK: The transcripts can be consumed on the client-side using the Dyte SDK that's suitable for your platform. These transcripts are generated on the server in real-time.
-2. Webhooks: The meeting transcript can be consumed via a [webhook after the meeting ends](#consume-transcript-via-a-post-meeting-webhook).
-3. REST API: The meeting transcript can also be fetched via the [rest API](/api#/operations/GetSessionTranscript).
-
-### Consuming transcripts in real-time
-
-For consuming transcripts in real-time on the client SDK of your choice, you just need to ensure that the `transcription_enabled` flag is enabled in the preset.
-Transcripts for all the participants having this flag set will be broadcasted in the meeting.
-
-You can use the `meeting.ai` object to access the transcripts.
-
-```ts
-console.log(meeting.ai.transcripts);
-```
-
-The transcripts are also emitted by the `meeting.ai` object, so a listener can be attached to it.
-
-```ts
-meeting.ai.on('transcript', (transcriptData) => {
- console.log('Transcript:', transcriptData);
-});
-```
-
-As participants speak during the meeting, you'll receive partial transcripts, giving you real-time feedback even before they finish their sentences. The `isPartialTranscript` flag in the transcript data shows whether the transcript is partial or final.
-
-```json
-{
- "id": "1a2b3c4d-5678-90ab-cdef-1234567890ab",
- "name": "Alice",
- "peerId": "4f5g6h7i-8j9k-0lmn-opqr-1234567890st",
- "userId": "uvwxyz-1234-5678-90ab-cdefghijklmn",
- "customParticipantId": "abc123xyz",
- "transcript": "Hello?",
- "isPartialTranscript": true,
- "date": "Wed Aug 07 2024 10:15:30 GMT+0530 (India Standard Time)"
-}
-```
-
-In the example above, `isPartialTranscript` is true, indicating the transcript is still in progress. Once the participant finishes speaking, the final transcript will be sent with `isPartialTranscript` set to false. This helps you distinguish between ongoing speech and completed transcriptions, making the transcription process more dynamic and responsive.
-
-### Consume transcript via a post-meeting webhook
-
-You can configure a webhook with the `meeting.transcript` event enabled to receive the meeting transcript after the meeting has ended.
-You can do this either on our [Developer Portal](https://dev.dyte.io/webhooks), or using a [REST API](/api#/operations/addWebhook).
-
-You can see the webhook format [here](/guides/capabilities/webhooks/webhook-events#meetingtranscript).
-
-## Fetch the meeting transcript
-
-You do not need to rely on the webhook to get the transcript for a meeting. Dyte provides a [REST API](/api#/operations/GetSessionTranscript) using which you can obtain the transcripts for a particular session.
-You can use this API to get the transcript for a meeting at a later time. Dyte stores the transcript of a meeting for 7 days since the start of the meeting.
-
-The transcript is received in the form of a CSV. Here is the format of the said CSV:
-
-```csv
-Timestamp, Participant ID, User ID, Custom Participant ID, Participant Name, Transcript
-```
-
-The following is a description of all the fields specified in the above CSV.
-
-1. Timestamp: An ISO 8601 format string indicating the time of utterance (or the time of speech).
-2. Participant ID: An identifier for individual peers in the meeting. For instance, if the participant joins the meeting twice, both the "peers" will have the same User ID but different Participant IDs.
-3. User ID: An identifier for a participant in the meeting, as returned by the [add participant API call](/api#/operations/add_participant#response-body).
-4. Custom Participant ID: An identifier that you can specify to identify a user. This can be sent in the request body of the [add participant API call](/api#/operations/add_participant#request-body).
-5. Participant Name: The display name of the user.
-6. Transcript: The transcribed utterance.
-
-## Testing transcription
-
-Once you have configured a preset and a webhook according to the instructions above, you can proceed to test whether meeting transcription is working for your organization.
-To test if meeting transcription has been configured for your organization, perform the following steps.
-
-1. [Create a meeting](/api#/operations/create_meeting).
-2. [Add a participant](/api#/operations/add_participant) to the meeting. Make sure that the preset you use was configured according to this guide.
-3. Join the meeting with the `authToken` you just obtained. As you unmute and speak, your speech should be getting transcribed in real-time for all the participants in the meeting.
-4. Once the meeting ends, you will be getting a webhook with the event `meeting.transcript`. The body of this webhook will consist of the entire meeting transcript.
-
-
- Meeting Transcription Guide
-
-
diff --git a/docs/guides/capabilities/audio/_category_.json b/docs/guides/capabilities/audio/_category_.json
deleted file mode 100644
index 8ba33428e9..0000000000
--- a/docs/guides/capabilities/audio/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 1,
- "label": "Audio & Transcriptions",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/audio/processing.mdx b/docs/guides/capabilities/audio/processing.mdx
deleted file mode 100644
index ed950104e0..0000000000
--- a/docs/guides/capabilities/audio/processing.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Processing - Middlewares
-sidebar_position: 1
-sidebar_slug: audio-processing-middlewares
----
-
-# Audio Processing
-
-Dyte's SDK supports middlewares which are pluggable functions that can be applied to both audio and video streams in a meeting. This lets you tap in the media to either observe or modify. This guide covers the following.
-
-1. Create an audio middleware
-2. Add or remove audio middlewares
-
-## Create an audio middleware
-
-
-
-
-Audio can be altered using **ScriptProcessor** and **AudioWorkletProcessor**. We support both ways of performing audio alterations. The middleware function has access to the `audioContext` which can help the developer perform operations on the audio track. Audio middleware function can be synchronous or asychronous and is expected to return a `AudioWorkletNode` or `ScriptProcessorNode`. Here is a sample audio middleware function for your reference:
-
-```jsx
-//Somewhere in your codebase
-const meeting = await DyteClient.init(...);
-
-async function addWhiteNoise(audioContext) {
- const moduleScript = `
- class WhiteNoiseProcessor extends AudioWorkletProcessor {
- process (inputs, outputs, parameters) {
- const output = outputs[0]
- output.forEach(channel => {
- for (let i = 0; i
-
-
-## Add or remove audio middlewares
-
-
-
-
-Middlewares can be added to a meeting, which is why they are associated with a meeting object. To add a audio middleware, you need to call the `addAudioMiddleware`. This method takes in a audio middleware function as a parameter, creating this middleware object was covered in the previous section. To remove a audio middleware, you need to call the `removeAudioMiddleware` method. This method also takes in the audio middleware function as a parameter.
-
-```jsx
-meeting.self.addAudioMiddleware(YourMiddlewareFunction);
-
-// once done, in a later section remove the middleware
-meeting.self.removeAudioMiddleware(YourMiddlewareFunction);
-```
-
-:::info Note
-
-In case you are building an Audio Transcriptions middleware or any sort of middleware that doesn’t alter the original audio stream, remember to feed the output channel with whatever you get from inputChannel so that the audio can be sent to the next middleware. Otherwise, a blank audio buffer will be sent to the next middleware.
-
-:::
-
-If you'd instead like to perform operations on the audio stream through your own implementation, you can also programatically access the meeting's audio stream. This is accessed from the meeting object.
-
-```jsx
-//Somewhere in your codebase
-const meeting = await DyteClient.init(...);
-
-// You can get the final track which everybody will hear if your microphone is turned on after all the middlewares are applied
-meeting.self.audioTrack()
-
-// You can also get raw audio track which is the raw microphone track before any middlewares are applied to it
-meeting.self.rawAudioTrack();
-```
-
-
-
-
-
- Processing - Middlewares Guide
-
diff --git a/docs/guides/capabilities/audio/transcriptionAWS.mdx b/docs/guides/capabilities/audio/transcriptionAWS.mdx
deleted file mode 100644
index ef09696bfa..0000000000
--- a/docs/guides/capabilities/audio/transcriptionAWS.mdx
+++ /dev/null
@@ -1,108 +0,0 @@
----
-title: Transcriptions - AWS Transcribe
-sidebar_position: 3
-sidebar_slug: transcriptions-aws
----
-
-To add the realtime audio transcriptions in a Dyte meeting you can use AWS Transcribe & AWS Translate services
-
-These AWS services are paid, an AWS account is required to proceed.
-
-:::note
-
-This integration is Web only at the moment
-
-:::
-
-# Integration Steps
-
-## 1. Setup AWS IAM account, get credentials
-
-To use AWS services, you should either be an IAM user, or your backend services should be deployed using roles & policies.
-
-For ease of use, we are going ahead with IAM user credentials. Please ensure that the IAM user can actually use AWS transcribe & AWS translate services.
-
-To proceed further, we need
-
-- `accessKeyId`
-- `secretAccessKey`
-
-## 2. Setup a Server
-
-Setup a server to forward the Audio Data from client to AWS Transcribe. You don't want to put your IAM credentials on client side and therefore need a server which forwards audio data to AWS
-
-For this, we have provided the sample in NodeJS for you to checkout [dyte-io/aws-transcribe](https://github.com/dyte-io/aws-transcribe/tree/main/server). Currently, we only have an ExpressJS sample, if you working on a different backend, feel free to port this code or connect with us so that we can help you out in porting it.
-
-To use this sample, Please clone this using the following command.
-
-```
-git clone git@github.com:dyte-io/aws-transcribe.git
-```
-
-### 2.1 Add your keys
-
-```
-cp .env.example .env
-```
-
-Edit it as per your AWS service account credentials and Save it.
-
-### 2.2 Run the server
-
-```
-npm install
-npm run dev
-```
-
-The HTTP endpoint where this server is accessible will now be called `backend_url` for remaining section of the guide
-
-## Frontend Setup
-
-### 3.1 Installation
-
-```
-npm install @dytesdk/aws-transcribe
-```
-
-Source available at (dyte-io/aws-transcribe)(https://github.com/dyte-io/aws-transcribe/tree/main/client)
-
-### 3.2 Integrate
-
-The second step is to look for the place in your codebase where you are initiating a Dyte meeting.
-
-Once you have found the place and got a hold of the meeting object. Add the following code on top of the file to import the FE SDK.
-
-```
-import DyteAWSTranscribe from '@dytesdk/aws-transcribe';
-```
-
-Add the following code just after the point where you have access to the meeting object.
-
-```ts
-const awsTranscribe = new DyteAWSTranscribe({
- meeting,
- target: 'hi', // Optional if translate is false, Supported languages: https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html
- translate: true, // Control whether to translate the source language to target language or just transcribe
- source: 'en-US', // Supported languages: https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html
- preSignedUrlEndpoint: 'http://localhost:3001/aws-transcribe-presigned-url',
- translationEndpoint: 'http://localhost:3001/translate', // ${backend_url}/translate. backend_url is from step 2.4
-});
-
-awsTranscribe.on('transcription', async (data) => {
- // ... do something with transcription
-});
-
-awsTranscribe.transcribe();
-```
-
-Here you are setting up the DyteAWSTranscribe with the values that the current user would prefer and activating the recognition just afterward using awsTranscribe.transcribe(). Then we are listening to every new transcription using awsTranscribe.on('transcription', aJsCallbackFunction)
-
-To see the support languages, please refer to https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html and https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html.
-
-With this, now you would be able to receive the live transcriptions. Feel free to put them in UI as per your need.
-
-If you need a sample of this guide, please refer to https://github.com/dyte-io/aws-transcribe/blob/main/client/demo/index.ts.
-
-
- Transcriptions - AWS Transcribe Guide
-
diff --git a/docs/guides/capabilities/audio/transcriptionGoogle.mdx b/docs/guides/capabilities/audio/transcriptionGoogle.mdx
deleted file mode 100644
index 3724deeceb..0000000000
--- a/docs/guides/capabilities/audio/transcriptionGoogle.mdx
+++ /dev/null
@@ -1,112 +0,0 @@
----
-title: Transcriptions - Google STT
-sidebar_position: 4
-sidebar_slug: transcriptions-google
----
-
-To add the realtime audio transcriptions in a Dyte meeting you can use Google Cloud Speech-to-Text and Cloud translation APIs.
-
-These Google services are paid, a Google Cloud account is required to proceed.
-
-:::note
-
-This integration is Web only at the moment
-
-:::
-
-# Integration Steps
-
-## 1. Setup Google Cloud Credentials
-
-You must have a project & a service account with GCP (Google Cloud Platform) to use Google transcriptions. Make sure that service account allows Google Speech-to-Text and Google Translation API.
-
-Once done, download the keys for the service account.
-
-## 2. Setup a Server
-
-Setup a server to forward the Audio Data from client to Google Cloud. You don't want to put your GCP credentials on client side and therefore need a server which forwards audio data to Google Cloud
-
-For this, we have provided a sample in NodeJS for you to checkout (dyte-io/google-transcription)[https://github.com/dyte-io/google-transcription/tree/main/server]. Please find it here. Currently, we only have NodeJS samples; if you're working on a different backend, feel free to port this code.
-
-To use this sample, please clone the repository using the following command.
-
-```
-git clone git@github.com:dyte-io/google-transcription.git
-```
-
-### 2.1 Environment Setup
-
-```
-cp .env.example .env
-```
-
-Edit the `.env` file as per your GCP service account credentials and Save it.
-
-Note: PRIVATE_KEY should be in a single line. Try picking the value from the service account's key's JSON file as is.
-
-### 2.2 Run the server
-
-```
-npm install
-```
-
-This would automatically install @google-cloud/speech, and @google-cloud/translate.
-
-```
-npm run dev
-```
-
-The HTTP endpoint where this server is accessible will now be called `backend_url` for remaining section of the guide
-
-## Frontend Setup
-
-### 3.1 Installation
-
-```
-npm install @dytesdk/google-transcription
-```
-
-Source available at (dyte-io/google-transcription)(https://github.com/dyte-io/google-transcription/tree/main/client)
-
-### 3.2 Integrate
-
-The second step is to look for the place in your codebase where you are initiating a Dyte meeting.
-
-Once you have found the place and got a hold of the meeting object, add the following code to the file to import the SDK.
-
-```
-import DyteGoogleSpeechRecognition from '@dytesdk/google-transcription';
-```
-
-Add the following code just after the point where you have access to the meeting object.
-
-```ts
-const speech = new DyteGoogleSpeechRecognition({
- meeting, // Dyte meeting object from DyteClient.init
- target: 'hi', // Language that the current user wants to see
- source: 'en-US', // Language that the current user would speak in
- baseUrl: , // Backend URL from step 2.2
-});
-
-speech.on('transcription', async (data) => {
- // ... do something with transcription
-});
-
-speech.transcribe();
-```
-
-Here you are setting up the GoogleSpeechRecognition with the values that the current user would prefer and activating the recognition just afterward using speech.transcribe(). Then we listen to every new transcription using speech.on('transcription', aJsCallbackFunction)
-
-To see the support languages, please refer to
-
-- https://cloud.google.com/speech-to-text/docs/speech-to-text-supported-languages
-- https://cloud.google.com/translate/docs/languages
-
-With this, you would now be able to receive the live transcriptions.
-Feel free to put them in UI as per your need.
-
-If you need a sample of this guide, please refer to https://github.com/dyte-io/google-transcription/blob/main/client/demo/index.ts
-
-
- Transcriptions - Google STT Guide
-
diff --git a/docs/guides/capabilities/audio/transcriptions.mdx b/docs/guides/capabilities/audio/transcriptions.mdx
deleted file mode 100644
index 68dce6353c..0000000000
--- a/docs/guides/capabilities/audio/transcriptions.mdx
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: Transcriptions
-sidebar_position: 2
-sidebar_slug: transcriptions-inbuilt
----
-
-# Meeting Transcription
-
-Dyte's meeting transcription allows you to transcribe your Dyte meetings in real-time, making it easy to capture important discussions and refer back to them later.
-This guide will walk you through how to use this feature effectively.
-
-## Control transcriptions for participants using presets
-
-You can control whether or not a participant's audio will be transcribe with the help of the `transcription_enabled` flag in the participant's preset.
-All participants with the `transcription_enabled` turned on in their preset will be able to generate transcripts in real-time in a Dyte meeting.
-
-You can create a new preset on our [Developer Portal](https://dev.dyte.io/presets), or using our [REST API](/api#/operations/post-presets).
-
-## Consuming transcripts
-
-There are 3 ways in which these transcripts can be consumed.
-
-1. Client core SDK: The transcripts can be consumed on the client-side using the Dyte SDK that's suitable for your platform. These transcripts are generated on the server in real-time.
-2. Webhooks: The meeting transcript can be consumed via a [webhook after the meeting ends](#consume-transcript-via-a-post-meeting-webhook).
-3. REST API: The meeting transcript can also be fetched via the [rest API](/api#/operations/GetSessionTranscript).
-
-### Consuming transcripts in real-time
-
-For consuming transcripts in real-time on the client SDK of your choice, you just need to ensure that the `transcription_enabled` flag is enabled in the preset.
-Transcripts for all the participants having this flag set will be broadcasted in the meeting.
-
-You can use the `meeting.ai` object to access the transcripts.
-
-```ts
-console.log(meeting.ai.transcripts);
-```
-
-The transcripts are also emitted by the `meeting.ai` object, so a listener can be attached to it.
-
-```ts
-meeting.ai.on('transcript', (transcriptData) => {
- console.log('Transcript:', transcriptData);
-});
-```
-
-### Consume transcript via a post-meeting webhook
-
-You can configure a webhook with the `meeting.transcript` event enabled to receive the meeting transcript after the meeting has ended.
-You can do this either on our [Developer Portal](https://dev.dyte.io/webhooks), or using a [REST API](/api#/operations/addWebhook).
-
-You can see the webhook format [here](/guides/capabilities/webhooks/webhook-events#meetingtranscript).
-
-## Fetch the meeting transcript
-
-You do not need to rely on the webhook to get the transcript for a meeting. Dyte provides a [REST API](/api#/operations/GetSessionTranscript) using which you can obtain the transcripts for a particular session.
-You can use this API to get the transcript for a meeting at a later time. Dyte stores the transcript of a meeting for 7 days since the start of the meeting.
-
-The transcript is received in the form of a CSV. Here is the format of the said CSV:
-
-```csv
-Timestamp, Participant ID, User ID, Custom Participant ID, Participant Name, Transcript
-```
-
-The following is a description of all the fields specified in the above CSV.
-
-1. Timestamp: An ISO 8601 format string indicating the time of utterance (or the time of speech).
-2. Participant ID: An identifier for individual peers in the meeting. For instance, if the participant joins the meeting twice, both the "peers" will have the same User ID but different Participant IDs.
-3. User ID: An identifier for a participant in the meeting, as returned by the [add participant API call](/api#/operations/add_participant#response-body).
-4. Custom Participant ID: An identifier that you can specify to identify a user. This can be sent in the request body of the [add participant API call](/api#/operations/add_participant#request-body).
-5. Participant Name: The display name of the user.
-6. Transcript: The transcribed utterance.
-
-## Testing transcription
-
-Once you have configured a preset and a webhook according to the instructions above, you can proceed to test whether meeting transcription is working for your organization.
-To test if meeting transcription has been configured for your organization, perform the following steps.
-
-1. [Create a meeting](/api#/operations/create_meeting).
-2. [Add a participant](/api#/operations/add_participant) to the meeting. Make sure that the preset you use was configured according to this guide.
-3. Join the meeting with the `authToken` you just obtained. As you unmute and speak, your speech should be getting transcribed in real-time for all the participants in the meeting.
-4. Once the meeting ends, you will be getting a webhook with the event `meeting.transcript`. The body of this webhook will consist of the entire meeting transcript.
-
-
- Transcriptions Guide
-
diff --git a/docs/guides/capabilities/breakoutroom/_category_.json b/docs/guides/capabilities/breakoutroom/_category_.json
deleted file mode 100644
index 44e4741b6e..0000000000
--- a/docs/guides/capabilities/breakoutroom/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Breakout Rooms",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/breakoutroom/create-breakout-rooms.mdx b/docs/guides/capabilities/breakoutroom/create-breakout-rooms.mdx
deleted file mode 100644
index b2b1badeba..0000000000
--- a/docs/guides/capabilities/breakoutroom/create-breakout-rooms.mdx
+++ /dev/null
@@ -1,151 +0,0 @@
----
-title: Create a Breakout Room
-sidebar_position: 2
-description: >-
- Learn how to create breakout rooms with Dyte's capabilities. Follow our guide
- for effective implementation and management of breakout rooms.
----
-
-Breakout rooms allow the participants to split in separate sessions. The host can create breakout rooms, assign participants, start and close the breakout rooms.
-
-## Prerequisites
-
-- For hosts ensure that you've created a preset with the Full Access permissions. See [hosts permissions](/guides/capabilities/breakoutroom/create-breakout-rooms#host).
-- For participants you've created a preset with Switch to Parent Meeting and/or Switch Connected Meetings permissions. See [participants permissions](/guides/capabilities/breakoutroom/create-breakout-rooms#participants).
-
-To create a breakout room, do the following:
-
-## Step 1: Create a Dyte Developer Account
-
-Login to the [Developer Portal](https://dev.dyte.io/) and create an account.
-
-## Step 2: Create Presets
-
-A preset is a set of permissions and UI configurations that are applied to hosts and participants. They determine the look, feel, and behavior of the breakout room, with options to set varied permissions, such as the ability to create polls or chat, control access for plugins, and more.
-
-For breakout rooms, you must provide the following permissions for hosts and participants in the **Connected Meetings**. However, ensure that you've provided other necessary permissions as well for your meeting other than the **Connected Meetings** permissions for hosts and participants.
-
-### Host
-
-| **Full Access** | **Permission** |
-| ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
-| | Allows you to create breakout rooms, assign participants, start and close the breakout rooms, switch between breakout rooms. |
-
-### Participants
-
-| **Switch Connected Meetings** | **Permission** |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
-| | Allows you to create breakout rooms, assign participants, start and close the breakout rooms, switch between breakout rooms. |
-
-| **Switch to Parent Meeting** | **Permission** |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
-| | Allows you to switch to the main meeting. |
-
-You can choose to provide **Switch Connected Meetings** and **Switch to Parent Meeting** permissions both to the participants.
-
-## Step 3: Save the Preset Changes
-
-1. Once you've made all the changes that you need to add to your preset, click **Save** at the right-corner.
-2. Enter the name for your preset and click **Save**.
-3. Your preset is listed. Click **Edit** to make any changes to the preset.
-
-## Step 4: Create a Meeting
-
-Create a Dyte meeting using the [Create Meeting API](/api#/operations/create_meeting). This API returns a unique identifier for your meeting.
-
-## Step 5: Add Participants
-
-After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api#/operations/add_participant).
-The `presetName` created earlier must be passed in the body of the Add Participant API request.
-
-## Step 6: Start Breakout Room
-
-1. In your Dyte meeting, click **Breakout Rooms**.
-
-
-
-2. In the **Create Breakout**, add the number of rooms you want and click **Create**.
-
-
-
-Once you've created a breakout room, assign participants to the breakout rooms. You have the option to either individually select the participants and add them to the room manually or allow Dyte to split your participants evenly across the rooms.
-
-### Assign participants automatically
-
-To assign participants automatically, do the following:
-
-1. In the **Assign Participants**, click the shuffle button.
-
-
-
-2. Participants are assigned to the rooms.
-
-
-
-3. You can also edit the room names. To edit the room name, click the pencil icon beside the room name.
-
-
-
-4. You can also choose to move the participants to different rooms.
-
-5. Once you've made all the changes, click **Start Breakout**.
-
-6. Click **Yes, start** in the **Start breakout rooms** pop-up. You will enter the breakout room.
-
-### Assign participants manually
-
-You can select which participants you would like in each room. To assign participants manually, do the following:
-
-1. In the **Assign Participants**, select the participant/s that you want to assign to a room.
-
-
-
-2. In the **Rooms**, click **Assign**.
-
-3. Once you've assigned all the participants to the rooms of your choice, click **Start Breakout**.
-
-4. Click **Yes, start** in the **Start breakout rooms** pop-up. You will enter the breakout room.
-
-
- Create a Breakout Room Guide
-
-
diff --git a/docs/guides/capabilities/breakoutroom/integrating-breakout-rooms.mdx b/docs/guides/capabilities/breakoutroom/integrating-breakout-rooms.mdx
deleted file mode 100644
index ac95a7c69d..0000000000
--- a/docs/guides/capabilities/breakoutroom/integrating-breakout-rooms.mdx
+++ /dev/null
@@ -1,119 +0,0 @@
----
-title: Integrating Breakout Rooms
-sidebar_position: 3
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-import { WebCoreCDNInstallation } from '@site/src/components/LatestInstallation';
-
-## Step 1: Install the SDK
-
-You can install the package using CDN, npm or Yarn.
-
-
-
-Install the SDK using npm.
-
-```shell
-npm install @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fweb-core)
-
-
-
-Install the SDK using yarn.
-
-```shell
-yarn add @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fweb-core)
-
-
-
-Add the following script tag in the head of your HTML file.
-
-
-
-
-
-## Step 2: Initialize the SDK
-
-| | |
-| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api#/operations/add_participant). The API response contains the authToken. |
-
-```js
-let meeting = await DyteClient.init({
- authToken,
-});
-
-// add additional event handler for breakout rooms
-meeting.connectedMeetings.on('meetingChanged', (newMeeting) => {
- meeting = newMeeting;
-});
-```
-
-## Step 3: Pass the meeting object to pre-built ui component
-
-
-
-
-```html
-
-
-
-
-```
-
-For detailed guide, check out - https://docs.dyte.io/ui-kit/quickstart
-
-
-
-
-```jsx
-
-```
-
-For detailed guide, check out - https://docs.dyte.io/react-ui-kit/quickstart
-
-
-
-
-```js
-class AppComponent {
- title = 'MyProject';
- @ViewChild('myid') meetingComponent: DyteMeeting;
- dyteMeeting: DyteClient;
-
- async ngAfterViewInit() {
- const meeting = await DyteClient.init({
- authToken: '',
- });
- meeting.join();
- this.dyteMeeting = meeting;
- if (this.meetingComponent) this.meetingComponent.meeting = meeting;
- }
-}
-```
-
-For detailed guide, check out - https://docs.dyte.io/angular-ui-kit/quickstart
-
-
-
-
-
- Integrating Breakout Rooms Guide
-
diff --git a/docs/guides/capabilities/breakoutroom/introduction-breakout-rooms.mdx b/docs/guides/capabilities/breakoutroom/introduction-breakout-rooms.mdx
deleted file mode 100644
index 8b52aab667..0000000000
--- a/docs/guides/capabilities/breakoutroom/introduction-breakout-rooms.mdx
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: Introduction to Dyte's Breakout Rooms
-sidebar_position: 1
-description: >-
- Get an introduction to breakout rooms with Dyte's capabilities. Follow our
- guide for a smooth understanding and integration.
----
-
-:::info Beta
-The breakout rooms feature is currently in beta, which means it is still being tested and evaluated, and may undergo some change. Please [contact us](https://dyte.io/contact) if you encounter any issues or have suggestions for improvements to the feature.
-:::
-
-Breakout rooms allow participants of a meeting to split into smaller groups for targeted discussions and collaboration. With the rise of remote work and online learning, breakout rooms have become an essential tool for enhancing engagement and building community in virtual settings. They are an ideal choice for workshops, online classrooms, or even if you require a moment to speak privately with a select few participants outside the main meeting.
-
-:::info note
-
-Currently, Dyte breakout rooms are supported on the web only.
-
-:::
-
-## Key features of Dyte's breakout rooms
-
-The following are some of the key features of Dyte's breakout rooms:
-
-- You can manage permissions and privileges of [hosts](/guides/capabilities/breakoutroom/create-breakout-rooms#hosts) and [participants](/guides/capabilities/breakoutroom/create-breakout-rooms#participants) using presets.
-- Hosts can create breakout rooms, assign participants, start and close the breakout rooms, and switch between rooms.
-- Participants can start and stop video any time, interact with the participants in the breakout rooms using chat and polls, mute and unmute the audio at any time.
-- You can record all the breakout sessions individually like any other Dyte meeting.
-
-## Roles in a breakout room
-
-Roles in the breakout room are managed by the presets.
-
-**Host**: Hosts can create breakout rooms, assign participants, start and close the breakout rooms, switch between rooms.
-
-**Participants**: As a participant in a breakout room, you can do the following:
-
-- Switch to Parent Meeting: You can switch to the main meeting (only if you've the required permissions).
-- Switch Connected Meetings: You can switch from the main meeting to smaller, more focused discussion groups (breakout rooms) where you can collaborate and exchange ideas. You can collaborate using tools such as chat and poll.
-
-| **Features** | **Host** | **Participants** |
-| -------------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
-| Create breakout rooms | Yes | No |
-| Assign participants to a breakout room | Yes | No |
-| Switch between breakout rooms | Yes | Yes (if you've the required [permissions](/guides/capabilities/breakoutroom/create-breakout-rooms#participants)) |
-| Record the breakout rooms | Yes (you must be an admin for the meeting or the required permissions to record the meeting) | Yes (you must be an admin for the meeting or the required permissions to record the meeting) |
-| Interact within the breakout room, send chat, poll | Yes | Yes |
-
-## Audio and video in a breakout room
-
-Each breakout room functions as an independent meeting. When you switch to a breakout room from the main meeting, it automatically switches over to the audio and video of the breakout session. You can mute or unmute your audio and start or stop your video at any time during the breakout session, just as you can in the main meeting.
-
-When the breakout session ends, your audio and video automatically switches back to the main meeting.
-
-- If your video was turned on during a breakout session, it will remain on when you return to the main session.
-- However, your audio will be muted or turned off when you switch back to the main meeting.
-
-## Recording of breakout sessions
-
-As mentioned earlier, each breakout session is a separate session. Each breakout session's recording is stored and managed separately, just like any other Dyte meeting. For more information on Dyte recording, see the [Recording Overview](/guides/capabilities/recording/recording-overview).
-
-
- Introduction to Dyte's Breakout Rooms Guide
-
-
diff --git a/docs/guides/capabilities/chat/_category_.json b/docs/guides/capabilities/chat/_category_.json
deleted file mode 100644
index dbe2c84466..0000000000
--- a/docs/guides/capabilities/chat/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 4,
- "label": "Chat",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/chat/export-chat-dump.mdx b/docs/guides/capabilities/chat/export-chat-dump.mdx
deleted file mode 100644
index 517124b022..0000000000
--- a/docs/guides/capabilities/chat/export-chat-dump.mdx
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Export Chat Messages
-sidebar_position: 8
-sidebar_slug: export-chat-dump
----
-
-# Export Chat of a Session
-
-You can programmatically retrieve all chat messages of a Dyte session in the following ways:
-
-- Using [Chat Replay API](/api/?v=v2#/operations/GetSessionChat)
-- Setting up webhook for the [meeting.chatSynced](/guides/capabilities/webhooks/webhook-events#meetingchatsynced) event
-
-This guide walks you through the steps involved in exporting chat dump of a session using Chat Replay API.
-
-If you wish to use webhooks, see [Set Up Webhooks](/guides/capabilities/webhooks/webhooks-and-events) and [meeting.chatSynced](/guides/capabilities/webhooks/webhook-events#meetingchatsynced).
-
-Once [Chat Replay API](/api/?v=v2#/operations/GetSessionChat) is enabled, do the
-following:
-
-1. Get the `chat_download_url` using
- [Chat Replay API](/api/?v=v2#/operations/GetSessionChat).
-2. Download the chat dump CSV file.
-
-## Get `chat_download_url`
-
-To get the `chat_download_url`, make a `HTTP GET` request to
-[Chat Replay API](/api/?v=v2#/operations/GetSessionChat). The API returns the
-following:
-
-```json
-{
- "success": true,
- "data": {
- "chat_download_url": "string",
- "chat_download_url_expiry": "string"
- }
-}
-```
-
-- The `chat_download_url` is a URL that allows you to download the entire chat dump of a session in CSV format from AWS S3.
-- `chat_download_url_expiry` indicates the expiry timestamp of the `chat_download_url`. If the `chat_download_url` gets expired, simply call this endpoint again to obtain a new download URL.
-
-## Download the chat dump file
-
-You can download the chat dump file in CSV format by making `HTTP GET` request
-to `chat_download_url` that you obtained in the previous step.
-
-The process of downloading any file from a HTTP URL in JavaScript differs
-slightly based on whether you are doing it on client side or server side.
-
-### Download on the client
-
-To download at client side, do the following:
-
-1. Make a GET request to the `chat_download_url`.
-2. Convert response to blob.
-3. Create an invisible `` HTML element with download attribute and add the
- above blob to it's `href`.
-4. Programmatically click on the ` ` element so that the browser automatically
- starts downloading and then remove the ` ` element.
-
-### Download on the server
-
-We use `Node.js` streams to download files on the server, so the steps are as
-follows:
-
-1. Create a writable stream for a local file.
-2. Make a GET request to `chat_download_url`.
-3. Get a readable stream using `res.body` and pipe to the writable stream
- created in the first step.
-
-## Example: CSV chat dump file
-
-This CSV file contains all the chat messages along with the participant's name
-and some other metadata. It includes the following column headings:
-
-- `id`: Unique chat message ID
-- `participantId`: ID of the participant who sent the message
-- `sessionId`: The session ID from which the chat message was sent
-- `meetingId`: The ID of the meeting to which this session belongs
-- `displayName`: Display name of the participant who sent this message
-- `pinned`: A boolean that indicates if the current message was pinned or not
-- `isEdited`: A boolean that indicates if the current message was edited or not
-- `payloadType`: An ENUM that indicates the type of payload sent in the chat
- message. It can be one of TEXT_MESSAGE, IMAGE_MESSAGE, FILE_MESSAGE
-- `payload`: The actual payload sent in the chat message
-- `createdAt`: Timestamp when this chat message was sent
-
-
-
-For more information on downloading the file, refer to
-[How to Fetch Chat History of a Dyte Session](https://dyte.io/blog/fetch-chat-history-of-a-dyte-session/)
-blog.
-
-
- Export Chat Messages Guide
-
-
diff --git a/docs/guides/capabilities/misc/_category_.json b/docs/guides/capabilities/misc/_category_.json
deleted file mode 100644
index 8fe502aae5..0000000000
--- a/docs/guides/capabilities/misc/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 9,
- "label": "Misc",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/misc/embed.mdx b/docs/guides/capabilities/misc/embed.mdx
deleted file mode 100644
index 8c7bd8590c..0000000000
--- a/docs/guides/capabilities/misc/embed.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: No code Integration
-sidebar_position: 5
----
-
-# No Code Integration
-
-You can easily integrate Dyte into your project without any SDK using an iFrame. An iFrame is a quick and easy way to embed a live video solution into your own website or application without modifying the underlying code.
-
-You can use iFrame for a variety of reasons, including lack of resources, technical expertise, or simply a preference for a lighter integration method.
-You simply need to add a small piece of HTML code to your website or application.
-
-## Before Getting Started
-
-- Create a [Dyte Developer Account](https://dev.dyte.io/)
-- Create a
- [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
-- [Add Participant](/api/?v=v2#/operations/add_participant)
- to the meeting
-
-## Embed using an iFrame
-
-Pass your options with meeting ID auth token in the URL query. Here's an example with all the available options:
-
-```html
-
-```
-
-### Query Parameters
-
-| Name | Required | Description |
-| :--------------- | :--------- | :----------------------------------------------------------------------------------------------------------- | --- |
-| `authToken` | `required` | The `token` string you receive when you [add a Participant](/api/#/operations/add_participant) to a meeting. |
-| `meetingID` | `required` | The ID of the meeting you receive when you [create a meeting](/api/?v=v2#/operations/create_meeting). |
-| `endRedirectURL` | `optional` | The URL to which the meeting would be redirected on end of the meeting. | |
-
-## Events
-
-```js
-window.addEventListener('message', receiveMessage, false);
-
-function receiveMessage(evt) {
- if (evt.origin === 'https://app.dyte.in') {
- const data = evt.data;
- if (data.type === 'meetingEnded') {
- const reason = data.kicked;
- // take action on meeting end
- }
- }
-}
-```
-
-
- No code Integration Guide
-
-
diff --git a/docs/guides/capabilities/misc/livestreaming-other-platforms.mdx b/docs/guides/capabilities/misc/livestreaming-other-platforms.mdx
deleted file mode 100644
index 853fa44045..0000000000
--- a/docs/guides/capabilities/misc/livestreaming-other-platforms.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Restream to Social Platforms
-sidebar_position: 5
----
-
-# Restream to Social Platforms
-
-Dyte can restream your meeting to any platform that supports an RTMP
-endpoint, such as YouTube, Twitch, or LinkedIn.
-
-## Prerequisites
-
-- [Create a meeting](/api?v=v2#/operations/create_meeting)
-- [Add a participant](/guides/livestream/build-livestream-app#step-5-add-participants)
-
-## Step 1: Initiate meeting recording
-
-To enable restreaming of a Dyte meeting, you will first need to start recording the meeting. In the [Start recording a meeting](/api#/operations/start_recording) API, provide the `meeting_id` of the meeting you wish to restream.
-
-## Step 2: Configure restreaming settings
-
-In the same [Start recording a meeting](/api#/operations/start_recording) API, configure the restreaming settings.
-
-Specify the desired **RTMP input URL** and **stream key** where you want the meeting video to be streamed.
-
-:::info Note
-Your stream key is generated when [creating a livestream](/guides/rest-apis/livestream-dyte-meeting#step-2-create-a-live-stream).
-:::
-
-For example, if you want to stream it to [restream.io](https://restream.io), do
-the following:
-
-```shell
-curl --request POST \
- --url https://api.dyte.in/v2/organizations/orgid/meetings/meetingid/recording \
- --header 'Authorization: APIKEY yourapi-key' \
- --header 'Content-Type: application/json' \
- --data '{
- "liveStreamingConfig": {
- "rtmpUrl": "rtmp://live.restream.io/live/your-stream-key"
- }
-}'
-```
-
-You may notice a few seconds of lag between the meeting and the stream.
-
-
- Restream to Social Platforms Guide
-
-
diff --git a/docs/guides/capabilities/plugins/_category_.json b/docs/guides/capabilities/plugins/_category_.json
deleted file mode 100644
index b241fe9f77..0000000000
--- a/docs/guides/capabilities/plugins/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 4,
- "label": "Plugins",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/plugins/basics.mdx b/docs/guides/capabilities/plugins/basics.mdx
deleted file mode 100644
index 998cd5363a..0000000000
--- a/docs/guides/capabilities/plugins/basics.mdx
+++ /dev/null
@@ -1,312 +0,0 @@
----
-slug: /capabilities/plugins
-sidebar_position: 1
----
-
-# Basics
-
-Dyte Plugins allow you to build collaborative and immersive experiences in your meetings without ever having to leave the meeting. The guides listed here will help you enable or disable plugins during meetings, configure existing plugins and even create new plugins with the help of Meeting APIs and built-in realtime database.
-
-## Usage
-
-### Methods / Properties
-
-Here is an introduction on the basics of plugins in your meetings:
-
-
-
-
-#### List all plugins
-
-```js
-const plugins = meeting.plugins.all.toArray();
-```
-
-Each plugin object in the array is of type [DytePlugin](/web-core/reference/DytePlugin)
-
-#### Activate plugin
-
-The `activate()` method activates a plugin for all users in the meeting. When you activate a plugin, it moves into the active plugins map and can be accessed from `meeting.plugins.active`.
-
-The snippet below finds a plugin by name and activates it
-
-```js
-const plugins = meeting.plugins.all.toArray();
-const whiteboard = plugins.find((p) => p.name == 'Whiteboard');
-
-await whiteboard.activate();
-```
-
-#### Deactivate plugin
-
-```
-whiteboard.deactivate()
-```
-
-
-
-
-#### List all plugins
-
-```js
-const plugins = meeting.plugins.all.toArray();
-```
-
-Each plugin object in the array is of type [DytePlugin](/react-web-core/reference/DytePlugin)
-
-#### Activate plugin
-
-The `activate()` method activates a plugin for all users in the meeting. When you activate a plugin, it moves into the active plugins map and can be accessed from `meeting.plugins.active`.
-
-The snippet below finds a plugin by name and activates it
-
-```js
-const plugins = meeting.plugins.all.toArray();
-const whiteboard = plugins.find((p) => p.name == 'Whiteboard');
-
-await whiteboard.activate();
-```
-
-#### Deactivate plugin
-
-```
-whiteboard.deactivate()
-```
-
-
-
-
-#### List all plugins
-
-```dart
-List plugins = await dyteClient.plugins.all;
-```
-
-Each plugin object in the array is of type DytePlugin
-
-#### Activate plugin
-
-The `activate()` method activates a plugin for all users in the meeting. When you activate a plugin, it moves into the active plugins map and can be accessed from `meeting.plugins.active`.
-
-The snippet below finds a plugin by name and activates it
-
-```dart
-List plugins = await dyteClient.plugins.all;
-DytePlugin whiteboard = plugins.firstWhere((p) => p.name == 'Whiteboard');
-
-await whiteboard.activate();
-```
-
-#### Deactivate plugin
-
-```dart
-whiteboard.deactivate()
-```
-
-
-
-
-#### List all plugins
-
-```js
-const plugins = meeting.plugins.all.toArray();
-```
-
-Each plugin object in the array is of type DytePlugin
-
-#### Activate plugin
-
-The `activate()` method activates a plugin for all users in the meeting. When you activate a plugin, it moves into the active plugins map and can be accessed from `meeting.plugins.active`.
-
-The snippet below finds a plugin by name and activates it
-
-```js
-const plugins = meeting.plugins.all.toArray();
-const whiteboard = plugins.find((p) => p.name == 'Whiteboard');
-
-await whiteboard.activate();
-```
-
-#### Deactivate plugin
-
-```
-whiteboard.deactivate()
-```
-
-
-
-
-#### List all plugins
-
-```kotlin
-val plugins = meeting.plugins.all
-```
-
-Each plugin object in the array is of type DytePlugin
-
-#### Activate plugin
-
-The `activate()` method activates a plugin for all users in the meeting. When you activate a plugin, it moves into the active plugins array and can be accessed from `meeting.plugins.active`.
-
-The snippet below finds a plugin by name and activates it
-
-```kotlin
-val plugins = meeting.plugins.all
-val whiteboard = plugins.find { p -> p.name == "Whiteboard" }
-
-whiteboard.activate();
-```
-
-#### Deactivate plugin
-
-```
-whiteboard.deactivate()
-```
-
-
-
-
-#### List all plugins
-
-```swift
-let plugins = meeting.plugins.all
-```
-
-Each plugin object in the array is of type DytePlugin
-
-#### Activate plugin
-
-The `activate()` method activates a plugin for all users in the meeting. When you activate a plugin, it moves into the active plugins array and can be accessed from `meeting.plugins.active`.
-
-The snippet below finds a plugin by name and activates it
-
-```swift
-let plugins = meeting.plugins.all
-let whiteboard = plugins.first { $0.name == "Whiteboard" }
-
-whiteboard.activate();
-```
-
-#### Deactivate plugin
-
-```
-whiteboard.deactivate()
-```
-
-
-
-
-### Events
-
-
-
-
-Each `plugin` object emits an `enabled` event and a `closed` event
-
-```js
-const whiteboard = plugins.find((p) => p.name == 'Whiteboard');
-whiteboard.on('enabled', () => {
- console.log('Whiteboard has been enabled');
-});
-whiteboard.on('closed', () => {
- console.log('Whiteboard has been disabled');
-});
-```
-
-
-
-
-Each `plugin` object emits an `enabled` event and a `closed` event
-
-```js
-const whiteboard = plugins.find((p) => p.name == 'Whiteboard');
-whiteboard.on('enabled', () => {
- console.log('Whiteboard has been enabled');
-});
-whiteboard.on('closed', () => {
- console.log('Whiteboard has been disabled');
-});
-```
-
-
-
-
-```dart
-
-class PluginNotifier extends DytePluginEventsListener {
- @override
- void onPluginActivated(DytePlugin plugin) {
- state = OnPluginActivated(plugin);
- }
-
- @override
- void onPluginDeactivated(DytePlugin plugin) {
- state = OnPluginDeactivated(plugin);
- }
-}
-
-meeting.addPluginEventsListener(PluginNotifier())
-
-```
-
-
-
-
-Each `plugin` object emits an `enabled` event and a `closed` event
-
-```js
-const whiteboard = plugins.find((p) => p.name == 'Whiteboard');
-whiteboard.on('enabled', () => {
- console.log('Whiteboard has been enabled');
-});
-whiteboard.on('closed', () => {
- console.log('Whiteboard has been disabled');
-});
-```
-
-
-
-
-Any plugin activation / deactivation will trigger a callback. To be able to listen to plugin events you need to implement a methods from callback `DytePluginEventsListener`. You can subscribe to this events by calling meeting.addPluginEventsListener(dytePluginEventsListener).
-
-```kotlin
-meeting.addMeetingRoomEventsListener(object :
- DyteMeetingRoomEventsListener {
- override fun onPluginActivated(plugin: DytePlugin) {
- super.onPluginActivated(plugin)
- // your code to handle plugin activation
- }
-
- override fun onPluginDeactivated(plugin: DytePlugin) {
- super.onPluginDeactivated(plugin)
- // your code to handle plugin de-activation
- }
- }
-)
-```
-
-
-
-
-Any plugin activation / deactivation will trigger a callback. To be able to listen to plugin events you need to implement a methods from callback `DytePluginEventsListener`. You can subscribe to this events by calling meeting.addPluginEventsListener(dytePluginEventsListener).
-
-```swift
-extension MeetingViewModel: DytePluginEventsListener {
-
- func onPluginActivated(plugin: DytePlugin) {
- // your code to handle plugin activation
- }
-
- func onPluginDeactivated(plugin: DytePlugin) {
- // your code to handle plugin activation
- }
-
-}
-```
-
-
-
-
-
- Basics Guide
-
diff --git a/docs/guides/capabilities/plugins/docshare.mdx b/docs/guides/capabilities/plugins/docshare.mdx
deleted file mode 100644
index b8fb5aba07..0000000000
--- a/docs/guides/capabilities/plugins/docshare.mdx
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: 'Plugin: Document Sharing'
----
-
-# Document Sharing
-
-DocShare allows you to share, view documents and annotate the documents collaboratively.
-The plugin exposes a few APIs to control the document viewer
-
-## Loading a document
-
-You can specify the following parameters:
-
-- `followId`: It syncs the zoom and scroll values of the userId specified to other users (including the recording)
-- `document` : You can also specify the document that you wish to open beforehand.
-
-```ts
-const id = '317b4f59-40f0-46af-90d6-1ed6035bb477';
-const docsharePlugin = meeting.plugins.all.get(id);
-docsharePlugin.on('ready', () => {
- // Ensure the isHost check is only there for one participant
- // since the recording can't follow multiple people
- const isHost = meeting.self.presetName === '';
- if (!isHost) return;
- docsharePlugin.sendData({
- eventName: 'config',
- data: {
- eventName: 'config',
- document: '',
- followId: meeting.self.userId,
- },
- });
-});
-```
-
-Now whenever the plugin is loaded it will use the specified parameters.
-To open the plugin you can call
-
-```ts
-docsharePlugin.activate();
-```
-
-### File format support
-
-Supports PPTX, PPT, DOC, PDF
-
-
- Plugin: Document Sharing Guide
-
diff --git a/docs/guides/capabilities/plugins/rendering.mdx b/docs/guides/capabilities/plugins/rendering.mdx
deleted file mode 100644
index 6b81336e51..0000000000
--- a/docs/guides/capabilities/plugins/rendering.mdx
+++ /dev/null
@@ -1,102 +0,0 @@
----
-sidebar_position: 2
----
-
-# Rendering
-
-## Usage
-
-### Methods / Properties
-
-Here is an introduction on the basics of rendering plugins in your UI:
-
-
-
-
-Once a plugin is activated you can render them using an `
-
-
-- Setup an iframe element
-
-```jsx
-const PluginView = () => {
- const pluginEl = useRef();
-
- return ;
-};
-```
-
-- Send reference of iframe to the plugin
-
-```jsx {4-8}
-const PluginView = (activatedPlugin) => {
- const pluginEl = useRef();
-
- useEffect(() => {
- if (activatedPlugin) {
- activatedPlugin.addPluginView(pluginEl.current);
- }
- }, [activatedPlugin]);
-
- return ;
-};
-```
-
-- Render all activated plugins
-
-```jsx
-const Meeting = () => {
- const activatedPlugins = useDyteSelector((m) => m.plugins.active);
- return (
- {
- activatedPlugins.toArray()
- .map((p) => )
- }
- )
-}
-```
-
-
-
-
-Once a plugin is activated, use the `PluginView` widget to get a Platform View which renders the plugin
-
-```dart {4}
-SizedBox(
- height: context.height,
- child: InteractiveViewer(
- child: PluginView(widget.plugin),
- ),
- )
-```
-
-
-
-
-
- Rendering Guide
-
diff --git a/docs/guides/capabilities/plugins/streamer.mdx b/docs/guides/capabilities/plugins/streamer.mdx
deleted file mode 100644
index c842c0be22..0000000000
--- a/docs/guides/capabilities/plugins/streamer.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: 'Plugin: Streamer'
----
-
-# Video Player
-
-Streamer allows you to share & watch your favorite videos together. The plugin exposes a few APIs to control the video playback
-
-## Loading a video
-
-You can specify the following parameters:
-
-- `link` : URL to the video you wish to play
-- `loop` : Specify video behavior, if you want to restart the video once it has ended.
-- `hideBack` : Prevents users from closing the video.
-
-Any user can send the parameters to the plugin
-
-```ts
-const id = '20b1dd35-4500-4315-80aa-bbbaa2083f2b';
-const streamerPlugin = meeting.plugins.all.get(id);
-streamerPlugin.on('ready', () => {
- streamerPlugin.sendData({
- eventName: 'config',
- data: {
- eventName: 'config',
- link: 'https://www.youtube.com/watch?v=UGl4XZ_zr5w&t=5s',
- loop: true,
- hideBack: true,
- },
- });
-});
-```
-
-Now whenever the plugin is loaded it will use the specified parameters.
-To open the plugin you can call
-
-```ts
-streamerPlugin.activate();
-```
-
-
- Plugin: Streamer Guide
-
diff --git a/docs/guides/capabilities/plugins/whiteboard.mdx b/docs/guides/capabilities/plugins/whiteboard.mdx
deleted file mode 100644
index 6d575999c4..0000000000
--- a/docs/guides/capabilities/plugins/whiteboard.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: 'Plugin: Whiteboard'
----
-
-# Whiteboard
-
-Whiteboard allows you to write, draw and ideate collaboratively. Built on top of tldraw
-
-## Saving the whiteboard
-
-You can save the whiteboard from the UI or you can use the API
-
-```ts
-const id = 'ae79b269-24ca-4f8a-8112-f96084c8c19a';
-const plugin = meeting.plugins.all.get(id);
-
-plugin.sendData({
- eventName: 'save-board',
- data: { eventName: 'save-board' },
-});
-```
-
-## Customization
-
-You can customization the following parameters:
-
-- `follow`: Peer ID of the participant you want this user to follow.
-- `role`: The role you want the current user to assume in the plugin. This field can have two values: `editor` , `viewer`. The default value for this field is `editor`.
-- `autoScale`: Scales the user's board to view all content when another user draws on it. The default value for this field is `false`.
-
-```ts
-meeting.participants.on('participantJoined', (participant) => {
- if (participant.id !== '') return;
- plugin.sendData({
- eventName: 'config',
- data: {
- eventName: 'config',
- follow: '',
- role: 'viewer',
- autoScale: true,
- },
- });
-});
-```
-
-
- Plugin: Whiteboard Guide
-
diff --git a/docs/guides/capabilities/polls/_category_.json b/docs/guides/capabilities/polls/_category_.json
deleted file mode 100644
index 4d04e892b8..0000000000
--- a/docs/guides/capabilities/polls/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Polls",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/polls/getting_started.mdx b/docs/guides/capabilities/polls/getting_started.mdx
deleted file mode 100644
index cd886cb169..0000000000
--- a/docs/guides/capabilities/polls/getting_started.mdx
+++ /dev/null
@@ -1,581 +0,0 @@
-# Getting started with Polls
-
-`Poll` objects exist within a meeting and can only be accessed through a meeting object. This object provides methods to create polls, vote, and more.
-
-
-
-
-`meeting.polls.items` returns an array of all polls created in a meeting, where each element is an object of type `Poll` which is defined in the following manner.
-
-The Poll object has the following properties:
-
-| Property | Description |
-| --------------- | ------------------------------------------------------------------------- |
-| id | Unique ID assigned to each poll |
-| question | Question of the poll |
-| options | Array of PollOption object, contains all the options to the poll question |
-| anonymous | To hide the votes of each user even after completion (false by default) |
-| hideVotes | Hide votes until the voting is complete (enabled if anonymous is enabled) |
-| createdBy | Name of creator of the poll |
-| createdByUserId | ID of creator of the poll |
-| voted | List of participant IDs who have voted on the poll |
-
-The `PollOption` object has the following properties:
-
-| Property | Description |
-| -------- | ------------------------------------------------------------------------------------ |
-| text | Contains the option text |
-| votes | List of PollVote object, which contains the id and name of the voters of this option |
-| count | Int of number of votes given to this option |
-
-
-
-
-`meeting.polls.items` returns an array of all polls created in a meeting, where each element is an object of type `Poll` which is defined in the following manner.
-
-The Poll object has the following properties:
-
-| Property | Description |
-| --------------- | ------------------------------------------------------------------------- |
-| id | Unique ID assigned to each poll |
-| question | Question of the poll |
-| options | Array of PollOption object, contains all the options to the poll question |
-| anonymous | To hide the votes of each user even after completion (false by default) |
-| hideVotes | Hide votes until the voting is complete (enabled if anonymous is enabled) |
-| createdBy | Name of creator of the poll |
-| createdByUserId | ID of creator of the poll |
-| voted | List of participant IDs who have voted on the poll |
-
-The `PollOption` object has the following properties:
-
-| Property | Description |
-| -------- | ------------------------------------------------------------------------------------ |
-| text | Contains the option text |
-| votes | List of PollVote object, which contains the id and name of the voters of this option |
-| count | Int of number of votes given to this option |
-
-
-
-
-The meetings polls object can be accessed using `dyteClient.polls`. `dyteClient.polls.polls` returns an array of all polls created in a meeting, where each element is an object of type DytePollMessage.
-
-The `DytePollMessage` has the following properties:
-
-| Property | Description |
-| --------- | ----------------------------------------------------------------------------- |
-| id | Unique ID assigned to each poll |
-| question | Question of the poll |
-| anonymous | To hide the votes of each user even after completion (false by default) |
-| hideVotes | Hide votes until the voting is complete (enabled if anonymous is enabled) |
-| createdBy | Name of creator the poll |
-| options | Array of DytePollOption object, contains all the options to the poll question |
-
-The `DytePollOption` has the following properties:
-
-| Property | Description |
-| -------- | ---------------------------------------------------------------------------- |
-| text | Contains the option text |
-| votes | List of DytePollVote object, which contains info about voters of this option |
-| count | Int of number of votes given to this option |
-
-The `DytePollVote` has the following properties:
-
-| Property | Description |
-| -------- | ----------------- |
-| id | ID of the voter |
-| name | Name of the voter |
-
-
-
-
-`meeting.polls.items` returns an array of all polls created in a meeting, where each element is an object of type `Poll` which is defined in the following manner.
-
-The Poll object has the following properties:
-
-| Property | Description |
-| --------------- | ------------------------------------------------------------------------- |
-| id | Unique ID assigned to each poll |
-| question | Question of the poll |
-| options | Array of PollOption object, contains all the options to the poll question |
-| anonymous | To hide the votes of each user even after completion (false by default) |
-| hideVotes | Hide votes until the voting is complete (enabled if anonymous is enabled) |
-| createdBy | Name of creator of the poll |
-| createdByUserId | ID of creator of the poll |
-| voted | List of participant IDs who have voted on the poll |
-
-The `PollOption` object has the following properties:
-
-| Property | Description |
-| -------- | ------------------------------------------------------------------------------------ |
-| text | Contains the option text |
-| votes | List of PollVote object, which contains the id and name of the voters of this option |
-| count | Int of number of votes given to this option |
-
-
-
-
-`meeting.polls.polls` returns an array of all polls created in a meeting, where
-each element is an object of type `DytePollMessage`.
-
-The type `DytePollMessage` is the main class for any poll in Dyte. It also
-contains list of `DytePollOption` which are options for a given poll. And every
-`DytePollOption` has list of votes inside of it. Votes are objects of class
-`DytePollVote` which internally has id and name of the vote.
-
-One can easily create, vote and view polls by listening to callbacks on
-`meeting` object.
-
-
-
-
-`meeting.polls.polls` returns an array of all polls created in a meeting, where each element is an object of type `DytePollMessage`
-
-The type `DytePollMessage` is the main class for any poll in Dyte. It also contains list of `DytePollOption` which are options for a given poll. And every `DytePollOption` has list of votes inside of it. Votes are objects of class DytePollVote which internally has id and name of the vote.
-
-
-
-
-## Creating a new Poll
-
-### Using the Core SDK
-
-The `Polls` object gives a create function to create a new poll. It accepts the following parameters:
-
-| Param | Type | Default Value | Required | Description |
-| --------- | -------- | ------------- | -------- | ------------------------------------------ |
-| question | string | - | yes | The question that is to be voted for. |
-| options | string[] | - | yes | The options of the poll. |
-| anonymous | boolean | false | no | If true, the poll votes are anonymous. |
-| hideVotes | boolean | false | no | If true, the votes on the poll are hidden. |
-
-Check the implementation in your desired framework.
-
-
-
-
-```js
-await meeting.poll.create(
- 'Are you an early bird or a night owl?',
- ['Early bird', 'Night owl'],
- true,
-);
-```
-
-Here is a snippet of a poll where votes are anonymous.
-
-
-
-
-```ts
-await meeting.poll.create(
- 'Are you an early bird or a night owl?',
- ['Early bird', 'Night owl'],
- true,
-);
-```
-
-
-
-
-```dart
-dyteClient.polls.create(
- question: "Are you an early bird or a night owl?",
- options: ["Early bird", "Night owl"],
- anonymous: true,
- hideVotes: false,
-);
-```
-
-
-
-
-```jsx
-await meeting.poll.create(
- 'Are you an early bird or a night owl?',
- ['Early bird', 'Night owl'],
- true,
-);
-```
-
-
-
-
-```kotlin
-meeting.poll.create(
- "Are you an early bird or a night owl?",
- listOf("Early bird", "Night owl"),
- true,
- false
-)
-```
-
-
-
-
-```swift
-meeting.polls.create(
- question: "Are you an early bird or a night owl?",
- options: ["Early bird", "Night owl"],
- anonymous: true,
- hideVotes: false
-)
-```
-
-
-
-
-### Using the REST API
-
-You can also create a poll using the [Create a Poll](/api#/operations/CreatePoll) REST API. This can be used to create a new poll in an active meeting session. In the request, make sure to provide the meeting ID of the session.
-
-To familiarize yourself with the Dyte REST APIs, we recommend exploring the [Dyte REST API Quickstart Guide](https://docs.dyte.io/guides/rest-apis/quickstart).
-
-#### Request
-
-Here is a sample request, make sure to replace the meeting ID and the authorization header with your own.
-
-```bash
-curl --request POST \
- --url https://api.dyte.io/v2/meetings/meeting_id/active-session/poll \
- --header 'Authorization: Basic ' \
- --header 'Content-Type: application/json' \
- --data '{
- "question": "string",
- "options": [
- "string"
- ],
- "anonymous": true,
- "hide_votes": true
-}'
-```
-
-#### Response
-
-```json
-{
- "success": true,
- "data": {
- "action": "string",
- "poll": {
- "id": "string",
- "question": "string",
- "options": [
- {
- "text": "string",
- "count": 0,
- "votes": [
- {
- "id": "string",
- "name": "string"
- }
- ]
- }
- ],
- "anonymous": true,
- "hide_votes": true,
- "created_by": "string",
- "voted": ["string"]
- }
- }
-}
-```
-
-## Voting on a Poll
-
-The `Poll` object also provides a `vote` method that can be used to register votes on a poll.
-It accepts the following parameters:
-
-| Param | Type | Default Value | Required | Description |
-| ----- | ------ | ------------- | -------- | ------------------------------------------ |
-| id | string | - | yes | The ID of the poll that is to be voted on. |
-| index | number | - | yes | The index of the option. |
-
-
-
-
-```ts
-const poll = meeting.polls.items[0];
-await meeting.poll.vote(poll.id, 0);
-```
-
-
-
-
-```ts
-const poll = meeting.polls.items[0];
-await meeting.poll.vote(poll.id, 0);
-```
-
-
-
-
-```dart
-final poll = dyteClient.polls.polls[0];
-final selectedPollOption = poll.options[0];
-dyteClient.polls.vote(poll, selectedPollOption);
-```
-
-
-
-
-```ts
-const poll = meeting.polls.items[0];
-await meeting.poll.vote(poll.id, 0);
-```
-
-
-
-
-```kotlin
-val poll = meeting.polls.items[0]
-val selectedPollOption = poll.options[0]
-meeting.poll.vote(poll, selectedPollOption)
-```
-
-
-
-
-```swift
-let poll = meeting.polls.items.first
-let selectedPollOption = poll.options.first
-meeting.polls.vote(pollMessage: poll, pollOption: selectedPollOption)
-```
-
-
-
-
-## View Poll Results
-
-The total votes on a poll can be accessed in the following manner where `votes` is an array of all participant ids.
-
-
-
-
-```jsx
-const poll = meeting.polls.items[0];
-const votes = poll.voted;
-```
-
-
-
-
-```tsx
-const poll = meeting.polls.items[0];
-const votes = poll.voted;
-```
-
-
-
-
-```dart
-final poll = dyteClient.polls.polls[0];
-let votes = 0;
-for (final option in poll.options) {
- votes += option.count
-}
-```
-
-
-
-
-```tsx
-const poll = meeting.polls.items[0];
-const votes = poll.voted;
-```
-
-
-
-
-```kotlin
-val poll = meeting.polls.items[0]
-val votes = 0;
-for (option in poll.options){
- votes += option.votes.siz;
-}
-```
-
-
-
-
-```swift
-let poll = meeting.polls.items.first
-let votes = 0;
-for option in poll.options {
- votes += option.votes.count
-}
-```
-
-
-
-
-To get total votes on a particular poll option, the list of all options can be fetched, through which you can get the number of votes on each option.
-
-
-
-
-```jsx
-const poll = meeting.polls.items[0];
-const options = poll.options;
-```
-
-`options` returns an array of objects, where each object is of type [`PollObject`](./).
-
-
-
-
-```tsx
-const poll = meeting.polls.items[0];
-const options = poll.options;
-```
-
-
-
-
-```dart
-final poll = dyteClient.polls.polls[0];
-final options = poll.option;
-```
-
-
-
-
-```tsx
-const poll = meeting.polls.items[0];
-const options = poll.options;
-```
-
-
-
-
-```kotlin
-val poll = meeting.polls.items[0]
-val options = poll.options;
-```
-
-
-
-
-```swift
-let poll = meeting.polls.items.first;
-let options = poll.option;
-```
-
-
-
-
-## Get notified when a poll is created or updated
-
-An event is fired each time `items` in the `Polls Objects` are updated or created. User
-can listen for this to get the updated list of polls. the response object
-contains the following properties.
-
-- `polls`: List of all polls.
-- `newPoll`: A boolean variable which is true when a new poll has been created.
-
-
-
-
-```ts
-meeting.polls.on('pollsUpdate', ({ polls, newPoll }) => {
- console.log(polls, newPoll);
-});
-```
-
-
-
-
-```jsx
-meeting.polls.on('pollsUpdate', ({ polls, newPoll }) => {
- console.log(polls, newPoll);
-});
-```
-
-
-
-
-To be able to receive new poll messages you need to implement a method onPollUpdates() method from callback `DytePollEventsListener`:
-
-To get poll updates, listen to `onPollUpdates()` callback:
-
-```dart
-
-class PollEventsListeners extends DytePollEventsListener {
-
- ...
-
- @override
- void onPollUpdates(List polls) {
- /// code to handle polls
- }
-
- @override
- void onNewPoll(DytePollMessage poll) {
- /// code to handle new poll
- }
-
- ...
-}
-
-```
-
-You can subscribe to this events by `addPollEventsListener` method:
-
-```dart
-dyteClient.addPollEventsListener(PollEventsListeners());
-```
-
-
-
-
-```jsx
-meeting.polls.on('pollsUpdate', ({ polls, newPoll }) => {
- console.log(polls, newPoll);
-});
-```
-
-
-
-
-To be able to receive new poll messages you need to implement a method
-`onPollUpdates()` method from callback `DyteMeetingRoomEventsListener`. You can
-subscribe to this events by calling
-`meeting.addMeetingEventsListener(dyteMeetingRoomEventsListener)`
-
-```kotlin
- meeting.addMeetingRoomEventsListener(object :
- DyteMeetingRoomEventsListener {
- override fun onNewPoll(poll: DytePollMessage) {
- super.onNewPoll(poll)
- // code to handle new poll
- }
-
- override fun onPollUpdates(pollMessages: List) {
- super.onPollUpdates(pollMessages)
- // code to handle polls and their vote updates.
- }
- })
-```
-
-
-
-
-To receive new poll messages, you must implement the` onPollUpdates()` method from the callback `DytePollEventsListener`. You can subscribe to this event by using the meeting.`addMeetingEventsListener(dytePollEventsListener)` method.
-
-```swift
-extension MeetingViewModel: DytePollEventsListener {
- func onNewPoll(poll: DytePollMessage) {
- // code to handle new poll
- }
-
- func onPollUpdates(pollMessages: [DytePollMessage]) {
- // code to handle polls and their vote updates
- }
- }
-```
-
-
-
-
-
- Getting started with Polls Guide
-
diff --git a/docs/guides/capabilities/polls/index.mdx b/docs/guides/capabilities/polls/index.mdx
deleted file mode 100644
index f4bcbc9c6b..0000000000
--- a/docs/guides/capabilities/polls/index.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
-# Polls
-
-Polls can be integrated in all kinds of Dyte meetings ranging from voice to livestream. Dyte's SDK makes it really simple to perform all operations required to create and run a poll. You can choose to use the Core SDK with Dyte's UIKit to create seamless poll interactions in a couple of minutes, or you can also use the Core SDK with your custom components.
-
-The guides walk you through the functionalities that the Core SDK and the UIKit provide you.
-
-1. [Getting started with Polls](./polls/getting_started) walks through creating polls from the Core SDK
-
-2. [Integrating UIKit for Polls](./polls/uikit) helps understand the UI components that can be used to make integrating polls even easier
-
-
- Polls Guide
-
diff --git a/docs/guides/capabilities/polls/uikit.mdx b/docs/guides/capabilities/polls/uikit.mdx
deleted file mode 100644
index 78dd03c3d4..0000000000
--- a/docs/guides/capabilities/polls/uikit.mdx
+++ /dev/null
@@ -1,427 +0,0 @@
-# UIKit components for Polls
-
-Using Dyte's UIKit you can simplify the process of adding polls in your meetings!
-
-### Prerequisites
-
-1. Install Core SDK for your framework
-2. Install UIKit for your framework
-
-## Dyte Poll Form : Create a new poll
-
-If a user has the right set of permissions, the first thing they woulds want to do is create a poll for the meeting. The easiest way to get started is to grab the `Dyte Poll Form` which allows you to create a poll. Check out the implementation based on the framework you are using:
-
-
-
-
-```jsx
-
-
-```
-
-
-
-
-```jsx
- console.log('create poll', e.detail)} />
-```
-
-You can control what happens after a poll is creating by using `onDyteCreatePoll` prop.
-
-
-
-
-```jsx
-
-
-
-```
-
-
-
-
-:::info
-
-This component is not yet available on Flutter.
-
-:::
-
-
-
-
-```jsx
- console.log('create poll', e.detail)} />
-```
-
-
-
-
-:::info
-
-This component is not yet available for android development.
-
-:::
-
-
-
-
-:::info
-
-This component is not yet available for iOS development.
-
-:::
-
-
-
-
-## Dyte Polls : View existing polls
-
-After a user is done creating a poll, they can see all the polls available in a meeting using `Dyte Polls` and enable/disable the polls.
-
-
-
-
-```jsx
-
-
-
-
-
-```
-
-
-
-
-```jsx
-
-```
-
-
-
-
-```jsx
-
-
-
-
-```
-
-
-
-
-:::info
-
-This component is not yet available on Flutter.
-
-:::
-
-
-
-
-```jsx
-
-```
-
-
-
-
-:::info
-
-This component is not yet available for android development.
-
-:::
-
-
-
-
-:::info
-
-This component is not yet available for iOS development.
-
-:::
-
-
-
-
-## Dyte Poll: View poll
-
-The `Dyte Poll` component lets the users view a given poll. It requires a poll object to render the poll.
-
-
-
-
-```jsx
-
-
-
-```
-
-
-
-
-```jsx
- {
- console.log('Voted', e.detail);
- }}
-/>
-```
-
-
-
-
-```jsx
-
-
-
-```
-
-
-
-
-:::info
-
-This component is not yet available on Flutter.
-
-:::
-
-
-
-
-```jsx
- {
- console.log('Voted', e.detail);
- }}
-/>
-```
-
-
-
-
-:::info
-
-This component is not yet available for android development.
-
-:::
-
-
-
-
-:::info
-
-This component is not yet available for iOS development.
-
-:::
-
-
-
-
-## Dyte Polls Toggle
-
-Using the `Dyte Polls Toggle`, one can easily change the visibility of a poll on the screen. It requires the user's meeting object to see the unread polls count badge on the component.
-
-
-
-
-```jsx
-
-
-```
-
-
-
-
-```jsx
-
-```
-
-
-
-
-```jsx
-
-
-
-```
-
-
-
-
-:::info
-
-This component is not yet available on Flutter.
-
-:::
-
-
-
-
-```jsx
-
-```
-
-
-
-
-:::info
-
-This component is not yet available for android development.
-
-:::
-
-
-
-
-:::info
-
-This component is not yet available for iOS development.
-
-:::
-
-
-
-
-
- UIKit components for Polls Guide
-
diff --git a/docs/guides/capabilities/recording/_category_.json b/docs/guides/capabilities/recording/_category_.json
deleted file mode 100644
index a808f974d7..0000000000
--- a/docs/guides/capabilities/recording/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 3,
- "label": "Recording",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/recording/advanced/_category_.json b/docs/guides/capabilities/recording/advanced/_category_.json
deleted file mode 100644
index 89bedd80eb..0000000000
--- a/docs/guides/capabilities/recording/advanced/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 12,
- "label": "Advanced",
- "collapsible": true,
- "collapsed": true
-}
diff --git a/docs/guides/capabilities/recording/advanced/add-watermark.mdx b/docs/guides/capabilities/recording/advanced/add-watermark.mdx
deleted file mode 100644
index b924f3a98b..0000000000
--- a/docs/guides/capabilities/recording/advanced/add-watermark.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Add Watermark to your Recording
-sidebar_position: 4
-slug: /capabilities/recording/add-watermark
-description: >-
- Learn how to add watermarks to your recordings with Dyte's features. Follow
- our guide for effective watermarking and customization.
----
-
-# Add Watermark to Your Recording
-
-Dyte's watermark feature enables you to include an image as a watermark in your recording. To add watermark, configure the following parameters to video_config in the [Start recording API](/api#/operations/start_recording).
-
-| **Parameter** | **Description** |
-| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| URL | Specify the URL of the watermark image |
-| Position | Specify the placement of the watermark, you have the flexibility to choose between left top, right top, left bottom, or right bottom. The default position is set to left top. |
-| Size | Specify the height and width of the watermark in pixels. |
-
-```json
-{
- "video_config": {
- "watermark": {
- "url": "https://test.io/images/client-logos-6.webp",
- "position": "left top",
- "size": {
- "height": 20,
- "width": 100
- }
- }
- }
-}
-```
-
-
- Add Watermark to your Recording Guide
-
-
diff --git a/docs/guides/capabilities/recording/advanced/configure-dyte-bucket-config.mdx b/docs/guides/capabilities/recording/advanced/configure-dyte-bucket-config.mdx
deleted file mode 100644
index 0446210378..0000000000
--- a/docs/guides/capabilities/recording/advanced/configure-dyte-bucket-config.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Disable upload to Dyte's bucket
-sidebar_position: 8
-slug: /capabilities/recording/configure-dyte-bucket-config
-description: >-
- Explore how to configure Dyte bucket settings for recording. Follow our guide
- for effective bucket configuration.
----
-
-Once the recording is complete, by default, Dyte uploads all recordings to Dyte's AWS S3 bucket. Additionally, a presigned URL is generated with a 7-day expiry. The recording can be accessed using the [`downloadUrl`](/api/?v=v2#/operations/start_recording) associated with each recording.
-
-However, Dyte provides users with the flexibility to choose whether or not to upload their recordings to Dyte's S3 bucket. If you wish to disable uploads to Dyte's bucket, you can set the `dyte_bucket_config` parameter to false in the [Start Recording endpoint](/api/?v=v2#/operations/start_recording).
-
-For example:
-
-```json
-{
- "dyte_bucket_config": {
- "enabled": false
- }
-}
-```
-
-:::info note
-
-If you haven't specified an external storage configuration and also disabled uploads to Dyte's bucket, then the recording will not be uploaded to any location. It is considered as an invalid recording.
-
-For more information on how to set your extrenal storage configuration, see [Publish Recorded File to Your Cloud Provider](/guides/capabilities/recording/custom-cloud-storage).
-
-:::
-
-
- Manage Dyte's Default Recording Upload Settings Guide
-
-
diff --git a/docs/guides/capabilities/recording/advanced/create-record-app-using-sdks.mdx b/docs/guides/capabilities/recording/advanced/create-record-app-using-sdks.mdx
deleted file mode 100644
index 4364010363..0000000000
--- a/docs/guides/capabilities/recording/advanced/create-record-app-using-sdks.mdx
+++ /dev/null
@@ -1,134 +0,0 @@
----
-title: Create Custom Recording App Using Recording SDKs
-sidebar_position: 12
-slug: /capabilities/recording/create-record-app-using-sdks
-description: >-
- Learn how to create a recording app using Dyte's SDKs. Follow our guide for
- effective app creation and integration.
----
-
-When you join a Dyte meeting, the meeting layout is automatically designed to optimize your experience. This includes focusing on shared content and highlighting active speakers, while participants are shown in small thumbnail views. When you start recording the meeting, it is recorded with the same layout using the default UI kit component called [DyteGrid](/react-ui-kit/components/dyte-grid).
-
-If you wish to have a customized layout for your recording application, Dyte's custom recording SDKs provide the flexibility to tailor the appearance of your recordings according to your preferences. You can choose from options like:
-
-- Show only active speaker view
-- Shared screen with thumbnail gallery view
-- Shared screen with large active speaker thumbnail
-- Shared screen without active speaker or gallery view
-- Customized background for your recording
-- Portrait layout, and so on and so forth
-
-Let's dive in to understand the steps involved in creating a custom appearance for your Dyte recording app.
-
-The custom recording SDKs are used on top of the [UI kit](/react-ui-kit) or [Vanilla JS](/ui-kit). The `DyteRecording` class is used for managing the recording functionality within the SDK.
-
-## Constructor
-
-`constructor(options)`
-
-Creates an instance of the `DyteRecording` class.
-
-### Parameters
-
-`options (object)`: The options object.
-
-| **options (object)** | **Description** |
-| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `options.waitTimeMs (number)` | The time (in milliseconds) to wait after all peers have left before leaving the meeting. This option is ignored if `autoStop` is set to true. |
-| `options.autoStart (boolean)` | Set to true if you want to manually call the `startRecording` function. By default, the `autoStart` parameter is set to `true`. If you wish to delay the start of the recording, you can set the value of this parameter to `false`. In that case, you can manually call the `startRecording()` function later. Note that there is a timeout of 2 minutes associated with the `startRecording()` method. If this method is not called within 2 minutes of the WebSocket connection being established, the recording process will encounter an error. |
-| `options.autoStop (boolean)` | Set to true if you want to disable automatic peer leave and manually call the `stopRecording` function. |
-| `options.scanInterval (number)` | The interval (in milliseconds) between scans for automatic peer leave. |
-| `options.devMode (boolean)` | Set to true to enable development mode, which enables logs and disables certain functionality. Also you must ensure that this is set this to true when testing your recording-app locally. |
-
-### Methods
-
-```js
-init(client: DyteClient)
-```
-
-Initiates the SDK by providing a `DyteClient` object. Call this after creating the meeting object and before calling `meeting.joinRoom()`.
-
-```js
-startRecording();
-```
-
-Manually starts the recording. Ensure that `autoStart` is passed as true in the constructor options.
-
-```js
-stopRecording();
-```
-
-Manually stops the recording. Ensure that `autoStop` is passed as true in the constructor options.
-
-```js
-cleanup();
-```
-
-Performs cleanup tasks after leaving the meeting, such as clearing added listeners and closing WebSocket connections.
-
-## Usage Example
-
-Perform the following steps to create the recording app for your Dyte meetings.
-
-### Step 1: Install the SDK
-
-```js
-npm i @dytesdk/recording-sdk
-```
-
-### Step 2: Import the `DyteRecording` object
-
-```js
-import { DyteRecording } from '@dytesdk/recording-sdk';
-```
-
-### Step 3: Create the `DyteRecording` object
-
-```js
-const recordingSdk = new DyteRecording(options);
-```
-
-### Step 4: Initialize the recording SDK
-
-Call `init` after creating the meeting object and before `joinRoom` is called.
-
-```js
-// Call this after you have called initMeeting
-await recordingSdk.init();
-```
-
-### (Optional) Step 5: Manually start the recording
-
-To manually start the recording, call the `startRecording()` function. For example, you want to start a recording after you have loaded your UI content in the app and `autoStart` is not set to true. In such cases, you can manually call the `startRecording()` function when you are ready to begin the recording.
-
-```js
-// This throws an exception if autoStart is set to false.
-await recordingSdk.startRecording();
-```
-
-### (Optional) Step 6: Manually stop the recording
-
-To manually stop the recording, use `stopRecording`.
-
-```js
-// This throws an exception if autoStop is set to false.
-await recordingSdk.stopRecording();
-```
-
-Once `stopRecording` is called, the recorder in your recording app will exit after a few seconds. After this point, you won't be able to perform any further actions within your recording app.
-
-### Step 7: Deploy the recording app
-
-Once you've created the app, deploy it using a platform like [Vercel](https://vercel.com/docs/concepts/get-started). Make sure to note the URL where you have deployed the app, as you will have to enter this URL in Dyte's recording API.
-
-### Step 8: Specify the custom URL
-
-In the [Start Recording a Meeting](/api#/operations/start_recording) API, provide the custom URL (obtained from the previous step) to indicate the location of your deployed app.
-
-
- Create Custom Recording App Using Recording SDKs Guide
-
-
diff --git a/docs/guides/capabilities/recording/advanced/interactive-recording.mdx b/docs/guides/capabilities/recording/advanced/interactive-recording.mdx
deleted file mode 100644
index 47934d373e..0000000000
--- a/docs/guides/capabilities/recording/advanced/interactive-recording.mdx
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: Interactive Recordings with Timed Metadata
-sidebar_position: 11
-slug: /capabilities/recording/interactive-recording
-description: >-
- Learn how to enable interactive recording with Dyte's capabilities. Follow our
- guide for effective configuration and management.
----
-
-Dyte's interactive recording feature allows you to add timed metadata to your video stream. Timed metadata serves as cue points for clients to display information and trigger time-aligned actions. The metadata is available to clients in the form of [ID3](https://en.wikipedia.org/wiki/ID3) tags on the playback timeline.
-
-## What is interactive recording?
-
-Ever wondered how Netflix displays small images on the seek bar or how additional content is shown while watching a cricket match on Hotstar? It's all metadata inserted at a specific time inside the video feed itself, which is called timed metadata.
-
-Timed metadata is metadata with timestamps. It refers to digital markers added to a video file to provide additional context and information at specific points in the content range. These data points can be inserted into a stream programmatically, using the `interactive_config` in the [Start recording a meeting API](/api#/operations/start_recording).
-
-Once Dyte processes the stream, the timed metadata gets synchronized with the audio and video frames. This metadata is available to all viewers during playback at the same time relative to the stream. The timecode acts as a cue point and can trigger specific actions based on the data. For example:
-
-These features are made possible through the use of ID3 tags that are embedded in the video segments, making them available in the recorded video.
-
-## Add interactivity to your Dyte recordings
-
-To add interactivity to your Dyte recording, perform the following steps:
-
-1. In the [Start recording a meeting API](/api#/operations/start_recording), pass the `interactive_config` parameter.
-
-This parameter enables you to add timed metadata to your recordings, which is made available to clients in HLS format via ID3 tags. The output files are packaged as a tar file.
-
-2. In [DyteClient](/web-core/reference/DyteClient), call the `broadcastMessage` method with the parameters, `ID3` (as a string) and `yourData` (the data you want to send as timed metadata) on the [participants](/web-core/reference/DyteClient#module_DyteClient+participants) object.
-
-```ts
-client.participants.broadcastMessage(“ID3Data”, yourData);
-```
-
-:::info note
-
-This action should only be performed after the recording has been initiated and the system is in the `RECORDING` state. If performed earlier, any associated ID3 tags may be lost.
-
-The recommended time to perform this action is after the recording indicator has been displayed for 3 to 4 seconds.
-
-:::
-
-3. To stop sending the data, call the following method. Once you make this call, you will no longer be able to send additional ID3 data.
-
-```ts
-client.participants.broadcastMessage(“ID3Data”,”CLOSE_TRANSPORT”)
-```
-
-If you do not pass this parameter, the ID3 metadata stream will automatically be closed when the recording is stopped.
-
-4. Once the recording is completed, you can retrieve the tar file that contains video segments and a playlist file. The `download_url` provides the link to the tar file. Below is an example screenshot of a tar file:
-
-
-
-It's also important to note that the length of each segment depends on the frames of the video. Therefore, each segment may not have the same length, although it is typically close to the specified segment length when the recording was started. By default, the segment length is set to 10 seconds.
-
-5. You can play the stream using the [`hls.js`](https://github.com/video-dev/hls.js/).
-
-```js
-const onFragChanged = (_) => {
- // We first try to find the right metadata track.
- // https://developer.mozilla.org/en-US/docs/Web/API/TextTrack
- const textTrackListCount = videoEl.textTracks.length;
- let metaTextTrack;
- for (let trackIndex = 0; trackIndex < textTrackListCount; trackIndex++) {
- const textTrack = videoEl.textTracks[trackIndex];
- if (textTrack.kind !== 'metadata') {
- continue;
- }
- textTrack.mode = 'showing';
- metaTextTrack = textTrack;
- break;
- }
- if (!metaTextTrack) {
- return;
- }
- // Add an oncuechange listener on that track.
- metaTextTrack.oncuechange = (event) => {
- let cue = metaTextTrack.activeCues[metaTextTrack.activeCues.length - 1];
- console.log(cue.value.data);
- };
-};
-// listen on Hls.Events.FRAG_CHANGED from hls.js
-hls.on(Hls.Events.FRAG_CHANGED, onFragChanged);
-```
-
-
- Interactive Recordings with Timed Metadata Guide
-
-
diff --git a/docs/guides/capabilities/recording/advanced/manage-recording-config-hierarchy.mdx b/docs/guides/capabilities/recording/advanced/manage-recording-config-hierarchy.mdx
deleted file mode 100644
index 3952180272..0000000000
--- a/docs/guides/capabilities/recording/advanced/manage-recording-config-hierarchy.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Manage Recording Config Precedence Order
-sidebar_position: 5
-slug: /capabilities/recording/manage-recording-config-hierarchy
-description: >-
- Learn how to manage recording configuration hierarchy with Dyte's
- capabilities. Follow our guide for effective hierarchy management.
----
-
-This document provides an overview of the precedence structure for managing recording configurations within our system. It explains how various configuration levels interact and prioritize settings. The recording configuration can be defined at three different levels:
-
-- [Start recording a meeting API](/api#/operations/start_recording)
-- [Create a meeting API](/api#/operations/create_meeting) and
-- [Organization level](https://dev.dyte.io/recordings) specified via developer portal
-
-## Understand Recording Configuration Precedence
-
-To comprehend the precedence of recording configurations, it is important to delve into the following details. This understanding becomes crucial when dealing with multiple configurations set through APIs and the developer portal.
-
-| Precedence | Config | Description |
-| ---------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 1 | [Start recording API](/api#/operations/start_recording) configs | Highest priority in the system. Any settings defined here will take precedence over other configurations. |
-| 2 | [Create a meeting API](/api#/operations/create_meeting) configs | Second level of priority in the system. Settings here will supersede Org level config but not Start recording a meeting API configs. |
-| 3 | [Organization level](https://dev.dyte.io/recordings) specified via developer portal | Lowest priority in the system. Settings defined here will be overridden by both Start recording a meeting API config and Create a meeting API config. |
-
-## Example Scenario
-
-To illustrate the precedence order in action, consider the following scenario for the same meeting:
-
-1. Org Level Config specifies that recordings to be stored in the AWS bucket.
-
-2. Create a Meeting API sets recordings to be stored in the GCP storage bucket using the H264 codec.
-
-3. Start recording a meeting API is configured to store recordings in the DigitalOcean's Spaces bucket using the VP8 codec.
-
-In this scenario, the Start recording a meeting API takes precedence over the Create a Meeting API Config and Org Level Config. As a result, the meeting's recording will be stored in the DigitalOcean's Spaces bucket using VP8 codec, regardless of the defaults set at other levels.
-
-
- Manage Recording Config Precedence Order Guide
-
-
diff --git a/docs/guides/capabilities/recording/configure-audio-codec.mdx b/docs/guides/capabilities/recording/configure-audio-codec.mdx
deleted file mode 100644
index 77cdb934bd..0000000000
--- a/docs/guides/capabilities/recording/configure-audio-codec.mdx
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: Set Audio Configurations
-sidebar_position: 7
-description: >-
- Explore how to configure audio codecs in Dyte's recording capabilities. Follow
- our guide for effective codec configuration.
----
-
-Recording audio requires configuring the **codec** and **channel** parameters to guarantee optimal quality and compatibility with your application's demands.
-The codec determines the encoding format for the audio, and the channel specifies the number of audio channels for the recording.
-You can modify the following `audio_config` used for recording the audio:
-
-## Codec
-
-Codec determines the audio encoding format for recording, with MP3 and AAC being the supported formats.
-
-- AAC (default)
-- MP3
-
-:::info note
-
-If [VP8](/guides/capabilities/recording/configure-codecs) is selected for `video_config`, changing `audio_config` is not allowed. In this case, the codec in the `audio_config` is automatically set to `vorbis`.
-
-:::
-
-## Channel
-
-Audio signal pathway within an audio file that carries a specific sound source. The following channels are supported:
-
-- stereo (default)
-- mono
-
-You can modify the configs by specifying it in the `audio_config` field in the [Start Recording API](/api#/operations/start_recording), for example:
-
-```json
-{
- "audio_config": {
- "codec": "AAC"
- "channel": "stereo"
- }
-}
-```
-
-## Download Audio Files
-
-The audio file for your recording is generated only if you passed the `audio_config` parameters in the [Start Recording API](/api/?v=v2#/operations/start_recording).
-
-When the recording is completed, you can use the `audio_download_url` provided in the response body of the [Fetch details of a recording endpoint](/api/?v=v2#/operations/get_one_recording) to download and export the audio file.
-
-
- Set Audio Configurations Guide
-
-
diff --git a/docs/guides/capabilities/recording/configure-codecs.mdx b/docs/guides/capabilities/recording/configure-codecs.mdx
deleted file mode 100644
index cdfa1aa3c5..0000000000
--- a/docs/guides/capabilities/recording/configure-codecs.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Configure Video Settings
-sidebar_position: 6
-description: >-
- Learn how to configure codecs for recording in Dyte's capabilities. Follow our
- guide for effective codec configuration.
----
-
-Video codecs are software programs that compress and decompress digital video data for transmission, storage, or playback. Configuring the appropriate video codec can help reduce file size, enhance video quality, and ensure compatibility with different playback devices.
-
-## Configure Codecs
-
-You can modify the codec which is used for recording the videos. We currently
-support the following codecs:
-
-- **H264 (default)**: Records video using the H.264 codec with 1280px \* 720px
- resolution, and 384 kbps AAC audio in MP4 container.
-- **VP8**: Records video using the the VP8 codec with 1280px \* 720px
- resolution, and Vorbis codec audio in WebM container.
-
-You can change the codec by specifying the codec in the `video_config` field in
-the [Start Recording endpoint](/api/?v=v2#/operations/start_recording), for
-example:
-
-```json
-{
- "video_config": {
- "codec": "H264"
- }
-}
-```
-
-## Download Video Files
-
-The video file for your recording is generated only if you passed the `video_config` parameters in the [Start Recording API](/api/?v=v2#/operations/start_recording).
-
-When the recording is completed, you can use the `downloadUrl` provided in the response body of the [Start Recording endpoint](/api/?v=v2#/operations/start_recording) to download and export the video file.
-
-
- Configure Video Settings Guide
-
-
diff --git a/docs/guides/capabilities/recording/custom-cloud-storage.mdx b/docs/guides/capabilities/recording/custom-cloud-storage.mdx
deleted file mode 100644
index 60e8fcd609..0000000000
--- a/docs/guides/capabilities/recording/custom-cloud-storage.mdx
+++ /dev/null
@@ -1,162 +0,0 @@
----
-title: Upload Recording to Your Cloud
-sidebar_position: 4
-description: >-
- Explore how to set up custom cloud storage for Dyte's recording. Follow our
- guide for effective configuration and integration.
----
-
-You can pass an optional object `storage_config` in the start recording request
-to publish the recording directly to your cloud provider. If a `path` is
-specified, the recorded video will be stored there, otherwise the default is the
-root of the directory.
-
-The filename for recording will be the same as given in `output_file_name`.
-
-:::info note
-
-Ensure that the cloud keys you provide to Dyte APIs have only limited access.
-
-:::
-
-## Set storage configuration
-
-You can configure storage configs for Dyte Recordings in the following ways:
-
-### Set Storage Configuration Details Using Developer Portal
-
-You can specify storage configuration details using Developer Portal for all meetings.
-
-1. In the Developer Portal, go to Recordings.
-2. Click **Setup Storage**.
-3. Specify the details for your cloud provider. We support transferring
- recordings to AWS, Azure, DigitalOcean, and Google Cloud Storage (GCS) buckets.
-
-
-
-
-:::info note
-
-If you have specified storage configuration in the
-[Start Recording](/api/?v=v2#/operations/start_recording) APIs, it will take
-precedence and override the storage details configured in the Developer Portal.
-
-:::
-
-To familiarize yourself with the Dyte REST APIs, we recommend exploring the [Dyte REST API Quickstart Guide](https://docs.dyte.io/guides/rest-apis/quickstart).
-
-### Using the `storage_config` option in the Start Recording API
-
-This allows for the most granular level of control, and lets you specify a
-storage_config for a specific
-[recording started](/api/?v=v2#/operations/start_recording) on a meeting.
-
-```bash
-curl --request POST \
- --url https://api.dyte.io/v2/recordings \
- --header 'Authorization: Basic ' \
- --header 'Content-Type: application/json' \
- --data '{
- "meeting_id": "97440c6a-140b-40a9-9499-b23fd7a3868a",
- "storage_config": {
- "type": "aws",
- "access_key": "your-access-key",
- "secret_key": "your-secret-key",
- "bucket": "your-bucket-name",
- "region": "us-east-1",
- "path": "/"
- }
-}'
-```
-
-To familiarize yourself with the Dyte REST APIs, we recommend exploring the [Dyte REST API Quickstart Guide](https://docs.dyte.io/guides/rest-apis/quickstart).
-
-## Supported Cloud Providers
-
-Currently, the following cloud providers are supported:
-
-### AWS S3
-
-To transfer recordings to the AWS S3 bucket, set the following fields in the
-`storage_config` parameter:
-
-- Type: Specify aws.
-- Access Key: Enter your `aws_access_key_id`.
-- Bucket: Enter your AWS S3 bucket name.
-- (Optional) Path: Specify the path to a sub-folder where recordings should be
- transferred. If this parameter is not passed, recordings will be transferred
- to the root folder of the bucket.
-- Secret: Enter your `aws_secret_access_key`.
-- Region: Specify the region where your bucket is hosted, for example,
- `ap-south-1`.
-
-### Azure Blob Storage
-
-To transfer recordings to the Azure Blob Storage, set the following fields in
-the `storage_config` parameter:
-
-- Type: Specify `azure`.
-- Access key: Enter your azure connection string. For more information on how to
- get the access key, see
- [View account access key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal#view-account-access-keys).
-- Bucket: Enter the name of your container. The container should be in the same
- storage account as the connection string.
-- (Optional) Path: Specify the path to a sub-folder where recordings should be
- transferred. If this parameter is not passed, recordings will be transferred
- to the root folder of the container.
-- Secret: Set to a blank string "".
-- Region: Set to a blank string "".
-
-### DigitalOcean
-
-To transfer recordings to the DigitalOcean Spaces, set the following fields in
-the `storage_config` parameter:
-
-- Type: Specify `digitalocean`.
-- Access key: Enter your digital ocean access key. For more information, see
- [Create DigitalOcean Space and API Key](https://www.digitalocean.com/community/tutorials/how-to-create-a-digitalocean-space-and-api-key).
-- Bucket: Enter the name of your Spaces bucket.
-- (Optional) Path: Specify the path to a sub-folder where recordings should be
- transferred. If this parameter is not passed, recordings will be transferred
- to the root folder of the container.
-- Secret: Enter your Spaces secret.
-- Region: Specify the region where your Spaces bucket is hosted, for example,
- `SGP1`. For more information, see
- [Region Availability Matrix](https://docs.digitalocean.com/products/platform/availability-matrix/).
-
-### Google Cloud Storage (GCS)
-
-To transfer recordings to GCS, set the following fields in
-the `storage_config` parameter:
-
-- Type: Specify `gcs`.
-- Bucket: Enter the name of your Cloud Storage bucket.
-- (Optional) Path: Specify the path to a sub-folder where recordings should be
- transferred. If this parameter is not passed, recordings will be transferred
- to the root folder of the container.
-- Secret: Enter your service account credentials. For more information, see [service account credentials](https://developers.google.com/workspace/guides/create-credentials#service-account).
-- Region: Specify the region where your Cloud Storage bucket is hosted, for example,
- `US multi-region`. For more information, see
- [Bucket locations](https://cloud.google.com/storage/docs/locations).
-
-## Update the Recording File Name
-
-You can change the name of the recording file using the `file_name_prefix` field. The default format for recorded file name is `roomname_timestamp`, but you can add an alphanumeric and underscore prefix to the default file name.
-
-It's important to note that you can only add a prefix to the default format; you can't change the entire file name. For example, if you teach an online physics class at 9 a.m. using Dyte, you could add `Physics_9am` to the file name. `Physics_9am_roomname_timestamp` would be the new file name.
-
-For more information, see [start recording a meeting](/api#/operations/start_recording).
-
-
- Publish Recorded File to Your Cloud Provider Guide
-
-
diff --git a/docs/guides/capabilities/recording/index.mdx b/docs/guides/capabilities/recording/index.mdx
deleted file mode 100644
index c0192e1ad2..0000000000
--- a/docs/guides/capabilities/recording/index.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
-# Recording
-
-Learn how Dyte records the audio and video of multiple users in a meeting, as well as interacts with Dyte plugins, in a single file using composite recording mode.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Recording Guide
-
diff --git a/docs/guides/capabilities/recording/monitor-status.mdx b/docs/guides/capabilities/recording/monitor-status.mdx
deleted file mode 100644
index 8cd02eb161..0000000000
--- a/docs/guides/capabilities/recording/monitor-status.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Monitor Recording Status
-sidebar_position: 5
-description: >-
- Explore how to monitor the status of recordings with Dyte's capabilities.
- Follow our guide for effective monitoring and management.
----
-
-## Recording states
-
-The recording of a meeting can have the following states:
-
-| Name | Description |
-| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| INVOKED | Our backend servers have received the recording request, and the master is looking for a ready worker to assign the recording job. |
-| RECORDING | The meeting is currently being recorded by a worker; note that this will also hold true if the meeting is being live streamed. |
-| UPLOADING | The recording has been stopped and the file is being uploaded to the cloud storage. If you have not specified storage details, then the files will be uploaded only to Dyte's server. Any RTMP and livestreaming link will also stop at this stage. |
-| UPLOADED | The recording file upload is complete and the status webhook is also triggered. |
-| ERRORED | There was an irrecoverable error while recording the meeting and the file will not be available. |
-
-## Fetching the state
-
-There are two ways you can track what state a recording is in or view more
-details about a recording:
-
-### Using the `recording.statusUpdate` webhook
-
-Dyte sends out a `recording.statusUpdate` webhook each time the recording
-transitions between states during its lifecycle. To learn more on what payloads
-are sent along with each state, and how to configure webhooks, see
-[`recording.statusUpdate`](/guides/capabilities/webhooks/webhook-events#recordingstatusupdate).
-
-### By polling HTTP APIs
-
-Alternatively, you can also use the following APIs:
-
-- [Fetch all recordings for an organization](/api/?v=v2#/operations/get_all_recordings):
- This endpoint gets all past, and ongoing recordings linked to a meeting.
-- [Fetch active recording](/api/?v=v2#/operations/get_active_recording): This
- endpoint gets all ongoing recordings of a meeting.
-- [Fetch details of a recording](/api/?v=v2#/operations/get_one_recording): This
- endpoint gets a specific recording using a recording ID.
-
-
- Monitor Recording Status Guide
-
-
diff --git a/docs/guides/capabilities/recording/recording-overview.mdx b/docs/guides/capabilities/recording/recording-overview.mdx
deleted file mode 100644
index 612591a380..0000000000
--- a/docs/guides/capabilities/recording/recording-overview.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Recording Overview
-sidebar_position: 1
-description: >-
- Learn about the overview of recording capabilities with Dyte. Follow our guide
- for an in-depth understanding of recording features.
----
-
-Dyte records the audio and video of multiple users in a meeting, as well as
-interactions with Dyte plugins, in a single file using composite recording mode.
-
-## How does Dyte recording work?
-
-Dyte recordings are powered by anonymous virtual bot users who join your
-meeting, record it, and then upload it to Dyte's AWS S3 bucket. For video files,
-we currently support the
-[H.264](https://en.wikipedia.org/wiki/Advanced_Video_Coding) and
-[VP8](https://en.wikipedia.org/wiki/VP8) codecs.
-
-1. When the recording is finished, it is stored in Dyte's AWS S3 bucket.
-2. Dyte generates a downloadable link from which the recording can be
- downloaded. You can get the download URL using the
- [Fetch details of a recording API](/api?v=v2#/operations/get_one_recording)
- or from the [Developer Portal](https://dev.dyte.io/).
-
- You can receive notifications of recording status in any of the following
- ways:
-
- - Using the
- [`recording.statusUpdate`](/guides/capabilities/webhooks/webhook-events#recordingstatusupdate)
- webhook. Dyte uses webhooks to notify your application when an event
- happens.
- - Using the
- [Fetch active recording API](/api?v=v2#/operations/get_active_recording).
- - You can also view the states of recording from the
- [Developer Portal](https://dev.dyte.io/).
-
-3. Download the recording from the download url and store it to your cloud
- storage. The file is kept on Dyte's server for seven days before being
- deleted.
-
- You can get the download URL using the
- [Fetch active recording API](/api?v=v2#/operations/get_active_recording). or
- from the [Developer Portal](https://dev.dyte.io/).
-
- We support transferring recordings to AWS, Azure, and DigitalOcean storage
- buckets. You can also choose to preconfigure the storage configurations using
- the [Developer Portal](https://dev.dyte.io/) or the
- [Start recording a meeting API](/api/?v=v2#/operations/start_recording).
-
-## Workflow
-
-A typical workflow for recording a meeting involves the following steps:
-
-1. Start a recording using the
- [POST endpoint](/api/?v=v2#/operations/start_recording) or client side SDK / UI.
-2. Stop the recording using the
- [PUT endpoint](/api/?v=v2#/operations/stop_recording) or client side SDK / UI..
-3. Fetch the download URL for downloading the recording using the
- [GET endpoint](/api/?v=v2#/operations/get_one_recording), webhook or from the
- Developer Portal.
-
-
- Recording Overview Guide
-
-
diff --git a/docs/guides/capabilities/recording/start-recording.mdx b/docs/guides/capabilities/recording/start-recording.mdx
deleted file mode 100644
index f478744a52..0000000000
--- a/docs/guides/capabilities/recording/start-recording.mdx
+++ /dev/null
@@ -1,142 +0,0 @@
----
-title: Start Recording a Meeting
-sidebar_position: 2
-description: >-
- Explore how to start recordings with Dyte's recording capabilities. Follow our
- guide for effective recording initiation.
----
-
-This topic explains how to use Dyte to implement composite recording.
-
-Before getting started with this guide, we recommend that you read
-[Getting Started with Dyte](/getting-started) to familiarize yourself with Dyte.
-
-To familiarize yourself with the Dyte REST APIs, we recommend exploring the [Dyte REST API Quickstart Guide](https://docs.dyte.io/guides/rest-apis/quickstart).
-
-There are three ways to start recording a Dyte meeting:
-
-- Using the `record_on_start` flag when
- [creating a meeting](/api/?v=v2#/operations/create_meeting)
-- Using the [Start Recording API](/api/?v=v2#/operations/start_recording)
-- Client side start recording methods on the SDK
-
-Dyte stores recordings for a period of 7 days, after which they will expire and no longer be accessible. It is important to either download a copy of your recording or [set up storage](/guides/capabilities/recording/custom-cloud-storage) before the link expires.
-
-:::info note
-
-1. Our system does not currently support recordings of brief durations that are less than five seconds. In such cases, it is possible that the recording APIs may experience occasional failures. Due to limitations in encoding recordings of short duration, these failures may result in an ERRORED state.
-2. Recording will stop if there are no participants in a meeting for 60 seconds.
-3. The average file size for one hour of recording is approximately 300MB.
-4. There can only be one active recording of a meeting at any given time, unless the `allow_multiple_recording` field is set in the [Start recording a meeting](/api#/operations/start_recording) API.
-5. Maximum recording time is 24 hours. Recording will automatically stop after
- 24 hours have elapsed since the recording's start time. This option can be
- configured to any value up to 24 hours by passing the `max_seconds` parameter
- in the [start recording](/api/?v=v2#/operations/start_recording) API request.
-
-:::
-
-## Using the `record_on_start` parameter
-
-When [creating a meeting](/api/?v=v2#/operations/create_meeting), you can
-specify the `record_on_start` parameter to start the recording as soon as someone joins the
-meeting.
-
-:::info Specify storage_config
-
-If you're using this method to start the recording, you must specify the
-`storage-config' using the [Developer Portal](https://dev.dyte.io/).
-
-:::
-
-### Request
-
-Specify the `record_on_start` parameter. If this flag is true, then a recording
-will be started as soon as a meeting starts on Dyte, i.e, when the first
-participant joins the meeting.
-
-```bash
-curl --request POST \
- --url https://api.dyte.io/v2/meetings \
- --header 'Authorization: Basic ' \
- --header 'Content-Type: application/json' \
- --data '{
- "title": "Lorem Ipsum",
- "preferred_region": "ap-south-1",
- "record_on_start": true
-}'
-```
-
-### Response
-
-```json
-{
- "success": true,
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "preferred_region": "ap-south-1",
- "record_on_start": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
- }
-}
-```
-
-## Using the Start Recording API
-
-You can also start a recording using the
-[Start Recording](/api/?v=v2#/operations/start_recording) API.
-
-Specify the `meeting ID` of the meeting that you want to record.
-
-Use the [Fetch all meetings](/api?v=v2#/operations/get_all_meetings) for an
-organization or [Create a meeting](/api?v=v2#/operations/create_meeting) API to
-get the meeting ID. The API returns a parameter called `id`, which is your
-meeting ID.
-
-### Request
-
-```bash title="Calling Start Recording API"
-curl --request POST \
- --url https://api.dyte.io/v2/recordings \
- --header 'Authorization: Basic ' \
- --header 'Content-Type: application/json' \
- --data '{
- "meeting_id": "97440c6a-140b-40a9-9499-b23fd7a3868a"
-}'
-```
-
-### Response
-
-```json
-{
- "success": true,
- "data": {
- "id": "97440c6a-140b-40a9-9499-b23fd7a3868a",
- "download_url": "http://example.com",
- "download_url_expiry": "2019-08-24T14:15:22Z",
- "download_audio_url": "http://example1.com",
- "file_size": 0,
- "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
- "output_file_name": "string",
- "status": "INVOKED",
- "invoked_time": "2019-08-24T14:15:22Z",
- "started_time": "2019-08-24T14:15:22Z",
- "stopped_time": "2019-08-24T14:15:22Z",
- "storage_config": {
- "type": "aws",
- "secret_key": "string",
- "bucket": "string",
- "region": "us-east-1",
- "path": "string"
- }
- }
-}
-```
-
-
- Start Recording a Meeting Guide
-
-
diff --git a/docs/guides/capabilities/recording/stop-recording.mdx b/docs/guides/capabilities/recording/stop-recording.mdx
deleted file mode 100644
index 61aea562ef..0000000000
--- a/docs/guides/capabilities/recording/stop-recording.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Stop Recording a Meeting
-sidebar_position: 3
-description: >-
- Learn how to stop recordings with Dyte's recording capabilities. Follow our
- guide for effective recording termination.
----
-
-Dyte recordings can be stopped in any of the following ways:
-
-1. **Automatic Stop (Empty meeting)**: A Dyte recording will automatically stop
- if the meeting has no participants for a duration of 1 minute or more. This
- wait time can be customized by contacting Dyte's support team to configure a
- custom value for your organization.
-2. **Automatic Stop (maxSeconds elapsed)**: A recording will automatically stop
- when it reaches the duration specified by the `max_seconds` parameter passed
- while starting the recording, regardless of whether participants are present
- in the meeting. If this parameter is not passed, it defaults to 24 hours
- (86400 seconds).
-3. **Using Stop Recording API**: A recording can also be stopped by passing the
- recording ID & `stop` action to our [Pause/Resume/Stop recording](/api/?v=v2#/operations/pause_resume_stop_recording)
- API.
-
-When a recording is stopped, it transitions to the `UPLOADING` state and then to the `UPLOADED` state after it has been transferred to Dyte's storage and any external storage that has been set up.
-
-
- Stop Recording a Meeting Guide
-
-
diff --git a/docs/guides/capabilities/screensharing/_category_.json b/docs/guides/capabilities/screensharing/_category_.json
deleted file mode 100644
index 791c0989c3..0000000000
--- a/docs/guides/capabilities/screensharing/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "position": 3,
- "label": "Screen Sharing"
-}
diff --git a/docs/guides/capabilities/screensharing/displaying.mdx b/docs/guides/capabilities/screensharing/displaying.mdx
deleted file mode 100644
index 1e6f5af22a..0000000000
--- a/docs/guides/capabilities/screensharing/displaying.mdx
+++ /dev/null
@@ -1,239 +0,0 @@
-# Displaying Screenshare
-
-## Usage
-
-### Events
-
-Once any user starts sharing the screen, use the screenshare view from the UIKit to display the shared screen. The component allows you to nest other components inside it to create a custom layout based on your needs. Check out a the sample usage of UIKit on your prefered platform.
-
-
-
-
-```jsx
-meeting.participants.joined.on('screenShareUpdate', (participant) => {
- if (participant.screenShareEnabled) {
- // participant.screenShareTrack
- } else {
- // handle stop screen share
- }
-});
-```
-
-
-
-
-```jsx
-const { meeting } = useDyteMeeting();
-
-// Array of participants having their screenshare on
-const ssParticipants = useDyteSelector((m) =>
- m.participant.joined.toArray().filter((p) => p.screenShareEnabled),
-);
-
-// or using traditional event listeners
-meeting.participants.joined.on('screenShareUpdate', (participant) => {
- if (participant.screenShareEnabled) {
- // participant.screenShareTrack
- } else {
- // handle stop screen share
- }
-});
-```
-
-
-
-
-```dart
-...
-
-@override
-void onScreenShareStarted(DyteJoinedMeetingParticipant participant) {
- /// handle screen share started of `DyteJoinedMeetingParticipant` participant
-}
-
-@override
-void onScreenShareEnded(DyteJoinedMeetingParticipant participant) {
- /// handle screen share ended of `DyteJoinedMeetingParticipant` participant
-}
-
-...
-```
-
-
-
-
-```jsx
-const { meeting } = useDyteMeeting();
-
-// Array of participants having their screenshare on
-const ssParticipants = useDyteSelector((m) =>
- m.participant.joined.toArray().filter((p) => p.screenShareEnabled),
-);
-
-// or using traditional event listeners
-meeting.participants.joined.on('screenShareUpdate', (participant) => {
- if (participant.screenShareEnabled) {
- // participant.screenShareTrack
- } else {
- // handle stop screen share
- }
-});
-```
-
-
-
-
-```kotlin
-
-private val participantEventsListener = object : DyteParticipantEventsListener {
- override fun onScreenSharesUpdated() {
- super.onScreenSharesUpdated()
-
- ...
- }
- }
-
-```
-
-
-
-
-```swift
-DyteParticipantEventsListener {
- func onScreenSharesUpdated() {
- // your code here to handle screenshares from meeting
- }
- func onScreenShareEnded(participant: DyteMeetingParticipant) {
- // your code here to handle screenshare ended
- }
-
- func onScreenShareStarted(participant: DyteMeetingParticipant) {
- // your code here to handle screenshare started
- }
-}
-```
-
-
-
-
-### Components
-
-This component does not render anything if the participant hasn't start sharing their screen.
-
-
-
-
-```jsx
-
-
-
-
-
-
-
-```
-
-Check out the [reference](/ui-kit/components/dyte-screenshare-view) for more details about the attributes.
-
-To create your own component, you can use the `screenShareTracks` property of the [local user](/web-core/local-user/introduction) to get the list of screen share tracks and control how you want to display them.
-
-
-
-
-```jsx
-import {
- DyteScreenshareView,
- DyteNameTag,
- DyteAudioVisualizer,
-} from '@dytesdk/react-ui-kit';
-
-
-
-
-
- ;
-```
-
-Check out the [reference](/react-ui-kit/components/dyte-screenshare-view) for more details about the props.
-
-To create your own component, you can use the `screenShareTracks` property of the [local user](/react-web-core/local-user/introduction) to get the list of screen share tracks and control how you want to display them.
-
-
-
-
-```jsx
-
-
-
-
-
-
-
-```
-
-Check out the [reference](/angular-ui-kit/components/dyte-screenshare-view) for more details about the attributes.
-
-To create your own component, you can use the `screenShareTracks` property of the [local user](/web-core/local-user/introduction) to get the list of screen share tracks and control how you want to display them.
-
-
-
-
-:::info
-This UI component does not currently exist in the Flutter UIKit.
-:::
-
-
-
-
-```jsx
-import {
- DyteScreenshareView,
- DyteNameTag,
- DyteAudioVisualizer,
-} from '@dytesdk/react-native-ui-kit';
-
-
-
-
-
- ;
-```
-
-Check out the [reference](/react-native/components/dyte-screenshare-view) for more details about the props.
-
-To create your own component, you can use the `screenShareTracks` property of the [local user](/rn-core/local-user/introduction) to get the list of screen share tracks and control how you want to display them.
-
-
-
-
-:::info
-This UI component does not currently exist in the Android UIKit.
-:::
-
-You can create your own component. To do so use the `screenShareTrack` property of the [local user](/android-core/local-user/introduction) to get the list of screen share tracks and control how you want to display them.
-
-
-
-
-:::info
-This UI component does not currently exist in the iOS UIKit.
-:::
-
-You can create your own component. To do so use the `screenShareTrack` property of the [local user](/ios-core/local-user/introduction) to get the list of screen share tracks and control how you want to display them.
-
-
-
-
-
- Displaying Screenshare Guide
-
diff --git a/docs/guides/capabilities/screensharing/enabling.mdx b/docs/guides/capabilities/screensharing/enabling.mdx
deleted file mode 100644
index 1b8886e2f8..0000000000
--- a/docs/guides/capabilities/screensharing/enabling.mdx
+++ /dev/null
@@ -1,282 +0,0 @@
----
-slug: basics
-sidebar_position: 1
----
-
-# Enable/Disable Screenshare
-
-Dyte allows you to enable multiple users to share their screens during a meeting session. To integrate screen sharing in your application, go through the following steps:
-
-## Usage
-
-### Methods/Properties
-
-Once users have the permissions to share their screen, they need to be able to start or stop sharing their screens. Use the Core SDK to enable or disable screen sharing for the user. Follow the implementation based on the development platform you are using.
-
-
-
-
-```jsx
-// Enable Screenshare
-await meeting.self.enableScreenShare();
-
-// Disable Screenshare
-await meeting.self.disableScreenShare();
-```
-
-You can also define defaults for screen sharing during the client initialisation. Check out the [local user](/web-core/local-user/introduction#enable--disable-screen-share) reference for more details.
-
-
-
-
-```jsx
-const { meeting } = useDyteMeeting();
-
-// Enable Screenshare
-await meeting.self.enableScreenShare();
-
-// Disable Screenshare
-await meeting.self.disableScreenShare();
-```
-
-You can also define defaults for screen sharing during the client initialization. Check out the [local user](/web-core/local-user/introduction#enable--disable-screen-share) reference for more details.
-
-
-
-
-```jsx
-const { meeting } = useDyteMeeting();
-
-// Enable Screenshare
-await meeting.self.enableScreenShare();
-
-// Disable Screenshare
-await meeting.self.disableScreenShare();
-```
-
-
-
-
-For iOS you need to complete a one time setup described here [described here](/flutter-core/local-user/screen-share-iOS-guide)
-
-```dart
-// Enable Screenshare
-dyteClient.localUser.enableScreenShare();
-
-// Disable Screenshare
-dyteClient.localUser.disableScreenShare();
-
-// Get current status
-dyteClient.localUser.screenShareEnabled;
-```
-
-
-
-
-```kotlin
-// Enable Screenshare
-meeting.localUser.enableScreenShare();
-
-// Disable Screenshare
-meeting.localUser.disableScreenShare();
-
-// Get current status
-meeting.localUser.screenShareEnabled;
-```
-
-
-
-
-After completing the screensharing setup [described here](/ios-core/local-user/screen-share-guide)
-
-```swift
-// Enable Screenshare
-meeting.localUser.enableScreenShare();
-
-// Disable Screenshare
-meeting.localUser.disableScreenShare();
-
-// Get current status
-meeting.localUser.screenShareEnabled;
-```
-
-
-
-
-### Events
-
-
-
-
-```jsx
-meeting.self.on(
- 'screenShareUpdate',
- ({ screenShareEnabled, screenShareTracks }) => {
- if (screenShareEnabled) {
- // handle screen share start
- } else {
- // handle stop screen share
- }
- },
-);
-```
-
-
-
-
-```jsx
-const { meeting } = useDyteMeeting();
-
-const screenshareEnabled = useDyteSelector((m) => m.self.screenShareEnabled);
-
-// or using traditional event listeners
-meeting.self.on(
- 'screenShareUpdate',
- ({ screenShareEnabled, screenShareTracks }) => {
- if (screenShareEnabled) {
- // handle screen share start
- } else {
- // handle stop screen share
- }
- },
-);
-```
-
-
-
-
-```jsx
-const { meeting } = useDyteMeeting();
-
-const screenshareEnabled = useDyteSelector((m) => m.self.screenShareEnabled);
-
-// or using traditional event listeners
-meeting.self.on(
- 'screenShareUpdate',
- ({ screenShareEnabled, screenShareTracks }) => {
- if (screenShareEnabled) {
- // handle screen share start
- } else {
- // handle stop screen share
- }
- },
-);
-```
-
-
-
-
-### Components
-
-If you don't want to create your own button to toggle screen sharing, use the default button provided by our UI Kits.
-
-
-
-
-```jsx
-
-
-
-
-
-```
-
-
-
-
-```jsx
-import { DyteScreenShareToggle } from '@dytesdk/react-ui-kit';
-
-
-
-
-
- ;
-```
-
-
-
-
-```jsx
-
-
-
-```
-
-
-
-
-```jsx
-import { DyteScreenShareToggle } from '@dytesdk/react-native-ui-kit';
-
-
-
-
-
- ;
-```
-
-
-
-
-## Configuration
-
-### Multiple Screenshare
-
-Configure the number of people who can screenshare at once using preset configuration
-
-
-
-### Preferred panel
-
-On web browsers, a user can choose between sharing a tab, a window or the entire screen. While there is no browser API to restrict to a specific surface type you can set a preferred display surface
-
-
-
-
-```js
-meeting = await DyteClient.init({
- authToken,
- defaults: {
- screenShare: {
- displaySurface: 'window' | 'monitor' | 'browser',
- },
- },
-});
-```
-
-
-
-
-```js
-const [meeting, initMeeting] = useDyteClient();
-
-const join = () => {
- initMeeting({
- authToken,
- defaults: {
- screenShare: {
- displaySurface: 'window' | 'monitor' | 'browser',
- },
- },
- });
-};
-```
-
-
-
-
-
- Enable/Disable Screenshare Guide
-
diff --git a/docs/guides/capabilities/sip.mdx b/docs/guides/capabilities/sip.mdx
deleted file mode 100644
index 1e3a084d78..0000000000
--- a/docs/guides/capabilities/sip.mdx
+++ /dev/null
@@ -1,114 +0,0 @@
----
-title: SIP Interconnect
-sidebar_position: 8
-description: >-
- Dive into Dyte's SIP capabilities with our comprehensive guide. Explore how
- SIP enhances your meeting experience with Dyte.
----
-
-## Introduction
-
-Session Initiation Protocol (SIP) Interconnect refers to the setup where two or more different SIP-based networks or systems are connected to enable the flow of voice traffic between them.
-
-Dyte's SIP Interconnect allows you to bridge VOIP calls from an external third party service to Dyte's WebRTC meetings. That means you can use SIP methodologies to connect with our SIP Servers and have it bridged to participants who might be connected through Dyte Client SDKs (WebRTC)
-
-## Usage
-
-Get your SIP credentials from the [Developer Portal](https://dev.dyte.io/apikeys) in the `API Keys` section
-
-
-
-:::caution
-This feature is in beta. Contact us to enable SIP Interconnect
-
-:::
-
-Once you have the credentials, the simplest way to test the SIP Endpoint is using a SIP Client, you can use clients like Zoiper, Telephone(Mac only), etc.
-
-Now to connect to a specific Dyte `meetingId`, you can dial in using SIP with the given username and password and an URI in the format `sip:@sip.dyte.io`
-
-🎉 That is it, once you dial with the above credentials your SIP call should be bridged with Dyte's WebRTC meeting
-
-## Examples
-
-### Integration with Twilio Voice
-
-To connect with Dyte we are going to use TwiML to perform the SIP dialin.
-
-#### Guide
-
-Steps to follow
-
-1. Get a Twilio account. You can go to https://www.twilio.com/try-twilio and create an account
-2. Buy a VOIP number
-3. Configure the VOIP number to [use webhook to handle any incoming calls](https://www.twilio.com/docs/usage/webhooks/voice-webhooks#incoming-voice-call)
-
-
-
-4. Now when you get a webhook, you can respond with a [TwiML SIP Dial](https://www.twilio.com/docs/voice/twiml/sip) verb with Dyte's SIP configuration
-
-```xml
-
-
-
- sip:meetingId@sip.dyte.io
-
-
-```
-
-#### Express Example
-
-```js
-const express = require('express');
-const VoiceResponse = require('twilio').twiml.VoiceResponse;
-const urlencoded = require('body-parser').urlencoded;
-
-const app = express();
-
-// Parse incoming POST params with Express middleware
-app.use(urlencoded({ extended: false }));
-
-// Create a route that will handle Twilio webhook requests, sent as an
-// HTTP POST to /voice in our application
-app.post('/voice', (request, response) => {
- console.log({ request });
- // Use the Twilio Node.js SDK to build an XML response
- const twiml = new VoiceResponse();
-
- const dial = twiml.dial();
- dial.sip(
- {
- username: '',
- password: '',
- },
- 'sip:@sip.dyte.io',
- );
-
- // Render the response as XML in reply to the webhook request
- response.type('text/xml');
- console.log({ twiml: twiml.toString() });
- response.send(twiml.toString());
-});
-```
-
-Hurray 🎉, You have completed the Twilio Voice setup guide.
-
-
- SIP Interconnect Guide
-
-
diff --git a/docs/guides/capabilities/video/_category_.json b/docs/guides/capabilities/video/_category_.json
deleted file mode 100644
index 3d64a3fd71..0000000000
--- a/docs/guides/capabilities/video/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 1,
- "label": "Video",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/video/add-virtual-background.mdx b/docs/guides/capabilities/video/add-virtual-background.mdx
deleted file mode 100644
index f1e5eaaf08..0000000000
--- a/docs/guides/capabilities/video/add-virtual-background.mdx
+++ /dev/null
@@ -1,146 +0,0 @@
----
-title: Virtual Background & Blur
-sidebar_position: 2
-sidebar_slug: add-virtual-background
----
-
-With a virtual background, you gain the flexibility to modify your background by blurring it, applying solid colors, or incorporating custom images. This capability allows for personalization and customization of your video environment, enabling you to create a more tailored visual experience.
-
-In this guide, we will walk you through the process of adding a custom virtual background to your Dyte meetings. You can add background to any of our supported web applications, [React](/react-ui-kit), [Angular](/angular-ui-kit), [JavaScript](/ui-kit), and so on including UI Kit and core SDKs.
-
-## Installation
-
-To enable the virtual background feature in your application, you first need to install the "Background Transformer" package. The installation process varies depending on the framework or library you are using. Follow the instructions below based on your chosen technology:
-
-For React, Angular, and JavaScript frameworks or libraries, use the following command:
-
-```bash
-npm i @dytesdk/video-background-transformer
-```
-
-If you are using the web-core CDN script bundle, you can add the package by including a script tag in the head section of your HTML file:
-
-```js
-
-```
-
-If you prefer using a specific version of the package, you can modify the source URL by appending the desired version number:
-
-```js
-
-```
-
-Whenever a new minor release of the package is available, you can simply update the version number in the source URL to upgrade to the latest version.
-
-## Initialize
-
-```js
-import DyteVideoBackgroundTransformer from '@dytesdk/video-background-transformer';
-```
-
-If you installed the package using a script tag, the `DyteVideoBackgroundTransformer` will be automatically available for use once the installation process is complete.
-
-2.x versions of DyteVideoBackgroundTransformer use their own rendering mechanism thus require you to disable the default per frame canvas rendering.
-
-```js
-await meeting.self.setVideoMiddlewareGlobalConfig({
- disablePerFrameCanvasRendering: true,
-});
-```
-
-For reference, A middleware such as [company branding](https://github.com/dyte-in/streams-middleware-samples/blob/main/video/company-branding.js) with the default per frame rendering can be rewritten without per frame rendering as [this](https://github.com/dyte-in/streams-middleware-samples/blob/main/video/middleware-with-per-frame-rendering-disabled/company-branding.js).
-
-:::info Note
-If you don't want to disable the default per frame rendering mechanism due to a custom middleware, please use the [legacy version](https://www.npmjs.com/package/@dytesdk/video-background-transformer/v/1.1.8) (README included) of DyteVideoBackgroundTransformer that is compatible with respective web-core 1.x versions.
-:::
-
-Now that we have disabled the per frame rendering, we can initialise the DyteVideoBackgroundTransformer.
-
-```js
-const videoBackgroundTransformer = await DyteVideoBackgroundTransformer.init({
- meeting: meeting,
- segmentationConfig: {
- pipeline: 'canvas2dCpu', // 'webgl2' | 'canvas2dCpu'
- },
-});
-```
-
-To customise DyteVideoBackgroundTransformer configs, please refer to the [video background transfomer](https://www.npmjs.com/package/@dytesdk/video-background-transformer?activeTab=readme) NPM package.
-
-:::info Note
-DyteVideoBackgroundTransformer's 2.x version requires you to use web-core 2.x versions. Please refer to our web-core [upgrade guide](https://docs.dyte.io/web-core/upgrade).
-
-In case you don't want to upgrade SDKs yet, Please use the [legacy version](https://www.npmjs.com/package/@dytesdk/video-background-transformer/v/1.1.8) (README included) of DyteVideoBackgroundTransformer that is compatible with respective web-core 1.x versions.
-:::
-
-## Usage
-
-You can add any image as a background or simply blur your current setting.
-
-### Add an image as a background
-
-To incorporate an image as a background, follow these steps:
-
-1. Create a static background video middleware using the `createStaticBackgroundVideoMiddleware` method provided by the `videoBackgroundTransformer` object.
-2. Replace `IMAGE_LINK_OF_YOUR_LIKING` with the URL of the image you wish to use.
-
-```js
-const videoMiddleware =
- await videoBackgroundTransformer.createStaticBackgroundVideoMiddleware(
- `IMAGE_LINK_OF_YOUR_LIKING`,
- );
-```
-
-For example:
-
-```js
-const videoMiddleware =
- await videoBackgroundTransformer.createStaticBackgroundVideoMiddleware(
- `https://assets.dyte.io/backgrounds/bg-dyte-office.jpg`,
- );
-```
-
-:::info note
-
-Ensure that the URL of the image allows Cross-Origin Resource Sharing (CORS) to avoid canvas tainting issues. If the CORS policy is not allowed for the image, it may result in the video feed getting stuck on a frame or appearing blank.
-
-:::
-
-### Blur the background
-
-To apply a blur effect to your background, follow these steps:
-
-Create a background blur video middleware using the `createBackgroundBlurVideoMiddleware` method provided by the `videoBackgroundTransformer` object.
-
-```js
-const videoMiddleware =
- await videoBackgroundTransformer.createBackgroundBlurVideoMiddleware(10);
-```
-
-Adjust the intensity of the blur effect by changing the value within the parentheses. For example, using `10` will result in a moderate blur effect. You can increase or decrease the value to achieve the desired level of blurring.
-
-To incorporate the configured video middleware into your Dyte meeting, add the middleware to your Dyte meeting.
-
-```js
-meeting.self.addVideoMiddleware(videoMiddleware);
-```
-
-- If your video feed was already active, the specified background image or effect will immediately be applied as the background in your video feed.
-
-- In case the video feed was not active, once you turn it on, the configured background will be automatically applied to your feed.
-
-### Remove the background
-
-To remove the middleware, simply run the following command:
-
-```js
-meeting.self.removeVideoMiddleware(videoMiddleware);
-```
-
-
- Virtual Background Guide
-
-
diff --git a/docs/guides/capabilities/video/picture-in-picture.mdx b/docs/guides/capabilities/video/picture-in-picture.mdx
deleted file mode 100644
index f702b5c063..0000000000
--- a/docs/guides/capabilities/video/picture-in-picture.mdx
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: Picture in Picture
-sidebar_position: 3
-sidebar_slug: picture-in-picture-pip
----
-
-Picture-in-Picture API allows you to render participant's video as a floating tile outside of the current page/app's context.
-
-## Usage
-
-### Initialise
-
-
-
-
-#### Check browser support
-
-Use `meeting.participants.pip.isSupported` to check if the browser supports Picture-in-Picture. The property will return a **boolean** value.
-
-Call `meeting.participants.pip.init()` to activate PIP mode. Optionally you can pass height and width the configure the size of the PIP tile
-
-```js
-meeting.participants.pip.init({
- width: 360,
- height: 360,
-});
-```
-
-
-
-
-#### Check browser support
-
-Use `meeting.participants.pip.isSupported` to check if the browser supports Picture-in-Picture. The property will return a **boolean** value.
-
-Call `meeting.participants.pip.init()` to activate PIP mode. Optionally you can pass height and width the configure the size of the PIP tile
-
-```jsx
-const { meeting } = useDyteMeeting();
-
-meeting.participants.pip.init({
- width: 360,
- height: 360,
-});
-```
-
-
-
-
-### Enable / Disable
-
-Use `meeting.participants.pip.enable()` to enable PIP mode if disabled or `meeting.participants.pip.disable()` to disable PIP mode if enabled.
-
-## Components
-
-### Toggle Button
-
-Our UI Kit contains a button that can enable or disable the PIP
-
-
-
-
-```html
-
-
-```
-
-
-
-
-```html
-
-```
-
-
-
-
-
- Picture in Picture Guide
-
diff --git a/docs/guides/capabilities/video/processing.mdx b/docs/guides/capabilities/video/processing.mdx
deleted file mode 100644
index 0e5e4cef7f..0000000000
--- a/docs/guides/capabilities/video/processing.mdx
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Processing - Middlewares
-sidebar_position: 1
-sidebar_slug: video-processing-middlewares
----
-
-# Video Processing
-
-Dyte's SDK supports middlewares which are pluggable functions that can be applied to both audio and video streams in a meeting. This lets you tap in the media to either observe or modify. This guide covers the following.
-
-1. Create an video middleware
-2. Add or remove video middlewares
-
-You can check out this [sample app](https://github.com/dyte-io/react-samples/tree/main/samples/with-background-transformer) on how to use video middlewares in a React app. You can use a video middleware for
-- Applying filters to the video stream
-- Adding overlays to the video stream
-- Adding backgrounds to the video stream
-
-## Create a video middleware
-
-
-
-
-All you need to do is create a function that returns another function which gets called for every frame of the video. This function can be synchronous or asynchronous. Actions that need to be performed just once when the video turns on can be done in the outer function. If a user turns their video off and on again, the outer function is called again as well. Actions that need to be performed on every frame are to be done in the inner function.
-
-The inner function is called with the **canvas** and the **context** of the video stream. This is the same canvas that is used to render the video stream on the screen. This means that you can perform any operations on the canvas and it will be reflected in realtime. Here is what a middleware function looks like.
-
-```jsx
-async function GrayScaleFilter() {
- console.log('this will be called only once when you turn on the video');
- // Put your async-await API calls AI/ML model fetch here.
-
- /*
- Returned function (having canvas, ctx as params) can be an async function as well.
- We support async as well as normal functions.
- */
- return async (canvas, ctx) => {
- // This will be called 20 - 30 times per second
- ctx.filter = 'grayscale(1)';
- ctx.shadowColor = '#000';
- ctx.shadowBlur = 20;
- ctx.lineWidth = 50;
- ctx.strokeStyle = '#000';
- ctx.strokeRect(0, 0, canvas.width, canvas.height);
- };
-}
-
-meeting.self.addVideoMiddleware(GrayScaleFilter);
-```
-
-
-
-
-## Add or remove video middlewares
-
-
-
-
-Middlewares can be added to a meeting, which is why they are associated with a meeting object. To add a video middleware, you need to call the `addVideoMiddleware`. This method takes in a video middleware function as a parameter, creating this middleware object was covered in the previous section. To remove a video middleware, you need to call the `removeVideoMiddleware` method. This method also takes in the video middleware function as a parameter.
-
-```jsx
-meeting.self.addVideoMiddleware(YourMiddleware);
-
-// once done, in a later section remove the middleware
-meeting.self.removeVideoMiddleware(YourMiddleware);
-```
-
-If you'd instead like to perform operations on the video stream through your own implementation, you can also programatically access the meeting's video stream. This is accessed from the meeting object.
-
-```jsx
-//Somewhere in your codebase
-const meeting = await DyteClient.init(...);
-
-// You can get the video track which everybody will see if your camera is turned on
-meeting.self.videoTrack()
-
-// You can also get raw video track
-meeting.self.rawVideoTrack();
-```
-
-
-
-
-
- Processing - Middlewares Guide
-
diff --git a/docs/guides/capabilities/webhooks/_category_.json b/docs/guides/capabilities/webhooks/_category_.json
deleted file mode 100644
index 291ab5b11e..0000000000
--- a/docs/guides/capabilities/webhooks/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 6,
- "label": "Webhooks",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/webhooks/index.mdx b/docs/guides/capabilities/webhooks/index.mdx
deleted file mode 100644
index 7a8eff786c..0000000000
--- a/docs/guides/capabilities/webhooks/index.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
-# Webhooks and Events
-
-Learn how Dyte uses webhooks to push real-time updates to your applications.
-
-
-
-
-
-
-
-
-
-
- Webhooks and Events Guide
-
-
diff --git a/docs/guides/capabilities/webhooks/signatures.mdx b/docs/guides/capabilities/webhooks/signatures.mdx
deleted file mode 100644
index 87900cc2e3..0000000000
--- a/docs/guides/capabilities/webhooks/signatures.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Verify Webhooks Using Dyte's Signature and Webhook ID
-sidebar_position: 4
-description: >-
- Learn how to use signatures with Dyte's webhook capabilities. Follow our guide
- for effective signature implementation.
----
-
-You can verify webhooks using Dyte's signature and webhook IDs.
-
-## Verify using Dyte's signature
-
-Dyte verifies the webhook events it sends to your endpoints by including a
-signature in the dyte-signature header of each event. This allows you to confirm
-that the event came from Dyte and not a malicious server impersonating Dyte.
-
-Perform the following steps to verify signatures.
-
-### Obtain our public key
-
-Our public key is available at
-`https://api.dyte.io/.well-known/webhooks.json`. You can obtain it by
-making a GET request to this endpoint.
-
-```
-curl -X GET "https://api.dyte.io/.well-known/webhooks.json"
-```
-
-### Check for the signature header
-
-Every incoming request will have a custom `dyte-signature` header. This is the
-value that you should verify in the next step.
-
-### Verify the signature
-
-The signature is based on the `RSA-SHA256` digest of the request payload. You
-can calculate this on your end and compare it against the one supplied in the
-header. If the two values are equal, you can safely consider that this request
-indeed originated from Dyte.
-
-### Sample code
-
-
-
-
-
-```js
-const crypto = require('crypto');
-
-app.post('/webhook', express.json({ type: 'application/json' }), (req, res) => {
- const signature = req.headers['dyte-signature'];
- const payload = req.body;
-
- const isVerified = crypto.verify(
- 'RSA-SHA256',
- Buffer.from(JSON.stringify(payload)),
- dytePublicKey,
- Buffer.from(signature, 'base64'),
- );
- // ... do further processing
-});
-```
-
-
-
-
-
-## Verify using webhook IDs
-
-Webhook IDs are used to uniquely identify a specific webhook endpoint or events. When a webhook is created in a system, the system assigns it a unique ID that can be used to manage and track the webhook's activity. This ID is usually a string of characters or a number that is specific to the webhook and cannot be duplicated.
-
-
-
-Webhook IDs are commonly utilized for the following purposes:
-
-- **Manage the events**: When a webhook is subscribed to a specific event or resource, the webhook ID is used to manage the subscription.
-
-- **Enhanced security**: Typically a signature is added to the request header of the webhook. To further add a security check, Dyte adds a webhook ID to the header. As mentioned earlier, this ID is unique to each webhook subscription and can be used to verify that the request corresponds to the correct subscription.
-
-- **Error handling**: If there is an issue with a webhook request, such as a failed delivery or invalid payload, the webhook ID can be used to identify which specific webhook endpoint caused the error. This can be useful for troubleshooting and resolving issues with webhook integrations.
-
-
- Verify Webhooks Using Dyte's Signature and Webhook ID Guide
-
-
diff --git a/docs/guides/capabilities/webhooks/webhook-events.mdx b/docs/guides/capabilities/webhooks/webhook-events.mdx
deleted file mode 100644
index 871d30f403..0000000000
--- a/docs/guides/capabilities/webhooks/webhook-events.mdx
+++ /dev/null
@@ -1,425 +0,0 @@
----
-title: Webhook Events List
-sidebar_position: 3
-description: >-
- Explore various webhook events and their implementation with Dyte's
- capabilities. Follow our guide for effective event handling.
----
-
-# View Webhook Events List
-
-This topic provides an up-to-date list of all the events that can be used with
-webhooks. Please note that we're constantly adding new events.
-
-All events follow a pattern, `resource.event`. Our goal is to design a
-consistent system that makes things easier to anticipate and code against.
-
-:::info NOTE
-
-Events are subscription-only, which means you **must opt-in to** receive them.
-You **will not** receive updates for event types for which you have not opted
-in.
-
-:::
-
-## List of Events
-
-Following are the events:
-
-### `meeting.started`
-
-This event is received when a meeting starts. i.e: When the first participant
-joins a meeting.
-
-The payload for this event is like the following:
-
-```json
-{
- "event": "meeting.started",
- "meeting": {
- "id": "50c8940e-1b97-402a-97d6-2708b7feca41",
- "sessionId": "05e57591-d89e-45c9-ae44-08dc1eaad0e0",
- "title": "Meeting title",
- "roomName": "lcfvaa-absxch",
- "status": "LIVE",
- "createdAt": "2022-12-13T06:57:09.736Z",
- "startedAt": "2022-12-13T06:57:09.736Z",
- "organizedBy": {
- "id": "70c5d391-5bca-4cf3-9907-bec205798adb",
- "name": "Dyte"
- }
- }
-}
-```
-
-:::info NOTE
-
-`roomName` is sent only if you've created your meeting using [v1 APIs](/api/?v=v1#/operations/create_meeting).
-
-:::
-
-### `meeting.ended`
-
-This event is received when a meeting ends. i.e: When the last participant
-leaves a meeting or the host ends the meeting manually.
-
-The payload for this event is like the following:
-
-```json
-{
- "event": "meeting.ended",
- "meeting": {
- "id": "50c8940e-1b97-402a-97d6-2708b7feca41",
- "sessionId": "05e57591-d89e-45c9-ae44-58dc1eaad0e0",
- "title": "Meeting title",
- "status": "LIVE",
- "createdAt": "2022-12-13T06:57:09.736Z",
- "startedAt": "2022-12-13T06:57:09.736Z",
- "endedAt": "2022-12-13T07:04:37.052Z",
- "organizedBy": {
- "id": "70c5d391-5bca-4cf3-9907-bec205798adb",
- "name": "Dyte"
- }
- },
- "reason": "HOST_ENDED_MEETING"
-}
-```
-
-:::info
-
-Note that the `reason` can be one of `HOST_ENDED_MEETING` or
-`ALL_PARTICIPANTS_LEFT`.
-
-:::
-
-### `meeting.participantJoined`
-
-This event is received when a participant joins the meeting.
-
-The payload for this event is like the following:
-
-```json
-{
- "event": "meeting.participantJoined",
- "meeting": {
- "id": "50c8940e-1b97-402a-97d6-240227feca41",
- "sessionId": "05e57591-d89e-45c9-ae44-78d53eaad0e0",
- "title": "Meeting title",
- "status": "LIVE",
- "createdAt": "2022-12-13T06:57:09.736Z",
- "startedAt": "2022-12-13T06:57:09.736Z",
- "organizedBy": {
- "id": "70c5d391-4bac-4cf3-9907-bec242342adb",
- "name": "Dyte"
- }
- },
- "participant": {
- "peerId": "e32fb785-ddd0-4b96-b577-879327c0082f",
- "userDisplayName": "John Doe",
- // highlight-next-line-error
- "clientSpecificId": "l08is183rld", // deprecated, use `customParticipantId` instead
- "customParticipantId": "l08is183rld",
- "joinedAt": "2022-12-13T06:57:51.631Z"
- }
-}
-```
-
-:::danger attention!
-
-The `clientSpecificId` field is deprecated. Please use `customParticipantId`
-instead.
-
-:::
-
-### `meeting.participantLeft`
-
-This event is received when a participant leaves the meeting
-
-The payload for this event is like the following:
-
-```json
-{
- "event": "meeting.participantLeft",
- "meeting": {
- "id": "d9fc4d6a-a5a0-4430-9a73-d4ba14e597f9",
- "sessionId": "79365b9b-e5ef-452f-934e-e171d75d254b",
- "title": "Meeting title",
- "status": "LIVE",
- "createdAt": "2022-12-13T07:00:23.404Z",
- "startedAt": "2022-12-13T07:00:23.404Z",
- "organizedBy": {
- "id": "70c5d391-4bac-4cf3-9907-bec205798adb",
- "name": "Dyte"
- }
- },
- "participant": {
- "peerId": "023d3ea6-0af0-40ad-8aa3-6645c4ff1db8",
- "userDisplayName": "Mary Sue",
- // highlight-next-line-error
- "clientSpecificId": "dj287lon9c", // deprecated, use `customParticipantId` instead
- "customParticipantId": "dj287lon9c",
- "joinedAt": "2022-12-13T07:01:41.535Z",
- "leftAt": "2022-12-13T07:03:42.420Z"
- }
-}
-```
-
-:::danger attention!
-
-The `clientSpecificId` field is deprecated. Please use `customParticipantId`
-instead.
-
-:::
-
-### `meeting.chatSynced`
-
-This event is received when the chat messages dump of a meeting becomes
-available after the meeting ends.
-
-The payload for this event is like the following:
-
-```json
-{
- "event": "meeting.chatSynced",
- "sessionId": "79365b9b-e5ef-452f-934e-e171d75d254b",
- "meetingId": "d9fc4d6a-a5a0-4430-9a73-d4ba14e597f9",
- "chatDownloadUrl": "https://sample.com",
- "chatDownloadUrlExpiry": "2022-12-13 07:08:39.051621Z",
- "organizedBy": {
- "id": "70c5d391-4bac-4cf3-9907-bec205798adb",
- "name": "Dyte"
- }
-}
-```
-
-### `meeting.transcript`
-
-This event is received when the audio transcripts of a meeting becomes
-available after the meeting ends.
-
-The payload for this event is like the following:
-
-```json
-{
- "event": "meeting.transcript",
- "meeting": {
- "id": "bbbba351-90c5-487f-8358-ce4885555134",
- "sessionId": "01eab2e1-3cd4-4237-8cf3-c8c071ef87e9",
- "title": "Meeting",
- "status": "LIVE",
- "createdAt": "2023-08-10T10:31:20.173Z",
- "startedAt": "2023-08-10T10:31:20.173Z",
- "endedAt": "2023-08-10T10:33:56.771Z",
- "organizedBy": {
- "id": "d6f046b8-b638-4cf7-8090-d9332447ae49",
- "name": "Dyte"
- }
- },
- "transcriptDownloadUrl": "https://sample.com/transcript.csv",
- "transcriptDownloadUrlExpiry": "2023-12-13 07:08:39.051621Z"
-}
-```
-
-### `meeting.summary`
-
-This event is triggered when the summary of a meeting becomes available after the meeting ends.
-
-The payload for this event is structured as follows:
-
-```json
-{
- "event": "meeting.summary",
- "meeting": {
- "id": "bbbba351-90c5-487f-8358-ce4885555134",
- "sessionId": "01eab2e1-3cd4-4237-8cf3-c8c071ef87e9",
- "title": "Meeting",
- "status": "LIVE",
- "createdAt": "2023-08-10T10:31:20.173Z",
- "startedAt": "2023-08-10T10:31:20.173Z",
- "endedAt": "2023-08-10T10:33:56.771Z",
- "organizedBy": {
- "id": "d6f046b8-b638-4cf7-8090-d9332447ae49",
- "name": "Dyte"
- }
- },
- "summaryDownloadUrl": "https://sample.com/summary.txt",
- "summaryDownloadUrlExpiry": "2023-12-13 07:08:39.051621Z"
-}
-```
-
-### `recording.statusUpdate`
-
-This event is received when the status of a recording changes. The possible
-values for a recording's status are `INVOKED`, `RECORDING`, `UPLOADING`,
-`UPLOADED`, and `ERRORED`
-
-
-
-
-
-```json
-{
- "event": "recording.statusUpdate",
- "recording": {
- "id": "97cb480d-5840-4528-ace3-919b5e386c68",
- "recordingId": "97cb480d-5840-4528-ace3-919b5e386c68",
- "meetingId": "26c31468-55d4-4099-b49d-109778b182df",
- "organizationId": "c94c437b-592a-4a39-b9e2-47ef1451e43b",
- "status": "RECORDING",
- "startedTime": "2023-01-25 04:51:35.903816Z",
- "roomUUID": "56b81d16-5d4e-45ed-85b4-056587b00aa0",
- "outputFileName": "26c31468-55d4-4099-b49d-109778b182df_1674622294193.mp4"
- },
- "meeting": {
- "id": "26c31468-55d4-4099-b49d-109778b182df",
- "sessionId": "56b81d16-5d4e-45ed-85b4-056587b00aa0",
- "title": "Meeting title",
- "status": "LIVE",
- "createdAt": "2023-01-25T04:51:22.116Z",
- "startedAt": "2023-01-26T03:36:23.224Z",
- "endedAt": null,
- "organizedBy": {
- "id": "c94c437b-592a-4a39-b9e2-47ef1451e43b",
- "name": "Dyte"
- }
- }
-}
-```
-
-
-
-
-
-```json
-{
- "event": "recording.statusUpdate",
- "recording": {
- "id": "6c81b7c4-4465-4e16-a36f-21b501d619bc",
- "organizationId": "c94c437b-592a-4a39-b9e2-47ef1451e43b",
- "roomUUID": "56b81d16-5d4e-45ed-85b4-056587b00aa0",
- "recordingId": "6c81b7c4-4465-4e16-a36f-21b501d619bc",
- "startedTime": "2022-12-13 07:08:39.051621Z",
- "stoppedTime": "2022-12-13 07:09:45.865627Z",
- "fileSize": 216787,
- "status": "UPLOADING"
- },
- "meeting": {
- "id": "50c8940e-1b97-402a-97d6-2408b7feca41",
- "title": "Meeting title",
- "createdAt": "2022-12-12T06:26:07.310Z",
- "status": "LIVE",
- "createdAt": "2023-01-25T04:51:22.116Z",
- "startedAt": "2023-01-26T03:36:23.224Z",
- "endedAt": null,
- "organizedBy": {
- "id": "70c5d391-4bac-4cf3-9907-bec205798adb",
- "name": "Dyte"
- }
- }
-}
-```
-
-
-
-
-
-```json
-{
- "event": "recording.statusUpdate",
- "meeting": {
- "id": "f489904b-c6d7-4a90-a9b1-cf941cb31f01",
- "title": "Meeting from Postman v1.0",
- "status": "LIVE",
- "endedAt": null,
- "roomName": "missxh-vxtest",
- "createdAt": "2023-04-14T04:45:37.637Z",
- "sessionId": "5a0c5abd-97a3-4dac-b2d2-19ed3d7bb3c2",
- "startedAt": "2023-04-14T04:45:37.637Z",
- "organizedBy": {
- "id": "c94c437b-592a-4a39-b9e2-47ef1451e43c",
- "name": "test"
- }
- },
- "recording": {
- "id": "ab920f84-2d19-4013-99c7-5b80291d0188",
- "status": "UPLOADED",
- "fileSize": 2044680,
- "roomUUID": "5a0c5abd-97a3-4dac-b2d2-19ed3d7bb3c4",
- "meetingId": "f489904b-c6d7-4a90-a9b1-cf941cb31f05",
- "downloadUrl": "https://dyte-recordings-test.s3.ap-south-1.amazonaws.com/c94c437b-592a-4a39-b9e2-47ef1451e43b/test.mp4",
- "recordingId": "ab920f84-2d19-4013-99c7-5b80291d0188",
- "startedTime": "2023-04-14 04:46:08.306221Z",
- "stoppedTime": "2023-04-14 04:46:55.420986Z",
- "organizationId": "c94c437b-592a-4a39-b9e2-47ef1451e43b",
- "outputFileName": "missxh-vxtest_1681447566346.mp4",
- "audioDownloadUrl": "https://dyte-recordings-test.s3.ap-south-1.amazonaws.com/c94c437b-592a-4a39-b9e2-47ef1451e43b/test.mp3",
- "downloadUrlExpiry": "2023-04-21 04:46:55.608944Z",
- "stopReason": "{'reason':'ALL_PEERS_LEFT','caller':{'type':'INTERNAL'}}",
- "recordingDuration": 0
- }
-}
-```
-
-
-
-
-
-### `livestreaming.statusUpdate`
-
-This event is triggered when a livestream's status changes. Possible values for
-`status` are `LIVE`, `OFFLINE` and `IDLE`.
-
-
-
-
-
-```json
-{
- "event": "livestreaming.statusUpdate",
- "streamId": "d231d346-c422-43a6-a324-c0d65b79c8a7",
- "status": "LIVE"
-}
-```
-
-
-
-
-
-```json
-{
- "event": "livestreaming.statusUpdate",
- "streamId": "d231d346-c422-43a6-a324-c0d65b79c8a7",
- "status": "OFFLINE"
-}
-```
-
-
-
-
-
-```json
-{
- "event": "livestreaming.statusUpdate",
- "streamId": "d231d346-c422-43a6-a324-c0d65b79c8a7",
- "status": "IDLE"
-}
-```
-
-
-
-
-
-
- Webhook Events List Guide
-
-
diff --git a/docs/guides/capabilities/webhooks/webhooks-and-events.mdx b/docs/guides/capabilities/webhooks/webhooks-and-events.mdx
deleted file mode 100644
index 41370acdcc..0000000000
--- a/docs/guides/capabilities/webhooks/webhooks-and-events.mdx
+++ /dev/null
@@ -1,174 +0,0 @@
----
-title: Set Up Webhooks to Receive Real-time Updates
-sidebar_position: 2
-description: >-
- Learn about the relationship between webhooks and events in Dyte. Follow our
- guide for effective integration and management.
----
-
-# Set Up Webhooks to Receive Real-time Updates
-
-This topic explains how to set up webhooks to receive real-time updates for
-specific events. Refer
-[View Webhook Events List](/guides/capabilities/webhooks/webhook-events) to view the list of
-events for which notifications can be sent. Setting up a webhook to start
-receiving notifications in your application involves the following steps:
-
-1. Identify the events you want to monitor and the event payloads you want to
- parse.
-2. Create a webhook endpoint as an HTTP endpoint (URL) on your backend
- application. Creating a webhook endpoint is no different from creating any
- other API route on your backend. It's an HTTP or HTTPS endpoint on your
- server with a URL. You can use a single endpoint to handle multiple event
- types at once, or you can set up individual endpoints for specific events.
-3. Handle requests from Dyte by parsing each event object and returning 2xx
- response status codes.
-4. Deploy your webhook endpoint so it's a publicly accessible HTTPS URL.
-5. Register your publicly accessible HTTPS URL using the Dyte
- [developer portal](https://dev.dyte.io) or Webhook APIs.
-
-### Step 1: Identify the events to monitor
-
-Use the [events overview guide](/guides/capabilities/webhooks/webhook-events) to identify the
-events your webhook endpoint needs to parse.
-
-### Step 2: Create a webhook endpoint
-
-Set up an HTTP endpoint that can accept webhook requests with a POST method. For
-example, this route in express is a map to a Node.js webhook function.
-
-```js
-const express = require('express');
-const app = express();
-
-app.post('/webhook', express.json({ type: 'application/json' }), (req, res) => {
- const event = request.body;
- // ... do further processing
-});
-```
-
-### Step 3: Handle requests from Dyte
-
-Your endpoint must be configured to receive events for the type of event
-notifications you want to receive. Dyte sends events to your webhook endpoint as
-part of a POST request with a JSON payload.
-
-#### Register your Endpoint
-
-You can register your endpoint as a webhook and listen for specific events using
-our [dev portal](https://dev.dyte.io) or by making an API request. For example,
-to receive all events, you can make a request like:
-
-```bash
-curl --location --request POST 'https://api.dyte.io/v2/webhooks' \
---header 'Authorization: Basic ' \
---header 'Content-Type: application/json' \
---data-raw '{
- "name": "All events webhook",
- "url": "",
- "events": [
- "meeting.started",
- "meeting.ended",
- "meeting.participantJoined",
- "meeting.participantLeft",
- "recording.statusUpdate",
- "livestreaming.statusUpdate"
- ]
-}'
-```
-
-For more information, check out the
-[webhooks API reference](/api/?v=v2#/operations/addWebhook).
-
-To familiarize yourself with the Dyte REST APIs, we recommend exploring the [Dyte REST API Quickstart Guide](https://docs.dyte.io/guides/rest-apis/quickstart).
-
-#### Check for `dyte-uuid` Header
-
-Each webhook will have a unique value for the `dyte-uuid` header. You can use
-these to ensure you don't process any retries.
-
-#### Return a `2xx` Response
-
-Your endpoint must quickly (within 3 seconds) return a successful status code (`2xx`) prior to any
-complex logic that could cause a timeout.
-
-```js
-app.post('/webhook', express.json({ type: 'application/json' }), (req, res) => {
- const event = request.body;
- // ... do further processing
- res.status(200).send();
- // ... perform heavy tasks
- return;
-});
-```
-
-#### Built-in Retries
-
-Dyte webhooks have built-in retry methods for `3xx`, `4xx` or `5xx` response
-status codes. If Dyte doesn't receive a `2xx` response status code for an event within 3 seconds,
-we mark the event as failed and retry up to 5 times.
-
-### Step 4: Secure your webhooks (recommended)
-
-Use [webhook signatures](/guides/capabilities/webhooks/signatures) to verify that Dyte
-generated a webhook request and that it didn't come from a malicious server
-pretending to be Dyte.
-
-#### Sample code
-
-
-
-
-
-```js
-const express = require('express');
-const app = express();
-
-app.post('/webhook', express.json({ type: 'application/json' }), (req, res) => {
- // verify signature
- // ...
-
- // parse event body
- switch (req.body.event) {
- case 'meeting.participantJoined':
- const { meeting, participant } = req.body;
- // Then define and call a method to handle the joined participant
- // handleParticipantJoined(meeting, participant);
- break;
- case 'recording.statusUpdate':
- const { meeting, recording } = req.body;
- // Then define and call a method to handle the recording status update
- // handleRecordingUpdate(meeting, recording);
- break;
- // ... handle other event types
- default:
- console.log(`Unhandled event type ${event.type}`);
- }
-});
-
-app.listen(8000, () => console.log('Running on port 8000'));
-```
-
-
-
-
-
-### Step 5: Register your HTTPS URL
-
-Register your publicly accessible HTTPS URL using the
-[Dyte developer portal](https://dev.dyte.io) or
-[Webhook APIs](/api/?v=v2#/operations/addWebhook).
-
-## See also
-
-- [Events overview guide](/guides/capabilities/webhooks/webhook-events)
-- [Webhooks API reference](/api/?v=v2#/operations/addWebhook)
-- [Webhook signatures](/guides/capabilities/webhooks/signatures)
-
-
- Set Up Webhooks to Receive Real-time Updates Guide
-
-
diff --git a/docs/guides/capabilities/webhooks/webhooks-overview.mdx b/docs/guides/capabilities/webhooks/webhooks-overview.mdx
deleted file mode 100644
index f68265b5f0..0000000000
--- a/docs/guides/capabilities/webhooks/webhooks-overview.mdx
+++ /dev/null
@@ -1,91 +0,0 @@
----
-sidebar_position: 1
-description: >-
- Get an overview of webhooks and their functionality in Dyte's capabilities.
- Follow our guide for a comprehensive understanding.
----
-
-# Webhooks Overview
-
-Webhooks are
-[HTTP-based](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol) callback
-functions that can be defined by the user to allow lightweight, event-driven
-communication between two APIs.
-
-Setting up a webhook involves the following steps:
-
-1. The client provides a unique URL to the server API and specifies which event
- it wanted to be notified about.
-2. Once the webhook is configured, the server automatically sends the relevant
- payload to the client's webhook URL when the specified event occurs.
-
-Dyte uses webhooks to notify your application when an event happens. Webhooks
-are particularly useful for asynchronous events, such as when a recording is
-uploaded or when a participant joins your meeting.
-
-## How does Dyte use Webhooks?
-
-A webhook enables Dyte to push real-time updates to your applications. When the
-event occurs, Dyte makes an HTTP request (usually a POST) to the URL you
-configured for the webhook and sends the updates to your application as a JSON
-payload. You can then use these events to perform actions in your backend
-systems. To learn more, see Dyte webhook events overview.
-
-Webhooks are particularly useful for asynchronous events, such as when a
-recording is uploaded or when a participant joins the meeting.
-
-Let's say you have a meeting that you want to record. You have registered to
-receive the `meeting.started` and `meeting.ended` event. A webhook notifies your
-app when the meeting starts and when it ends. After your webhook endpoint
-receives the meeting.started event, your webhook function can then run backend
-actions to start recording the meeting and end the recording of the meeting when
-`meeting.ended` event is received.
-
-## Anatomy of a Webhook
-
-A webhook HTTP request generally consists of the following:
-
-- Header
-- Payload
-
-### Header
-
-For each event that triggers the webhook, a header is included to describe the event. The header provides information about the request, such as content type, webhook ID, UUID, signature details, and so on.
-
-
-
-The following headers are of more importance for your security and reliability:
-
-| **Header** | **Description** |
-| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `dyte-webhook-id` | Webhook IDs are used to uniquely identify a specific webhook endpoint or events. See [Verify using webhook IDs](/guides/capabilities/webhooks/signatures#verify-using-webhook-ids). |
-| `dyte-uuid` | This is a unique UUID identifying the event. |
-| `dyte-signature` | Dyte verifies the webhook events it sends to your endpoints by including a signature in the dyte-signature header of each event. This allows you to confirm that the event came from Dyte and not a malicious server impersonating Dyte. See [Verify Webhooks Using Dyte's Signature](/guides/capabilities/webhooks/signatures#verify-using-dytes-signature). |
-
-### Payload
-
-Payload contains information about the event that triggered the webhook, such as user data or a change in state.
-
-For example,
-
-```json
-{
- "event": "livestreaming.statusUpdate",
- "streamId": "d231d346-c422-43a6-a324-c0d65b79c8a7",
- "status": "OFFLINE"
-}
-```
-
-
- Webhooks Overview Guide
-
-
diff --git a/docs/guides/capabilities/webinar/_category_.json b/docs/guides/capabilities/webinar/_category_.json
deleted file mode 100644
index 57e34efe09..0000000000
--- a/docs/guides/capabilities/webinar/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Webinar",
- "collapsible": true
-}
diff --git a/docs/guides/capabilities/webinar/intro-webinar.mdx b/docs/guides/capabilities/webinar/intro-webinar.mdx
deleted file mode 100644
index 512fd02313..0000000000
--- a/docs/guides/capabilities/webinar/intro-webinar.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Introduction to Dyte's Webinar
-sidebar_position: 1
-description: >-
- Explore the introduction to webinars with Dyte's capabilities. Follow our
- guide for a smooth understanding and integration.
----
-
-A webinar is an interactive online event where individuals or organizations share information, deliver presentations, and engage with a remote audience over the internet. It involves a host or presenter who shares content or expertise with participants from different locations. Webinars offer features like live chat, polls, Q&A sessions, and audio/video interactions for active participant engagement. They are used for education, marketing, training, and other real-time online events.
-
-## How Dyte's webinar is different from a group call?
-
-Webinars and group calls serve distinct purposes and have different characteristics.
-
-### Webinar
-
-- Webinars are one-to-many events focused on sharing information to a larger audience.
-- They involve presenters and viewers, with the presenter delivering content and viewers actively participating through features like chat and Q&A.
-- In webinars, participants producing media (audio or video) are considered "on stage," while others are "off stage."
-- Dyte provides prebuilt presets for webinars including the `webinar_presenter` and `webinar_viewer` presets, offering predefined permissions and UI configurations tailored to their roles
-
-### Group call
-
-- Group calls in Dyte emphasize interactive communication and collaboration among a smaller group of participants.
-- They enable real-time audio and video interactions for team meetings and discussions, promoting equal participation among all participants.
-- Dyte provides prebuilt presets specifically designed for group calls, including the `group_call_host` and `group_call_participant` presets, which offer predefined permissions and UI configurations for hosts and participants
-
-## Key features of a Dyte's webinar
-
-The following are some of the highlights of Dyte's webinar:
-
-- Manage permissions for hosts and participants using `presets` to control stage access.
-- You can record all the webinars like any other Dyte meeting. For more information on Dyte recording, see the [Recording Overview](/guides/capabilities/recording/recording-overview).
-- Supported platforms include web, Android, and iOS.
-
-
- Introduction to Dyte's Webinar Guide
-
-
diff --git a/docs/guides/core-concepts.md b/docs/guides/core-concepts.md
new file mode 100644
index 0000000000..720d39122e
--- /dev/null
+++ b/docs/guides/core-concepts.md
@@ -0,0 +1,51 @@
+---
+title: Core concepts
+sidebar_position: 4
+---
+
+# Core concepts
+
+## Organization
+
+The tenant. Every row you create belongs to one. An organization is created by `POST /auth/register`, starts with exactly one user (its Owner, holding every permission), and can invite more users once it needs more than one.
+
+## Producer, Producer Code, OSPI Identity
+
+Three layers, minted in order:
+
+1. **Producer** — your organization registers itself as a maker of goods.
+2. **Producer Code** — a short code (e.g. `ACME`) issued to that producer; this is the `AAAA` segment of every OSPI code it issues.
+3. **OSPI Identity** — the actual global identifier for one product or variant: producer code + category code + your own product ID + optional variant/serial segments + a computed checksum. See [Producers & OSPI Codes](/api-reference/producers-and-ospi-codes).
+
+In practice, step 3 usually happens inline: `POST /products` accepts an `identity` block and mints the OSPI Identity in the same call that creates the product.
+
+## Product vs. Variant vs. Serialized Unit
+
+- A **Product** is the thing you sell. It always has its own OSPI Identity.
+- A **Variant** (size, color, ...) is a distinct sellable configuration — it **always** gets its own OSPI Identity too, not a suffix of the parent's.
+- A **Serialized Unit** is one physical, individually-serialized item (a specific bottle off the line) — optional, computed from its parent identity, and never required just to price or sell the product.
+
+Pricing (`Offer`) always resolves at the Product/Variant level. A point-of-sale system that never sees an individual serial number still resolves price correctly, by design.
+
+## Category & Attributes
+
+A **Category** can declare which attributes are required, recommended, optional, or forbidden for products in it. `POST /products/:id/validate` scores a product against its category's effective schema — publishing is genuinely blocked until the score says the product is ready. Categories can be private to your organization, or proposed as **global** (shared registry, subject to approval by a `categories:govern` holder).
+
+## Connections & Sharing Grants
+
+Two organizations don't see each other's data by default. A **Connection** is the relationship (request → accept); a **Sharing Grant** riding on that connection is the actual permission slip — which products, and which data categories (product data, inventory, content, ordering). Nothing crosses an organization boundary without one.
+
+## Offers & Orders
+
+An **Offer** is a seller's commercial listing for a product they may not even own (given a sharing grant that includes `ORDERING` access). An **Order** is placed by a buyer, referencing offers, and is split automatically into one **Order Group** per seller — each seller accepts, processes, and fulfils their own group independently.
+
+## Everything else in one line each
+
+- **Documents** — file metadata (datasheets, certificates) attached to a product, each with its own visibility.
+- **Inventory** — stock per location; availability is always computed, never stored.
+- **Search & Resolver** — full-text search across your (and shared) products, plus a public "scan the code" lookup.
+- **Digital Product Passport** — a generic, versioned attribute checklist per product; explicitly not a compliance implementation yet.
+- **Webhooks** — your own outbound event stream, HMAC-signed.
+- **Audit log** — every mutation is logged, separately from application logs.
+
+Next: [Errors](/guides/errors), [Idempotency & rate limits](/guides/idempotency-and-rate-limits), or straight to the [API Reference](/api-reference).
diff --git a/docs/guides/errors.md b/docs/guides/errors.md
new file mode 100644
index 0000000000..eef7977d08
--- /dev/null
+++ b/docs/guides/errors.md
@@ -0,0 +1,39 @@
+---
+title: Errors
+sidebar_position: 5
+---
+
+# Errors
+
+Every error response, from every endpoint, has the same shape:
+
+```json
+{
+ "error": {
+ "code": "VALIDATION_ERROR",
+ "message": "email must be a valid email address",
+ "requestId": "b6f1c2b0-2f3e-4b9a-9b0e-1a2b3c4d5e6f"
+ }
+}
+```
+
+- **`code`** — a stable, machine-readable string derived from the HTTP status (e.g. `VALIDATION_ERROR` for 400, `NOT_FOUND` for 404, `FORBIDDEN` for 403).
+- **`message`** — human-readable, safe to show a developer. Validation failures on multiple fields are joined into one string.
+- **`requestId`** — echoes the `X-Request-Id` header you sent, or a generated UUID if you didn't send one. Include it when reporting an issue — it's what the server logs against internally.
+
+Internal stack traces and unexpected exceptions are never sent to the client — an unhandled error still returns this exact shape with `code: "INTERNAL_ERROR"`.
+
+## Common status codes
+
+| Status | Meaning |
+| --- | --- |
+| `400` | Validation failed, or a business rule rejected the request (e.g. publishing a product that isn't ready) |
+| `401` | Missing or invalid `Authorization` header |
+| `403` | Authenticated, but missing the required permission |
+| `404` | Resource doesn't exist, or exists in another organization you can't see |
+| `409` | Conflict — a stale optimistic-concurrency write, an idempotency key reused with different attributes, or an attempted overwrite of a `VERIFIED` attribute value |
+| `429` | Rate limited (see [Idempotency & rate limits](/guides/idempotency-and-rate-limits)) |
+
+## A note on 404 vs. 403
+
+Reading a resource that belongs to another organization returns `404`, not `403` — the API doesn't reveal whether a resource exists in a tenant you can't see.
diff --git a/docs/guides/guides.mdx b/docs/guides/guides.mdx
deleted file mode 100644
index 9579b1e59b..0000000000
--- a/docs/guides/guides.mdx
+++ /dev/null
@@ -1,84 +0,0 @@
----
-slug: /
-sidebar_position: 1
-sidebar_class_name: guide_sidebar_index
-description: >-
- "Explore a variety of guides to enhance your Dyte experience. From AI
- capabilities to customization
----
-
-import ProductSection from '/docs/partials/_product-section.mdx';
-
-# Guides
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Guides Guide
-
-
diff --git a/docs/guides/idempotency-and-rate-limits.md b/docs/guides/idempotency-and-rate-limits.md
new file mode 100644
index 0000000000..43af0623a9
--- /dev/null
+++ b/docs/guides/idempotency-and-rate-limits.md
@@ -0,0 +1,41 @@
+---
+title: Idempotency & rate limits
+sidebar_position: 6
+---
+
+# Idempotency & rate limits
+
+## Idempotency
+
+Network retries are normal — a client that times out waiting for a response to `POST /orders` genuinely doesn't know whether the order was created. Rather than risk a duplicate, opt in with an `Idempotency-Key` header:
+
+```http
+POST /api/v1/orders
+Authorization: Bearer
+Idempotency-Key: 6b1f5e2a-...
+Content-Type: application/json
+
+{ ... }
+```
+
+Retry the exact same request with the same key, and you get back the *original* response, unchanged, marked with an `Idempotent-Replay: true` header — not a second order.
+
+**Where it's supported:** `POST /products`, `POST /products/bulk`, `POST /products/:id/serialized-units/bulk`, `POST /ospi-identities`, `POST /orders`, `POST /orders/:id/submit`. These are exactly the endpoints that create a real, hard-to-undo commitment.
+
+**Scope and TTL:** a key is scoped per organization, per actor (user or API client), per endpoint — the same key on a different endpoint is a different idempotency record. Keys expire after 24 hours.
+
+**Known limitation:** there is no distributed lock behind this. Two genuinely concurrent requests carrying the same key can both execute before either response is recorded. Don't rely on it as a substitute for a unique constraint on data that must never duplicate.
+
+Use a fresh UUID per logical operation, generated once on the client (not regenerated on each retry attempt).
+
+## Rate limits
+
+A small set of endpoints are rate-limited, mostly ones that are either unauthenticated or security-sensitive:
+
+- `POST /auth/login`
+- `POST /auth/register`
+- `POST /auth/refresh`
+- `GET /search/resolve/:code`
+- `GET /dpp/:accessToken`
+
+Exceeding the limit returns `429`. The limiter is **in-memory and per-process**, not distributed — if the platform is ever deployed behind a load balancer with more than one API process, the effective limit multiplies by the number of processes. Treat the documented limit as a floor, not a guaranteed ceiling, in a multi-process deployment.
diff --git a/docs/guides/interactive-onboarding/_category_.json b/docs/guides/interactive-onboarding/_category_.json
deleted file mode 100644
index ff44ecc80a..0000000000
--- a/docs/guides/interactive-onboarding/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 4,
- "label": "📟 Interactive Tour",
- "collapsible": true,
- "className": "releaseSidebarHeading"
-}
diff --git a/docs/guides/interactive-onboarding/add-participant.mdx b/docs/guides/interactive-onboarding/add-participant.mdx
deleted file mode 100644
index dea558b93d..0000000000
--- a/docs/guides/interactive-onboarding/add-participant.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Add Participant
-sidebar_position: 2
-sidebar_class_name: interactive-tour add-participant
----
-
-import { InteractiveTour } from '@site/src/components/InteractiveTour';
-
-
-
-
-
-
diff --git a/docs/guides/interactive-onboarding/create-meeting.mdx b/docs/guides/interactive-onboarding/create-meeting.mdx
deleted file mode 100644
index a6cb9e6e5d..0000000000
--- a/docs/guides/interactive-onboarding/create-meeting.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Create Meeting
-sidebar_position: 1
-sidebar_class_name: interactive-tour create-meeting
----
-
-import { InteractiveTour } from '@site/src/components/InteractiveTour/index';
-
-
-
-
-
-
diff --git a/docs/guides/interactive-onboarding/init-sdk.mdx b/docs/guides/interactive-onboarding/init-sdk.mdx
deleted file mode 100644
index 216b6cbeb5..0000000000
--- a/docs/guides/interactive-onboarding/init-sdk.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Init SDK
-sidebar_position: 3
-sidebar_class_name: interactive-tour init-sdk
----
-
-import { InteractiveTour } from '@site/src/components/InteractiveTour';
-
-
-
-
-
-
diff --git a/docs/guides/interactive-onboarding/join-meeting.mdx b/docs/guides/interactive-onboarding/join-meeting.mdx
deleted file mode 100644
index 4ee5dda614..0000000000
--- a/docs/guides/interactive-onboarding/join-meeting.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Join Meeting
-sidebar_position: 4
-sidebar_class_name: interactive-tour init-sdk
----
-
-import { InteractiveTour } from '@site/src/components/InteractiveTour';
-
-
-
-
-
-
diff --git a/docs/guides/intro.md b/docs/guides/intro.md
new file mode 100644
index 0000000000..a983926ee4
--- /dev/null
+++ b/docs/guides/intro.md
@@ -0,0 +1,33 @@
+---
+title: Introduction
+sidebar_position: 1
+slug: /
+---
+
+# OSPI
+
+**OSPI (Open Standard Product Identification)** is an open standard and API platform for product identity, master data, and cross-organization product data exchange. It gives every product and variant a globally unique, checksum-verified identifier (an **OSPI code**), and a single REST API for managing that product's data, sharing it with other organizations, and trading it.
+
+This documentation covers the reference implementation — [`ospi-platform`](https://github.com/BrickeVD/ospi-platform), a NestJS/PostgreSQL API — not just a paper specification. Every example on this site is a real, working endpoint.
+
+## What you can do with the API
+
+- **Issue identifiers.** Register as a producer, get a Producer Code, and mint OSPI Identities for your products and variants.
+- **Manage product master data.** Products, variants, categories, a schema-driven attribute engine, documents, and translations.
+- **Track inventory.** Locations and stock, with availability always derived at read time.
+- **Share data across organizations.** Request a connection, grant scoped access to exactly the products and data categories you choose.
+- **Search and resolve.** Full-text product search, and a public "scan a code, get the product" resolver.
+- **Trade.** List offers, place orders, split fulfilment per seller.
+- **Publish a Digital Product Passport scaffold.** (Not yet a compliance implementation — see [ADR-006](/architecture/adr/adr-006-dpp-espr-stance).)
+
+## Where to go next
+
+- [Quickstart](/guides/quickstart) — register an organization and mint your first OSPI code in five calls.
+- [Authentication](/guides/authentication) — JWTs vs. API keys.
+- [Core concepts](/guides/core-concepts) — organizations, identity, products, sharing, in one page.
+- [API Reference](/api-reference) — every resource, endpoint by endpoint.
+- [Architecture](/architecture) — the 34 decisions behind how the platform is actually built, and the open questions that aren't engineering problems.
+
+## Status
+
+This is a real, running MVP, not a mockup: `npx tsc --noEmit` is clean, the full test suite passes, and the flows documented here (register → issue a producer code → mint an OSPI code → create a product → share it with another organization → order it) have been exercised end-to-end against a real PostgreSQL database. It is **not** production-hardened — see [What's built vs. what's still missing](https://github.com/BrickeVD/ospi-platform#whats-built-vs-whats-still-missing) and the [open governance questions](/architecture#open-governance-questions) before connecting real external parties.
diff --git a/docs/guides/live-video/_category_.json b/docs/guides/live-video/_category_.json
deleted file mode 100644
index b471c8241d..0000000000
--- a/docs/guides/live-video/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 1,
- "label": "Live Video",
- "collapsible": true,
- "className": "video_sidebar_header"
-}
diff --git a/docs/guides/live-video/build-live-video-app.mdx b/docs/guides/live-video/build-live-video-app.mdx
deleted file mode 100644
index b6d7e3647c..0000000000
--- a/docs/guides/live-video/build-live-video-app.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Server Integration
-sidebar_position: 4
-description: >-
- Learn how to build a live video app with Dyte's capabilities. Follow our guide
- for effective app development and integration.
----
-
-import IntegrateDyte from '/docs/partials/_integrate-dyte.mdx';
-
-
-
-
- Server Integration Guide
-
-
-
diff --git a/docs/guides/live-video/client-setup/_category_.json b/docs/guides/live-video/client-setup/_category_.json
deleted file mode 100644
index 67dcc273ad..0000000000
--- a/docs/guides/live-video/client-setup/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Client Setup",
- "collapsible": true
-}
diff --git a/docs/guides/live-video/client-setup/android.mdx b/docs/guides/live-video/client-setup/android.mdx
deleted file mode 100644
index 5c61616d49..0000000000
--- a/docs/guides/live-video/client-setup/android.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Android
-pagination_prev: null
-pagination_next: live-video/next-steps
-sidebar_position: 4
-description: >-
- Learn how to set up the client for live video on Android with Dyte's features.
- Follow our guide for effective Android client setup.
----
-
-import Quickstart from '/docs/partials/_android-quickstart.mdx';
-
-
-
-
- Android Guide
-
-
diff --git a/docs/guides/live-video/client-setup/angular.mdx b/docs/guides/live-video/client-setup/angular.mdx
deleted file mode 100644
index a3ddf09015..0000000000
--- a/docs/guides/live-video/client-setup/angular.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Angular
-pagination_prev: null
-pagination_next: live-video/next-steps
-sidebar_position: 2
-description: >-
- Explore the setup of the client for live video in Angular with Dyte's
- features. Follow our guide for effective Angular client setup.
----
-
-import Quickstart from '/docs/partials/_angular-quickstart.mdx';
-
-
-
-
- Angular Guide
-
-
diff --git a/docs/guides/live-video/client-setup/flutter.mdx b/docs/guides/live-video/client-setup/flutter.mdx
deleted file mode 100644
index 55303ea806..0000000000
--- a/docs/guides/live-video/client-setup/flutter.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Flutter
-pagination_prev: null
-pagination_next: live-video/next-steps
-sidebar_position: 6
-description: >-
- Learn how to set up the client for live video in Flutter with Dyte's features.
- Follow our guide for effective Flutter client setup.
----
-
-import Quickstart from '/docs/partials/_flutter-quickstart.mdx';
-
-
-
-
- Flutter Guide
-
-
diff --git a/docs/guides/live-video/client-setup/index.mdx b/docs/guides/live-video/client-setup/index.mdx
deleted file mode 100644
index 5802d75708..0000000000
--- a/docs/guides/live-video/client-setup/index.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Client Setup
----
-
-import ClientSetup from '/docs/partials/_client-setup-index.mdx';
-
-
-
-
- Client Setup Guide
-
-
diff --git a/docs/guides/live-video/client-setup/ios.mdx b/docs/guides/live-video/client-setup/ios.mdx
deleted file mode 100644
index 89b8e0f443..0000000000
--- a/docs/guides/live-video/client-setup/ios.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: iOS
-pagination_prev: null
-pagination_next: live-video/next-steps
-sidebar_position: 5
-description: >-
- Get started with setting up the client for live video on iOS with Dyte's
- features. Follow our guide for a seamless iOS client setup.
----
-
-import Quickstart from '/docs/partials/_ios-quickstart.mdx';
-
-
-
-
- iOS Guide
-
-
diff --git a/docs/guides/live-video/client-setup/javascript.mdx b/docs/guides/live-video/client-setup/javascript.mdx
deleted file mode 100644
index 3a9a4a97f3..0000000000
--- a/docs/guides/live-video/client-setup/javascript.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Web (Other)
-sidebar_position: 3
-pagination_prev: null
-pagination_next: live-video/next-steps
-description: >-
- Explore the setup of the client for live video in JavaScript with Dyte's
- features. Follow our guide for effective JavaScript client setup.
----
-
-import Quickstart from '/docs/partials/_html-quickstart.mdx';
-
-
-
-
- Javascript Guide
-
-
diff --git a/docs/guides/live-video/client-setup/react.mdx b/docs/guides/live-video/client-setup/react.mdx
deleted file mode 100644
index bde58e8c85..0000000000
--- a/docs/guides/live-video/client-setup/react.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: React
-sidebar_position: 1
-pagination_prev: null
-pagination_next: live-video/next-steps
-description: >-
- Learn how to set up the Dyte Live Video client in React. Follow our guide for
- effective React client setup and integration.
----
-
-import Quickstart from '/docs/partials/_react-quickstart.mdx';
-
-
-
-
- React Guide
-
-
diff --git a/docs/guides/live-video/concepts.mdx b/docs/guides/live-video/concepts.mdx
deleted file mode 100644
index a8682a2a11..0000000000
--- a/docs/guides/live-video/concepts.mdx
+++ /dev/null
@@ -1,116 +0,0 @@
----
-title: Concepts
-sidebar_position: 3
----
-
-## Basic Concepts
-
-This section takes you through Dyte's key concepts and the terminology.
-
-
-
- **Organization**
-
-In Dyte, the organization serves as the top-level entity where all participants of your group are added. You can create an organization through the [Developer Portal](https://dev.dyte.io) or using the [API](/api#/operations/createOrg)
-
-- Meetings are created within the organization.
-- The API keys are generated for your organization. These API Keys are unique to your organization and are required to use Dyte REST APIs such as when instantiating a meeting.
-- Additionally, Dyte considers the organization as a billing unit.
-
-
-
-
-
- **Meeting**
-
-
-A communication channel created on Dyte is termed as a `meeting`. Meetings can be created using the [Create a meeting API](/api#/operations/create_meeting) or through the [Developer Portal](https://dev.dyte.io/meetings). Similarly, you can get the details of your meeting using the [API](/api#/operations/get_all_meetings) or [Developer Portal](https://dev.dyte.io/meetings).
-
-An example from the Developer Portal displaying meeting details.
-
-
-
-
-
-
-
- **Session**
-
-In Dyte, a meeting is a communication channel, and each instance of that channel is called a session. A session represents an ongoing meeting or a meeting that happened in the past. Like meetings, you can get the details of a session via Developer Portal or using the [APIs](/api#/operations/GetSessions).
-A minute after all participants leave, the session is ended and any participants that join after that will result in the creation of a new session.
-
-An example from the Developer Portal displaying session details.
-
-
-
-
-
-
- **Preset 🚨**
-
-
-A preset is a set of permissions and UI configurations that are applied to participants for different meeting types such as Group Call, Webinar, and Livestream. The presets define how a meeting will appear visually and functional aspects of the meeting. They allow customization options like setting maximum number of participants on-screen, permissions to share screen, enabling poll creation, disabling video and audio, adjusting text color, configuring plugins, etc.
-
-To create a preset, please refer to our Developer Portal's [Presets Section](https://dev.dyte.io/presets).
-
-
-
-
-## Components
-
-Now that you are familiar with the terminology of basic concepts on Dyte, we can take a look at how different parts of the Dyte system come together. The components are the REST API, core SDK , UIKit and a Developer Portal. Each of these serve different purposes and belong in different blocks of your application.
-
-Let's dive deeper into what purpose each of these components serve.
-
-### Developer Portal
-
-To begin with, let's start with our [dashboard](https://dev.dyte.io/dashboard). This is where you will do a number of administrative tasks. This is your go-to-place for things like defining organisations, meeting logs, grabbing API Keys and billing operations.
-You can also use the Developer Portal to create meetings, presets, setup storage for recordings, add webhooks, and much more.
-
-
-
-### REST API
-
-The REST APIs help **your server** orchestrate the meetings, the participants in them, the recordings etc. You can also observe your meetings and all the associated data with them.
-
-### Core SDK
-
-The Core SDK provides all the client side business logic, handles media and networking and provides easy to use APIs to let you program the experience.
-
-Initializing the Core SDK requires an `authToken` which is unique to every participant in a meeting. The `authToken`is returned from the [Add Participant API](/api#/operations/add_participant). The Core SDK itself does not provide any UI components and is a data-only API.
-
-### UI Kit
-
-We provide a library of UI components that makes it easy to integrate video and voice calls into any app or website within minutes. You can either use it as a prebuilt setup where a single component provides you the entire functionality or you can mix and match - use some components from our library and build some of them on your own.
-
-
- Concepts Guide
-
-
diff --git a/docs/guides/live-video/get-started.mdx b/docs/guides/live-video/get-started.mdx
deleted file mode 100644
index 3f0f925a3f..0000000000
--- a/docs/guides/live-video/get-started.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Get your keys
-slug: /live-video/get-started
-sidebar_position: 2
----
-
-To get started with creating live video calls from Dyte, make sure to finish these steps and then move on to integrating Dyte in your application.
-
-import Setup from '/docs/partials/_setup.mdx';
-
-
-
-
- Setup Guide
-
-
diff --git a/docs/guides/live-video/intro-video-conf.mdx b/docs/guides/live-video/intro-video-conf.mdx
deleted file mode 100644
index eb8d1ae6b6..0000000000
--- a/docs/guides/live-video/intro-video-conf.mdx
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: Overview
-sidebar_position: 1
-description: >-
- Get started with Dyte's video conferencing capabilities. Follow our guide for
- an introduction to video conferencing and its features.
----
-
-Dyte's live video platform, built upon [WebRTC](https://dyte.io/blog/webrtc/), enables you to seamlessly incorporate real-time communication features into your web and mobile applications. Using Dyte's REST APIs and client-side SDKs, you can effortlessly acquire, transmit, and play media within your applications.
-
-
-
- 1️⃣
-
- }
- title="Get your keys"
- to="./get-started"
- description="Learn how to register on Dyte and get your API Keys"
- />
-
- 2️⃣
-
- }
- title="Concepts"
- to="./concepts"
- description="Learn about the architecture, design and basic concepts behind Dyte"
- />
-
- 3️⃣
-
- }
- title="Server Setup"
- to="./build-live-video-app"
- description="Steps to access Dyte's REST API"
- />
-
- 4️⃣
-
- }
- title="Client Setup"
- to="./client-setup"
- description="Set up and configure your client to integrate video calls "
- />
-
-
-
- Overview Guide
-
-
diff --git a/docs/guides/live-video/next-steps.mdx b/docs/guides/live-video/next-steps.mdx
deleted file mode 100644
index 063b8a04b1..0000000000
--- a/docs/guides/live-video/next-steps.mdx
+++ /dev/null
@@ -1,103 +0,0 @@
----
-title: Next Steps
-sidebar_position: 5
----
-
-# Next Steps
-
-## Capabilities
-
-
-
-
-
-
-
-
-
-
-
-
-## Core SDK
-
-
- } />
- }
- />
- } />
- } />
- } />
- } />
-
-
-## REST API Reference
-
-
-
-
-
-
-## UI Kit
-
-
- } />
- } />
- } />
- } />
- } />
- } />
- } />
-
diff --git a/docs/guides/livestream/_category_.json b/docs/guides/livestream/_category_.json
deleted file mode 100644
index a189ba8d35..0000000000
--- a/docs/guides/livestream/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 3,
- "label": "Interactive Livestream",
- "collapsible": true,
- "className": "ils_sidebar_header"
-}
diff --git a/docs/guides/livestream/advanced/_category_.json b/docs/guides/livestream/advanced/_category_.json
deleted file mode 100644
index 9c2b8c9564..0000000000
--- a/docs/guides/livestream/advanced/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Advanced",
- "collapsible": true
-}
diff --git a/docs/guides/livestream/advanced/configuring-permissions.mdx b/docs/guides/livestream/advanced/configuring-permissions.mdx
deleted file mode 100644
index 1fbd52ed14..0000000000
--- a/docs/guides/livestream/advanced/configuring-permissions.mdx
+++ /dev/null
@@ -1,204 +0,0 @@
----
-title: Configure Permissions
-sidebar_position: 1
-description: >-
- Dive into advanced livestream configuration with Dyte. Follow our guide for
- effective permission setup and management.
----
-
-## Presets
-
-A preset is a set of permissions and configurations that are applied to participants. They determine the look, feel, and behavior of a livestream participant, with options to set varied permissions, such as the ability to create polls or chat, control access for plugins, and more.
-
-## Configuration
-
-You can define the following permissions and UI configurations:
-
-**Max number of people on screen**: Set the maximum number of participants who can appear on the screen at any given time. We recommend setting this number between 6 and 9 for the best possible experience.
-
-**Max number of people screensharing**: Set the maximum number of participants who can share the screen at any given time. We recommend setting this number between 3 to 4 for the best experience.
-
-
-
-### Host Controls
-
-Host controls allow you as the host to control various aspects of a Dyte livestream, such as managing the participants.
-
-| **Permissions and Configurations** | **Description** |
-| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Kick Participants | Adds permissions to remove participants from your meeting. Ensure that you select this option if you're creating a preset for the **host**. |
-| Mute Audio | Host can mute/unmute individual participants or all of them at once. Ensure that you select this option if you're creating a preset for the **host**. |
-| Disable Video | Hosts can hide video of individual participants or all of them at once. Ensure that you select this option if you're creating a preset for the **host**. |
-| Pin Participant | Allows to pin a participant's view displayed on the screen. When a participant is pinned, their video feed remains visible even if someone else speaks or the video layout changes. Ensure that you select this option if you're creating a preset for the **host**. |
-| Manage Recordings | Hosts can start and stop recording of their meeting. |
-| Update Participant Preset | Update participant permissions / meeting type. |
-
-
-
-### Media
-
-You can manage permissions for your livestreams in Media, such as who can start the livestream and who can join the livestream with what kind of permissions.
-
-| **Permissions and Configurations** | **Description** |
-| ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
-| Start Livestream | Adds permissions to start livestreaming your meeting. Ensure that you select this option if you're creating a preset for the **host**. |
-| Admit or remove participants from the livestream | Allows to admit or remove participants from the livestream. Ensure that you select this option if you're creating a preset for the **host**. |
-| Join Livestream | Participants can join the livestream directly with a link. |
-| Request to Join | Participants can request to join a livestream. Host can accept or reject the request. |
-| View Only | Participants can only view the livestream. |
-
-
-
-### Chat
-
-| **Permissions and Configurations** | **Description** |
-| --------------------------------------- | ---------------------------------------------------------------------------------------------------- |
-| Public (can send text, can send files) | Permissions to be able to send text and/or files to everyone during the livestream. |
-| Private (can send text, can send files) | Permissions to be able to send text and/or files to the specific participants during the livestream. |
-
-
-
-### Polls
-
-| **Permissions and Configurations** | **Description** |
-| ---------------------------------- | --------------------------------------------------------------- |
-| Can create polls | Permissions to be able to create polls during the livestream. |
-| Can vote on polls | Permissions to be able to vote on polls during the livestream. |
-| Can view polls | Permissions to be able to view the polls during the livestream. |
-
-
-
-### Plugins
-
-Manage permissions for your plugins.
-
-| **Permissions and Configurations** | **Description** |
-| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
-| Launch Plugins | Permissions to be able to launch plugins during a livestream, for example, witeboard, excalidraw,remote browser, and so on. |
-| Close Plugins | Permissions to be able to close plugins, during a livestream, for example, witeboard, excalidraw,remote browser, and so on. |
-| Control Access | Allows you to manage plugins for other participants. |
-
-
-
-### Miscellaneous
-
-Manage permissions for your plugins.
-
-| **Permissions and Configurations** | **Description** |
-| ---------------------------------- | --------------------------------------------------------------------- |
-| Hidden Participants | Allows participants to be hidden from all other participants. |
-| Edit Name | Participants can edit their name while joining the livestream. |
-| Sync Tab Bar View | Enables broadcasting of the current tab bar view to all participants. |
-| Hide Participant List | Hide the list of participants in the livestream. |
-
-
-
-## Colors
-
-You can specify brand color, background color, text color, text color on brand, and video background color.
-
-
-
-## Theme
-
-Specify the URL of the logo.
-
-## Plugins
-
-1. Select the plugin that you want to use for the collaboration within your meeting. Multiple plugins such as Excalidraw, Remote browser, Google apps, Quiz, Chess, and so on are supported.
-
- You can select multiple plugins for your meeting.
-
-2. Click **Configure**.
-3. Select permissions for the selected preset. You can provide **Full Access** or **View Only**.
-
-4. Select **Show only active plugins** to view the plugins that you've configured for your meeting.
-
-# Step 3: Save the Preset Changes
-
-1. Once you've made all the changes that you need to add to your preset, click **Save** at the right-corner.
-
-2. Enter the name for your preset and click **Save**.
-
-3. Your preset is listed. Click **Edit** to make any changes to the preset.
-
-
-
- Configure Permissions Guide
-
-
diff --git a/docs/guides/livestream/advanced/livestream-any-rtmp.mdx b/docs/guides/livestream/advanced/livestream-any-rtmp.mdx
deleted file mode 100644
index 5e1c8a56af..0000000000
--- a/docs/guides/livestream/advanced/livestream-any-rtmp.mdx
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: Custom / RTMP Video Input
-sidebar_position: 2
-description: >-
- Learn how to livestream to any RTMP server with Dyte. Follow our guide for
- effective RTMP livestreaming and integration.
----
-
-# Live Stream any Custom Video Input
-
-Dyte can livestream video from any applications like
-[OBS](https://en.wikipedia.org/wiki/OBS_Studio),
-[ffmpeg](https://en.wikipedia.org/wiki/FFmpeg) that can stream via RTMP in a few
-simple steps.
-
-## Step 1: Get your API Keys
-
-Login to the [Developer Portal](https://dev.dyte.io/) and create an account. Copy the [API Keys](https://dev.dyte.io/apikeys) for your organization from the Developer portal. These API Keys are unique to your organization and are required to use Dyte REST APIs such as when instantiating a meeting.
-
-To familiarize yourself with the Dyte REST APIs, we recommend exploring the [Dyte REST API Quickstart Guide](https://docs.dyte.io/guides/rest-apis/quickstart).
-
-## Step 2: Generate credentials for a livestream
-
-This step generates credentials and ingest URLs for the livestream.
-
-#### Request
-
-```bash
-curl --location --request POST 'https://api.dyte.io/v2/livestreams' \
- --header 'Content-Type: application/json' \
- --header 'Authorization: Basic ' \
- --data-raw '{
- "name": "test_livestream"
-}'
-```
-
-#### Response
-
-The response contains the `ingest_server`, livestream `id`, `stream_key`, and
-`playback_url`.
-
-```json
-{
- "success": true,
- "data": {
- "status": "OFFLINE",
- "name": "test_livestream",
- "meeting_id": null,
- "ingest_server": "rtmps://2bd803bb7b1.global-contribute.live-video.net:443/app/",
- "id": "9fb22eea-3392-42ad-b884-1129a4f517d2",
- "stream_key": "sk_ap-south-2_JKLBQlfOE_eb14jL5zj3lbj58xHSb",
- "playback_url": "https://2bd803bb7b1.ap-south-1.playback.live-video.net/api/video/v1/ap-south-1.944908621410.channel.e1lAS0BHpDxP.m3u8"
- }
-}
-```
-
-| **Parameters** | **Description** |
-| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| ingest_server | The ingest server URL in RTMP livestreaming is the server URL to which the RTMP encoder sends the video and audio data. The ingest server receives the RTMP stream and transcodes it into different video formats and bitrates, which can then be distributed to viewers through a content delivery network (CDN). It is essentially the address of the server where the video data is sent to be processed and distributed for live streaming. You need to enter the `ingest_server` along with `stream_key` in your application. See step 2. |
-| id | This is your livestream ID. |
-| stream_key | The stream key in RTMP livestreaming is a unique identifier that is used to authorize and link the RTMP encoder to a specific live stream. The stream key is like a password that allows the encoder to access the specific live stream on the server and start sending data to it. It is an important security measure to prevent unauthorized access to the live stream, as the stream key is needed to begin streaming to a specific event or channel. It's important to keep the stream key safe and secure. You need to enter the `stream_key` in your application. See step 2. |
-| playback_url | The playback URL is the web address that viewers can use to watch the live stream. Viewers can enter the playback URL into their web browser or use a media player that supports HLS or LHLS streaming to watch the live stream. |
-
-## Step 3: Specify RTMP ingestion URL for live streaming
-
-In your application, enter the ingestion URL you generated in the previous step.
-
-- If you're using [OBS](https://en.wikipedia.org/wiki/OBS_Studio), then enter the ingest server URL and stream key separately.
- 
-- However, for [ffmpeg](https://en.wikipedia.org/wiki/FFmpeg), you must specify
- both the ingest URL and the stream key together. For example:
-
- ```bash
- ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
- -acodec aac -vcodec h264 -f flv \
- rtmps://2ec802dd47b0.global-contribute.live-video.net:443/app/sk_ap-south-1_nDT9sbq3qZyf_SYSyPE7wnVGUQYNyejMe6Z3n
- ```
-
-## Fetch details of a livestream
-
-Using the livestream ID that you generated in the previous [step](/guides/livestream/advanced/livestream-any-rtmp#step-2-generate-credentials-for-a-livestream), you can fetch details of
-livestream.
-
-#### Request
-
-This request returns the `ingest_seconds`, `viewer_seconds`, `ingest_server`,
-`id`, `stream_key`, and `playback_url`.
-
-```bash
-curl --location \
- --request GET 'https://api.dyte.io/v2/livestreams/9fb22eea-3392-42ad-b884-1129a4f517d2' \
- --header 'Authorization: Basic '
-```
-
-:::info note
-
-The ingest and viewer seconds details are returned after 40-50 seconds; until then,
-they default to 60.
-
-:::
-
-#### Response
-
-```json
-{
- "success": true,
- "data": {
- "status": "OFFLINE",
- "name": "test_livestream",
- "meeting_id": null,
- "ingest_seconds": 0,
- "viewer_seconds": 0,
- "ingest_server": "rtmps://2bd803bb7b1.global-contribute.live-video.net:443/app/",
- "id": "9fb22eea-3392-42ad-b884-1129a4f517d2",
- "stream_key": "sk_ap-south-2_JKLBQlfOE_eb14jL5zj3lbj58xHSb",
- "playback_url": "https://2bd803bb7b1.ap-south-1.playback.live-video.net/api/video/v1/ap-south-1.944908621410.channel.e1lAS0BHpDxP.m3u8"
- }
-}
-```
-
-
- Custom / RTMP Video Input Guide
-
-
diff --git a/docs/guides/livestream/build-livestream-app.mdx b/docs/guides/livestream/build-livestream-app.mdx
deleted file mode 100644
index e100b4f922..0000000000
--- a/docs/guides/livestream/build-livestream-app.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Server Integration
-sidebar_position: 4
-description: >-
- Explore how to build a livestreaming app with Dyte's capabilities. Follow our
- guide for effective app development and integration.
----
-
-import IntegrateDyte from '/docs/partials/_integrate-dyte.mdx';
-import Admonition from '@theme/Admonition';
-
-
-
- It is important to understand that you need to create participants with
- two kinds of presets for livestreaming. One preset is used for the
- livestreaming host and the other preset is used for the
- livestreaming viewer .
-
-
- The host requires certain host controls such as the ability to Kick
- Participants, Mute Audio, Mute Video, and Pin Participant, as well as
- media permissions like Start Livestream and Admit or remove participants
- from the livestream. Ensure that you've selected those permissions for
- the host.
-
-
- }
-/>
-
-
- Server Integration Guide
-
-
diff --git a/docs/guides/livestream/client-setup/_category_.json b/docs/guides/livestream/client-setup/_category_.json
deleted file mode 100644
index 59c62c9939..0000000000
--- a/docs/guides/livestream/client-setup/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 4,
- "label": "Client Setup",
- "collapsible": true
-}
diff --git a/docs/guides/livestream/client-setup/android.mdx b/docs/guides/livestream/client-setup/android.mdx
deleted file mode 100644
index a7d2996af7..0000000000
--- a/docs/guides/livestream/client-setup/android.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Android
-sidebar_position: 4
-description: >-
- Learn how to set up the Livestream client on Android with Dyte. Follow our
- guide for effective Android client setup.
----
-
-import Quickstart from '/docs/partials/_android-quickstart.mdx';
-
-
-
-
- Android Guide
-
-
diff --git a/docs/guides/livestream/client-setup/angular.mdx b/docs/guides/livestream/client-setup/angular.mdx
deleted file mode 100644
index c86ea678c5..0000000000
--- a/docs/guides/livestream/client-setup/angular.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Angular
-sidebar_position: 1
-description: >-
- Explore the setup of the Livestream client in Angular with Dyte. Follow our
- guide for effective Angular client setup.
----
-
-import Quickstart from '/docs/partials/_angular-quickstart.mdx';
-
-
-
-
- Angular Guide
-
-
diff --git a/docs/guides/livestream/client-setup/flutter.mdx b/docs/guides/livestream/client-setup/flutter.mdx
deleted file mode 100644
index d4286a0bd0..0000000000
--- a/docs/guides/livestream/client-setup/flutter.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Flutter
-sidebar_position: 6
-description: >-
- Learn how to set up the Livestream client in Flutter with Dyte. Follow our
- guide for effective Flutter client setup.
----
-
-import Quickstart from '/docs/partials/_flutter-quickstart.mdx';
-
-
-
-
- Flutter Guide
-
-
diff --git a/docs/guides/livestream/client-setup/index.mdx b/docs/guides/livestream/client-setup/index.mdx
deleted file mode 100644
index 35bcc77eba..0000000000
--- a/docs/guides/livestream/client-setup/index.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Client Setup
----
-
-import ClientSetup from '/docs/partials/_client-setup-index.mdx';
-
-
-
-
- Client Setup Guide
-
-
diff --git a/docs/guides/livestream/client-setup/ios.mdx b/docs/guides/livestream/client-setup/ios.mdx
deleted file mode 100644
index ce3e7c3d75..0000000000
--- a/docs/guides/livestream/client-setup/ios.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: iOS
-sidebar_position: 5
-description: >-
- Get started with setting up the Livestream client on iOS with Dyte. Follow our
- guide for a seamless iOS client setup.
----
-
-import Quickstart from '/docs/partials/_ios-quickstart.mdx';
-
-
-
-
- iOS Guide
-
-
diff --git a/docs/guides/livestream/client-setup/javascript.mdx b/docs/guides/livestream/client-setup/javascript.mdx
deleted file mode 100644
index dbeeac8a25..0000000000
--- a/docs/guides/livestream/client-setup/javascript.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: HTML
-sidebar_position: 1
-description: >-
- Explore the setup of the Livestream client in JavaScript with Dyte. Follow our
- guide for effective JavaScript client setup.
----
-
-import Quickstart from '/docs/partials/_html-quickstart.mdx';
-
-
-
-
- HTML Guide
-
-
diff --git a/docs/guides/livestream/client-setup/react.mdx b/docs/guides/livestream/client-setup/react.mdx
deleted file mode 100644
index 59bc7e68bc..0000000000
--- a/docs/guides/livestream/client-setup/react.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: React
-sidebar_position: 1
-description: >-
- Learn how to set up the Livestream client in React with Dyte. Follow our guide
- for effective React client setup and integration.
----
-
-import Quickstart from '/docs/partials/_react-quickstart.mdx';
-
-
-
-
- React Guide
-
-
diff --git a/docs/guides/livestream/concepts.mdx b/docs/guides/livestream/concepts.mdx
deleted file mode 100644
index 8638dd15a6..0000000000
--- a/docs/guides/livestream/concepts.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Concepts
-sidebar_position: 2
----
-
-# Concepts
-
-This topic covers essential concepts related to Dyte's interactive live streaming (ILS). For the concepts related to live video applications, see [Video Conferencing concepts](/guides/live-video/concepts).
-
-## Interactive live streaming
-
-Interactive live streaming (ILS) is an engaging online broadcasting method where host and viewers can actively participate by interacting through comments, chat, polls, and other interactive features.
-
-## Stage
-
-Dyte's Interactive Live Streaming (ILS) feature revolves around a virtual **stage** where hosts have direct access and viewers can request to join.
-
-- **Hosts**: They have full control of the stage and can actively participate, share video and audio, conduct presentations, and more.
-- **Viewers**: They can request to join the stage using interactive features like chat or raised hand. Once approved by the host, viewers can contribute by sharing their video and audio or participating in discussions.
-
-The stage is where all the action happens. It's broadcasted live to all viewers, creating a real-time and engaging experience for everyone.
-
-## Restream
-
-Restreaming allows you to redistribute an existing live stream to multiple platforms or destinations simultaneously. It allows the content creator to broadcast their live stream to different streaming services, social media platforms, or CDNs, reaching a broader audience and maximizing the content's exposure. Restreaming is a many-to-many communication model, as it enables the simultaneous distribution of a single live stream to multiple platforms, rather than streaming separately to each platform.
-
-Dyte can restream your meeting to any platform that supports an RTMP endpoint, such as YouTube, Twitch, or LinkedIn.
-
-## Livestream custom video input
-
-Dyte supports live streaming from applications like
-[OBS](https://en.wikipedia.org/wiki/OBS_Studio),
-[ffmpeg](https://en.wikipedia.org/wiki/FFmpeg), and others. To put it simply,
-you can live stream any RTMP input from any source using Dyte.
-
-You can pass the custom input to the ingest server and stream key, and freely distribute it using the playback URL on any HLS/LHLS supported player.
-
-For more information, see [Livestream any custom video input](/guides/livestream/advanced/livestream-any-rtmp).
-
-
- Concepts Guide
-
diff --git a/docs/guides/livestream/get-started.mdx b/docs/guides/livestream/get-started.mdx
deleted file mode 100644
index 07e41420a6..0000000000
--- a/docs/guides/livestream/get-started.mdx
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Setup
-sidebar_position: 3
----
-
-To get started with creating live video calls from Dyte, make sure to finish these steps and then move on to integrating Dyte in your application.
-
-import Setup from '/docs/partials/_setup.mdx';
-
-
-
-
- Setup Guide
-
diff --git a/docs/guides/livestream/livestream-overview.mdx b/docs/guides/livestream/livestream-overview.mdx
deleted file mode 100644
index 1c425f181c..0000000000
--- a/docs/guides/livestream/livestream-overview.mdx
+++ /dev/null
@@ -1,139 +0,0 @@
----
-title: Overview
-sidebar_position: 1
-description: >-
- Get an overview of Dyte's livestreaming capabilities. Follow our guide for a
- comprehensive understanding of livestreaming features.
----
-
-Livestreaming is the real-time broadcasting of video or audio content over the internet, enabling viewers to watch and interact with events as they happen. Dyte offers livestreaming services to facilitates one-to-many communication, where a single source streams the content to multiple viewers or participants. It enables the hosts and participants to engage and interact during the stream, creating an interactive live streaming (ILS) experience.
-
-
-
-On this page, you will find an overview to help you craft an exceptional user experience with minimal hassle.
-
-- [Essentials](#essentials): Step by step guides to help you through the setup process and fundamental concepts
-- [Capabilities](#capabilities): Guides to functionalities that you can incrementally add to enhance your livestream experience
-- [UI Kit](#ui-kit): Learn about Dyte's prebuilt library of UI components through guides on integrating them and customizing them to align with your brand's identity
-- [Reference](#reference): Build a better understanding of the core SDK that provides APIs driving your live streaming experience along with references for the REST APIs that power your live streams
-
-## Essentials
-
-
-
-
-
-
-
-
-## Capabilities
-
-
-
-
-
-
-
-
-
-
-
-
-## UI Kit
-
-
- } />
- } />
- } />
- } />
- } />
- } />
- } />
-
-
-## Reference
-
-
-
-
- } />
- }
- />
- } />
- } />
- } />
- } />
-
-
-
- Overview Guide
-
-
diff --git a/docs/guides/migration/_category_.json b/docs/guides/migration/_category_.json
deleted file mode 100644
index 838bd705bc..0000000000
--- a/docs/guides/migration/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Migrate from Twilio/Vonage",
- "collapsible": true
-}
diff --git a/docs/guides/migration/opentok/_category_.json b/docs/guides/migration/opentok/_category_.json
deleted file mode 100644
index bbcc7d05bb..0000000000
--- a/docs/guides/migration/opentok/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 3,
- "label": "Migrate from Vonage/OpenTok",
- "collapsible": true
-}
diff --git a/docs/guides/migration/opentok/concept-media-opentok.mdx b/docs/guides/migration/opentok/concept-media-opentok.mdx
deleted file mode 100644
index e3105e0fc1..0000000000
--- a/docs/guides/migration/opentok/concept-media-opentok.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: 'Concepts: Media'
-sidebar_position: 2
-description: >-
- Explore the concept of media migration from OpenTok to Dyte. Follow our guide
- for effective media migration strategies.
----
-
-# Media
-
-This topic compares how OpenTok and Dyte handle media publishing and subscription behavior.
-
-## Publishing
-
-OpenTok
-
-```ts
-publisher = OT.initPublisher('replacementElementId');
-session.publish(publisher, function (error) {
- if (error) {
- console.log(error);
- } else {
- console.log('Publishing a stream.');
- }
-});
-```
-
-For more information, see [Publishing a stream](https://tokbox.com/developer/guides/publish-stream/js/).
-
-Dyte
-
-```ts
-DyteClient.init({
- authToken: '$TOKEN',
- defaults: {
- audio: true,
- video: true,
- },
-});
-```
-
-
- Concepts: Media Guide
-
-
diff --git a/docs/guides/migration/opentok/concepts-opentok-vs-dyte.mdx b/docs/guides/migration/opentok/concepts-opentok-vs-dyte.mdx
deleted file mode 100644
index 455dd25196..0000000000
--- a/docs/guides/migration/opentok/concepts-opentok-vs-dyte.mdx
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: 'Concepts: Basics'
-sidebar_position: 1
-description: >-
- Understand the concepts of OpenTok versus Dyte for effective migration. Follow
- our guide for a comprehensive comparison and migration strategy.
----
-
-This topic guides you through the standard practices utilized in OpenTok Video API and illustrates how they correspond with Dyte's API. The main purpose of this tutorial is to support you in migrating an existing application from OpenTok to Dyte's video and audio APIs.
-
-## Overview
-
-Here's a brief overview of the architecture used by OpenTok and Dyte.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-For more information on how to get started with Dyte, see [Integrate Dyte](/getting-started#integrate-dyte).
-
-## Credentials
-
-To access OpenTok's API, you need an session ID and auth Token. You generate a token for each user connecting to an OpenTok session. For more information, [Token Creation Overview](https://tokbox.com/developer/guides/create-token/).
-
-Dyte uses Organization ID and API Key that you can get from the [Developer Portal](https://dev.dyte.io).
-
-| **OpenTok** | **Dyte** |
-| ----------- | --------------- |
-| Session ID | Organization ID |
-| Auth token | API Key |
-
-## Session / Meeting
-
-OpenTok utilizes Sessions to establish connections between participants, whereas Dyte uses [Meetings](/api#/operations/create_meeting) for the same purpose.
-
-| **OpenTok** | **Dyte** |
-| ----------- | ---------- |
-| Session | Meeting |
-| Session ID | Meeting ID |
-
-## Participant Authentication
-
-In OpenTok, hashing function and secret are used to generate a participant access token. Foe example, for Java:
-
-```js
-import com.opentok.OpenTok;
-import com.opentok.exception.OpenTokException;
-
-class Test {
- public static void main(String argv[]) throws OpenTokException {
- // Set the following constants to your OpenTok API key and API secret.
- // See https://tokbox.com/account/.
- OpenTok opentok = new OpenTok(API_KEY, API_SECRET);
-
- //Generate a basic session. Or you could use an existing session ID.
- String sessionId = opentok.createSession().getSessionId();
-
- String token = opentok.generateToken(sessionId);
- System.out.println(token);
- }
-}
-```
-
-In Dyte, you make a REST API call to [Add Participant API](/api/#/operations/add_participant) which returns `authToken`.
-
-| **OpenTok** | **Dyte** |
-| ------------ | --------- |
-| Access Token | Authtoken |
-
-
- Concepts: Basics Guide
-
-
diff --git a/docs/guides/migration/opentok/opentok-shim-by-dyte.mdx b/docs/guides/migration/opentok/opentok-shim-by-dyte.mdx
deleted file mode 100644
index 6b470411ca..0000000000
--- a/docs/guides/migration/opentok/opentok-shim-by-dyte.mdx
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: Migrate from OpenTok to Dyte with Shim
-sidebar_position: 2
-description: >-
- Learn how to use the OpenTok Shim by Dyte for seamless migration. Follow our
- guide for effective shim implementation and integration.
----
-
-The OpenTok [Shim]() by Dyte is a package that allows you to migrate your video calling applications from [OpenTok](https://tokbox.com/developer/) to Dyte infrastructure.
-
-- Dyte provides a set of shim libraries that serve as seamless replacements for the Vonage video APIs (previously known as Tokbox OpenTok). These shims serve as a fundamental building block for migrating your application from OpenTok to Dyte infrastructure.
-- The `@dytesdk/opentok-shim` package serves as a wrapper over the Dyte SDK with an external API that is fully compatible with Opentok JS. As a drop-in replacement for Opentok JS, it can handle most of the methods and events that are present in the original library.
-
-Please [contact us](https://dyte.io/contact) for any help or support with the migration.
-
-## Start migrating from OpenTok to Dyte with Shim
-
-To get started with the Dyte Shim for OpenTok, do the following:
-
-1. Install the shim from the NPM registry using the following command:
-
-```bash npm
-npm install @dytesdk/opentok-shim
-```
-
-2. Once you have installed the package, you can use it in your project by importing it using the following statement:
-
-```bash
-import * as OT from "@dytesdk/opentok-shim";
-```
-
-## Usage
-
-The `@dytesdk/opentok-shim` shares the same API as the OpenTok video SDK. You can use most of the methods that are supported by it.
-
-Here are a few examples.
-
-### Connection
-
-To create a connection to an OpenTok session, you can use the `OT.initSession()` method. This method takes the following arguments:
-
-- Token
-- Session ID
-
-You can obtain Dyte authentication token `` using the [Add a Participant API](/api#/operations/add_participant).
-
-```ts
-const token = '';
-const sessionId = '';
-const session = OT.initSession(token, sessionId);
-```
-
-### Listen for the events
-
-This establishes an OpenTok session and listens for events such as `streamCreated`, `connectionCreated`, and `connectionDestroyed`.
-
-```ts
-session.on('streamCreated', function streamCreated(event) {
- console.log('[streamCreated] index.ts: ', event.stream);
- session.subscribe(
- event.stream,
- 'subscriber',
- {
- insertMode: 'append',
- width: '100%',
- height: '100%',
- },
- handleError,
- );
- // }
-});
-
-let connections: OT.Connection[] = [];
-session.on('connectionCreated', (connectionCreatedEvent) => {
- console.log('session connectionCreatedEvent: ', connectionCreatedEvent);
- connections.push(connectionCreatedEvent.connection);
-
- if (
- connections.find(
- (connection) =>
- connection.connectionId ===
- connectionCreatedEvent.connection.connectionId,
- )
- ) {
- console.log('connection already exists');
- return;
- }
- connections.push(connectionCreatedEvent.connection);
-});
-
-session.on('connectionDestroyed', (connectionDestroyedEvent) => {
- console.log('session connectionDestroyedEvent: ', connectionDestroyedEvent);
- connections = connections.filter(
- (connection) =>
- connection.connectionId !==
- connectionDestroyedEvent.connection.connectionId,
- );
-});
-```
-
-
- Migrate from OpenTok to Dyte with Shim Guide
-
-
diff --git a/docs/guides/migration/twilio/_category_.json b/docs/guides/migration/twilio/_category_.json
deleted file mode 100644
index 5db231b51a..0000000000
--- a/docs/guides/migration/twilio/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 2,
- "label": "Migrate from Twilio",
- "collapsible": true
-}
diff --git a/docs/guides/migration/twilio/basics.mdx b/docs/guides/migration/twilio/basics.mdx
deleted file mode 100644
index 0e0a233074..0000000000
--- a/docs/guides/migration/twilio/basics.mdx
+++ /dev/null
@@ -1,108 +0,0 @@
----
-title: "\U0001F524 Basics"
-sidebar_position: 2
----
-
-Here is a look at how the migration process would look for you if you choose to migrate from Twilio to Dyte
-
-## Creating a Room
-
-> Intuitively, a Room represents a virtual space where end-users communicate
-
-— Twilio Docs
-
->
-
-The equivalent of “Rooms” from Twilio in Dyte is “Meetings”.
-
-- In Twilio you create a room by calling the REST API https://www.twilio.com/docs/video/api/rooms-resource (or using a client library)
-
-- In Dyte you create a meeting by calling a similar REST API
- https://docs.dyte.io/api#/operations/create_meeting
-
-**Request**
-
-- You pass a `UniqueName` while creating a Room in Twilio
- There is no UniqueName equivalent in Dyte, you can optionally pass the `title` of meeting if want
-- If you want the recording to start when participants join you use `RecordParticipantsOnConnect` while creating a Room
- The equivalent parameter in Dyte is `record_on_start`
-- `MediaRegion` ”gll” is the default where Twilio decides the best region. In Dyte if you don't pass any region in `preferred_region` Dyte selects the best region automatically
-
-**Response**
-
-- In the response you get a `room_sid` in Twilio, you get a `meeting_id` in Dyte
-
-| **Twilio** | **Dyte** |
-| ---------- | ---------- |
-| Room | Meeting |
-| Room SID | Meeting ID |
-
-## Generating the participant token
-
-With Twilio you generate the JWT for the user on your own https://www.twilio.com/docs/video/tutorials/user-identity-access-tokens
-
-```ts
-const token = new AccessToken(twilioAccountSid, twilioApiKey, twilioApiSecret, {
- identity: identity,
-});
-token.addGrant(videoGrant);
-console.log(token.toJwt());
-```
-
-In Dyte, you make a REST API call to [Add Participant API](/api/#/operations/add_participant) which returns `authToken`.
-
-| **Twilio** | **Dyte** |
-| ------------ | --------- |
-| Access Token | Authtoken |
-
-## Installation
-
-Install the Dyte SDK.
-
-```js
-npm install @dytesdk/web-core
-```
-
-If you are using CDN / script tags install using
-
-```html
-
-```
-
-Now you can remove the Twilio SDK from your project by uninstalling the package.
-
-```
-npm uninstall twilio-video
-```
-
-Or if using the Twilio CDN script, remove the relevant script tag
-
-## Joining a Room
-
-Twilio
-
-```js
-import * as TwilioVideo from 'twilio-video';
-
-twilioRoom = await TwilioVideo.connect(TOKEN, {
- name: 'yourName',
- audio: false,
- video: false,
- dominantSpeaker: true,
-});
-```
-
-Dyte
-
-```js
-import DyteClient from '@dytesdk/web-core';
-
-meeting = await DyteClient.init({ authToken: TOKEN });
-await meeting.join();
-```
-
-Let's look at media next
-
-
- 🔤 Basics Guide
-
diff --git a/docs/guides/migration/twilio/concepts-twilio-vs-dyte.mdx b/docs/guides/migration/twilio/concepts-twilio-vs-dyte.mdx
deleted file mode 100644
index 5c46947c5b..0000000000
--- a/docs/guides/migration/twilio/concepts-twilio-vs-dyte.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: "\U0001F4A1 Concepts"
-sidebar_position: 1
-slug: concepts-twilio-vs-dyte
-description: >-
- Explore the concepts of Twilio versus Dyte for effective migration. Follow our
- guide for a comprehensive comparison and migration strategy.
----
-
-This topic guides you through the standard practices utilized in [Twilio Video API](https://www.twilio.com/docs/video) and illustrates how they correspond with Dyte's API. The main purpose of this tutorial is to support you in migrating an existing application from Twilio to Dyte's video and audio APIs.
-
-## Overview
-
-Here's a brief overview of the architecture used by Twilio and Dyte.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-For more information on how to get started with Dyte, see [Integrate Dyte](/getting-started#integrate-dyte).
-
-## Credentials
-
-To access Twilio's API, you need an Account SID and Auth Token which can be obtained from `console.twilio.com`. Dyte uses Organization ID and API Key that you can get from the [Developer Portal](https://dev.dyte.io).
-
-It's important to note that the credentials for both Twilio and Dyte are intended to be used only on the server-side.
-
-| **Twilio** | **Dyte** |
-| ----------- | --------------- |
-| Account SID | Organization ID |
-| API Secret | API Key |
-
-
- 💡 Concepts Guide
-
-
diff --git a/docs/guides/migration/twilio/feature-comparison.mdx b/docs/guides/migration/twilio/feature-comparison.mdx
deleted file mode 100644
index 183547851a..0000000000
--- a/docs/guides/migration/twilio/feature-comparison.mdx
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: "\U0001F9EE Compatibility Matrix"
-wrapperClassName: test2
-sidebar_position: 5
----
-
-
-
-## Features
-
-| **Feature** | **Twilio web** | **Twilio iOS** | **Twilio Android** | **Dyte Web** | **Dyte iOS** | **Dyte Android** |
-| ---------------------------- | -------------- | -------------- | ------------------ | ------------ | ------------ | ---------------- |
-| Join | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Start audio/speaker | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Mute | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Unmute | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Start video | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Stop video | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Virtual background | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
-| Render user video | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Leave | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| PSTN | ✅ | ✅ | ✅ | 🔵 | 🔵 | 🔵 |
-| Recording | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Recording composition | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Network bandwidth management | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Noise cancellation | ✅ + Krisp | ✅ + Krisp | ✅ + Krisp | ✅ + Krisp | ✅ + Krisp | ✅ + Krisp |
-| Preview | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Screenshare | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Data center selection | ✅ | ✅ | ✅⭐ | ✅ ⭐ | ✅ ⭐ | ✅ ⭐ |
-| Reconnection | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Webview Support (Web SDK) | ✅ | N/A | N/A | ✅ | N/A | N/A |
-| Video Devices | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Speaker Devices | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Mic Devices | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Data Tracks API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Quality of Service | ✅ HTTP | ✅ HTTP | ✅ HTTP | ✅ HTTP | ✅ HTTP | ✅ HTTP |
-| Analytics | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Diagnostic CS Tooling | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
-| Reports | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-| Callkit (iOS) | N/A | ✅ | N/A | N/A | 🟠 | N/A |
-| PiP (iOS) | N/A | ✅ | N/A | N/A | ❌ | N/A |
-
-
-
-:::tip
-
-
-
-Download a detailed benchmarking report to compare features, technical specs and pricing to choose the most suitable Twilio Video replacement.
-
-
-
-
-
-:::
-
-1. **PSTN** 🔵 : Can integrate with third-party SIP to provide telephony support.
-
-2. **Callkit (iOS)** 🟠 : Customers can add it at their end, sample code is available.
-
-3. **Data center selection** ⭐ : With Twilio a Room can only take place in one Data Center at a time, so that means if a user from the US is connecting with a user in India, a region in the middle of two (like Europe) would be choose by default under 'gcc'. In Dyte a single media meeting can take place across multiple regions (Beta), so for the previous example the US user will connect to the US region and the Indian user to the India region.
-
-
-
-## Metrics / Quotas
-
-| \* | **Twilio** | **Dyte** |
-| --------------------------------------------- | ---------- | -------- |
-| Max participants per Room | 50 | 10000\* |
-| Max Audio Track Publications per Room | 60 | 300 |
-| Max Video Track Publications per Room | 60 | 300 |
-| Max Data Track Publications per Room | 60 | MAX_ROOM |
-| Max Audio Track Subscriptions per Participant | 60 | 30 |
-| Max Video Track Subscriptions per Participant | 60 | 30 |
-| Max Data Track Subscriptions per Participant | 60 | MAX_ROOM |
-| Max Audio Track Publications per Participant | 2 | 2 |
-| Max Video Track Publications per Participant | 6 | 2 |
-
-
* Default quota is 1000, contact [support](https://dyte.io/contact) to
-increase it upto 10000.
-
-
-
-
-**Note:** These are upper bound numbers and it might not be possible to reach the maximum of multiple of these metrics at the same time. For example, in a scenario where participants in Room (Meeting) = 10000; we will not be able to do 300 publications per Room with 30 subscriptions per Participant.
-
-Reach out to us at support [at] dyte.io to understand how we can accommodate your limits.
-
-
-
-
- 🧮 Compatibility Matrix Guide
-
diff --git a/docs/guides/migration/twilio/media.mdx b/docs/guides/migration/twilio/media.mdx
deleted file mode 100644
index 7ace751f93..0000000000
--- a/docs/guides/migration/twilio/media.mdx
+++ /dev/null
@@ -1,180 +0,0 @@
----
-title: "\U0001F3AC Media"
-sidebar_position: 3
----
-
-## Publish-Subscribe Model
-
-In Twilio all the media operations are done using a publish subscribe model. Eg to show your video to a remote peer you
-
-1. Acquire your camera track
-2. Publish the track
-3. Listen for new track published events on remote peer
-4. Subscribe to the track on the remote peer if required
-5. Render the track
-
-While this level of manual control is available on Dyte, but the default behaviour is much simpler
-
-```js
-meeting.self.enableVideo();
-```
-
-It will internally acquire, publish, make the remote peer subscribe to the track
-
-## Video
-
-While Twilio requires [additional configuration to set the quality of the video](https://www.twilio.com/docs/video/tutorials/developing-high-quality-video-applications), Dyte handles the video quality automatically based on network conditions and device capabilities. In low bandwidth environments Dyte prioritizes audio and FPS over video resolution.
-
-**Twilio**
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-chat
-
diff --git a/docs/ui-kit/components/dyte-clock.mdx b/docs/ui-kit/components/dyte-clock.mdx
deleted file mode 100644
index ebd42f3e00..0000000000
--- a/docs/ui-kit/components/dyte-clock.mdx
+++ /dev/null
@@ -1,24 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-clock.svg
-description: >-
- Learn how to use and customize the dyte-clock component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-clock
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-clock
-
diff --git a/docs/ui-kit/components/dyte-confirmation-modal.mdx b/docs/ui-kit/components/dyte-confirmation-modal.mdx
deleted file mode 100644
index 80fcd5bb90..0000000000
--- a/docs/ui-kit/components/dyte-confirmation-modal.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-confirmation-modal component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-confirmation-modal
-
-A confirmation modal.
-
-## Props
-
-
-
-
- UI Kit dyte-confirmation-modal
-
diff --git a/docs/ui-kit/components/dyte-controlbar-button.mdx b/docs/ui-kit/components/dyte-controlbar-button.mdx
deleted file mode 100644
index 48e806a416..0000000000
--- a/docs/ui-kit/components/dyte-controlbar-button.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-controlbar-button.svg
-description: >-
- Learn how to use and customize the dyte-controlbar-button component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-controlbar-button
-
-A skeleton component used for composing buttons.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-controlbar-button
-
diff --git a/docs/ui-kit/components/dyte-controlbar.mdx b/docs/ui-kit/components/dyte-controlbar.mdx
deleted file mode 100644
index ec810825c6..0000000000
--- a/docs/ui-kit/components/dyte-controlbar.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-controlbar component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-controlbar
-
-Controlbar component provides you with various designs as variants.
-
-## Props
-
-
-
-
- UI Kit dyte-controlbar
-
diff --git a/docs/ui-kit/components/dyte-dialog-manager.mdx b/docs/ui-kit/components/dyte-dialog-manager.mdx
deleted file mode 100644
index 2cf08720d2..0000000000
--- a/docs/ui-kit/components/dyte-dialog-manager.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-dialog-manager component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-dialog-manager
-
-A component which handles all dialog elements in a component such as:
-
-- dyte-settings
-- dyte-leave-meeting
-- dyte-permissions-message
-- dyte-image-viewer
-- dyte-remote-access-manager
-- dyte-breakout-rooms-manager
-
-This components depends on the values from `states` object.
-
-```html
-Show Settings
-Show Settings
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-dialog-manager
-
diff --git a/docs/ui-kit/components/dyte-dialog.mdx b/docs/ui-kit/components/dyte-dialog.mdx
deleted file mode 100644
index 50d50b2317..0000000000
--- a/docs/ui-kit/components/dyte-dialog.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-dialog.svg
-description: >-
- Learn how to use and customize the dyte-dialog component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-dialog
-
-A dialog component.
-
-```html
-Show dialog
-
-
-
Hello!
-
This is some text inside dialog!
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-dialog
-
diff --git a/docs/ui-kit/components/dyte-emoji-picker.mdx b/docs/ui-kit/components/dyte-emoji-picker.mdx
deleted file mode 100644
index 4d00312a69..0000000000
--- a/docs/ui-kit/components/dyte-emoji-picker.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-emoji-picker.svg
-description: >-
- Learn how to use and customize the dyte-emoji-picker component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-emoji-picker
-
-A very simple emoji picker component.
-
-```html
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-emoji-picker
-
diff --git a/docs/ui-kit/components/dyte-ended-screen.mdx b/docs/ui-kit/components/dyte-ended-screen.mdx
deleted file mode 100644
index c68b2dec9a..0000000000
--- a/docs/ui-kit/components/dyte-ended-screen.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-ended-screen.svg
-description: >-
- Learn how to use and customize the dyte-ended-screen component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-ended-screen
-
-A screen which shows a meeting has ended.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-ended-screen
-
diff --git a/docs/ui-kit/components/dyte-file-message.mdx b/docs/ui-kit/components/dyte-file-message.mdx
deleted file mode 100644
index 6a1082c28f..0000000000
--- a/docs/ui-kit/components/dyte-file-message.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-file-message component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-file-message
-
-A component which renders a file message from chat.
-
-## Props
-
-
-
-
- UI Kit dyte-file-message
-
diff --git a/docs/ui-kit/components/dyte-fullscreen-toggle.mdx b/docs/ui-kit/components/dyte-fullscreen-toggle.mdx
deleted file mode 100644
index f63aa77a44..0000000000
--- a/docs/ui-kit/components/dyte-fullscreen-toggle.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-fullscreen-toggle component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-fullscreen-toggle
-
-A button which toggles full screen mode for any
-existing `dyte-meeting` component in the DOM.
-
-```html
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-fullscreen-toggle
-
diff --git a/docs/ui-kit/components/dyte-grid-pagination.mdx b/docs/ui-kit/components/dyte-grid-pagination.mdx
deleted file mode 100644
index d5e072f157..0000000000
--- a/docs/ui-kit/components/dyte-grid-pagination.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-grid-pagination.svg
-description: >-
- Learn how to use and customize the dyte-grid-pagination component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-grid-pagination
-
-A component which allows you to change current page and view mode
-of active participants list. This is reflected in the `dyte-grid` component.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-grid-pagination
-
diff --git a/docs/ui-kit/components/dyte-grid.mdx b/docs/ui-kit/components/dyte-grid.mdx
deleted file mode 100644
index d927758cfe..0000000000
--- a/docs/ui-kit/components/dyte-grid.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-grid.svg
-description: >-
- Learn how to use and customize the dyte-grid component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-grid
-
-The main grid component which abstracts all the grid handling logic and renders it for you.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-grid
-
diff --git a/docs/ui-kit/components/dyte-header.mdx b/docs/ui-kit/components/dyte-header.mdx
deleted file mode 100644
index 7433d227d9..0000000000
--- a/docs/ui-kit/components/dyte-header.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-header component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-header
-
-A component that houses all the header components.
-
-## Props
-
-
-
-
- UI Kit dyte-header
-
diff --git a/docs/ui-kit/components/dyte-icon.mdx b/docs/ui-kit/components/dyte-icon.mdx
deleted file mode 100644
index d7f7653348..0000000000
--- a/docs/ui-kit/components/dyte-icon.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-icon component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-icon
-
-An icon component which accepts an svg string and renders it.
-
-```html
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-icon
-
diff --git a/docs/ui-kit/components/dyte-idle-screen.mdx b/docs/ui-kit/components/dyte-idle-screen.mdx
deleted file mode 100644
index 743c780a00..0000000000
--- a/docs/ui-kit/components/dyte-idle-screen.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-idle-screen.svg
-description: >-
- Learn how to use and customize the dyte-idle-screen component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-idle-screen
-
-A screen that handles the idle state,
-i.e; when you are waiting for data about the meeting, specifically the `meeting` object.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-idle-screen
-
diff --git a/docs/ui-kit/components/dyte-image-message.mdx b/docs/ui-kit/components/dyte-image-message.mdx
deleted file mode 100644
index 6e70e9a6c9..0000000000
--- a/docs/ui-kit/components/dyte-image-message.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-image-message component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-image-message
-
-A component which renders an image message from chat.
-
-## Props
-
-
-
-
- UI Kit dyte-image-message
-
diff --git a/docs/ui-kit/components/dyte-image-viewer.mdx b/docs/ui-kit/components/dyte-image-viewer.mdx
deleted file mode 100644
index f2ab131be6..0000000000
--- a/docs/ui-kit/components/dyte-image-viewer.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-image-viewer.svg
-description: >-
- Learn how to use and customize the dyte-image-viewer component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-image-viewer
-
-A component which shows an image sent via chat.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-image-viewer
-
diff --git a/docs/ui-kit/components/dyte-leave-button.mdx b/docs/ui-kit/components/dyte-leave-button.mdx
deleted file mode 100644
index bd9cda50b9..0000000000
--- a/docs/ui-kit/components/dyte-leave-button.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-leave-button component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-leave-button
-
-A button which toggles visilibility of the leave confirmation dialog.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-leave-button
-
diff --git a/docs/ui-kit/components/dyte-leave-meeting.mdx b/docs/ui-kit/components/dyte-leave-meeting.mdx
deleted file mode 100644
index d2a5a26124..0000000000
--- a/docs/ui-kit/components/dyte-leave-meeting.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-leave-meeting.svg
-description: >-
- Learn how to use and customize the dyte-leave-meeting component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-leave-meeting
-
-A component which allows you to leave a meeting or
-end meeting for all, if you have the permission.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-leave-meeting
-
diff --git a/docs/ui-kit/components/dyte-logo.mdx b/docs/ui-kit/components/dyte-logo.mdx
deleted file mode 100644
index c4b13eed12..0000000000
--- a/docs/ui-kit/components/dyte-logo.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-logo.svg
-description: >-
- Learn how to use and customize the dyte-logo component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-logo
-
-A component which loads the logo from your config, or via the `logo-url` attribute.
-
-```html
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-logo
-
diff --git a/docs/ui-kit/components/dyte-meeting-title.mdx b/docs/ui-kit/components/dyte-meeting-title.mdx
deleted file mode 100644
index 632b1b192a..0000000000
--- a/docs/ui-kit/components/dyte-meeting-title.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-meeting-title.svg
-description: >-
- Learn how to use and customize the dyte-meeting-title component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-meeting-title
-
-A component which displays the title of the meeting.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-meeting-title
-
diff --git a/docs/ui-kit/components/dyte-meeting.mdx b/docs/ui-kit/components/dyte-meeting.mdx
deleted file mode 100644
index 79c790f072..0000000000
--- a/docs/ui-kit/components/dyte-meeting.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-meeting.svg
-description: >-
- Learn how to use and customize the dyte-meeting component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-meeting
-
-A single component which renders an entire meeting UI.
-
-It loads your preset and renders the UI based on it.
-With this component, you don't have to handle all the states,
-dialogs and other smaller bits of managing the application.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-meeting
-
diff --git a/docs/ui-kit/components/dyte-menu-item.mdx b/docs/ui-kit/components/dyte-menu-item.mdx
deleted file mode 100644
index a153807d7e..0000000000
--- a/docs/ui-kit/components/dyte-menu-item.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-menu-item component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-menu-item
-
-A menu item component.
-
-```html
-
- Top Menu
-
- alert()
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-menu-item
-
diff --git a/docs/ui-kit/components/dyte-menu-list.mdx b/docs/ui-kit/components/dyte-menu-list.mdx
deleted file mode 100644
index 505be1875c..0000000000
--- a/docs/ui-kit/components/dyte-menu-list.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-menu-list component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-menu-list
-
-A menu list component.
-
-```html
-
- Top Menu
-
- alert()
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-menu-list
-
diff --git a/docs/ui-kit/components/dyte-menu.mdx b/docs/ui-kit/components/dyte-menu.mdx
deleted file mode 100644
index 04ef2eb694..0000000000
--- a/docs/ui-kit/components/dyte-menu.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-menu.svg
-description: >-
- Learn how to use and customize the dyte-menu component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-menu
-
-A menu component.
-
-```html
-
- Top Menu
-
- alert()
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-menu
-
diff --git a/docs/ui-kit/components/dyte-mic-toggle.mdx b/docs/ui-kit/components/dyte-mic-toggle.mdx
deleted file mode 100644
index d0e28857de..0000000000
--- a/docs/ui-kit/components/dyte-mic-toggle.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-mic-toggle component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-mic-toggle
-
-A button which toggles your microphone.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-mic-toggle
-
diff --git a/docs/ui-kit/components/dyte-mixed-grid.mdx b/docs/ui-kit/components/dyte-mixed-grid.mdx
deleted file mode 100644
index 69dfe9f8af..0000000000
--- a/docs/ui-kit/components/dyte-mixed-grid.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-mixed-grid.svg
-description: >-
- Learn how to use and customize the dyte-mixed-grid component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-mixed-grid
-
-A grid component which handles screenshares, plugins and participants.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-mixed-grid
-
diff --git a/docs/ui-kit/components/dyte-more-toggle.mdx b/docs/ui-kit/components/dyte-more-toggle.mdx
deleted file mode 100644
index e00d78fbcd..0000000000
--- a/docs/ui-kit/components/dyte-more-toggle.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-more-toggle component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-more-toggle
-
-A button which toggles visibility of a more menu.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeMoreMenu: boolean;
-}
-```
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-more-toggle
-
diff --git a/docs/ui-kit/components/dyte-name-tag.mdx b/docs/ui-kit/components/dyte-name-tag.mdx
deleted file mode 100644
index c1a99065f6..0000000000
--- a/docs/ui-kit/components/dyte-name-tag.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-name-tag.svg
-description: >-
- Learn how to use and customize the dyte-name-tag component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-name-tag
-
-A component which shows a participant's name.
-
-```html
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-name-tag
-
diff --git a/docs/ui-kit/components/dyte-network-indicator.mdx b/docs/ui-kit/components/dyte-network-indicator.mdx
deleted file mode 100644
index 862b1c25db..0000000000
--- a/docs/ui-kit/components/dyte-network-indicator.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-network-indicator component in Dyte's React UI
- Kit with our detailed documentation.
----
-
-# dyte-network-indicator
-
-A component that indicates poor network connection.
-
-```html
-
-
-
-```
-
-It listens to the mediaScoreUpdate event of the passed participant to get the score.
-
-```tsx
-participant.addListener(
- 'mediaScoreUpdate',
- ({ kind, isScreenshare, score, scoreStats }) => {
- console.log(
- `Score for ${isScreenshare ? 'screen share' : ''} ${kind} was:: ${score}`,
- );
- },
-);
-```
-
-:::note info
-
-This component will only be visible if the network quality is poor (less than or equal to 3, on a scale of 5, 5 being best).
-
-:::
-
-## Props
-
-
-
-
- React UI Kit dyte-network-indicator
-
diff --git a/docs/ui-kit/components/dyte-notification.mdx b/docs/ui-kit/components/dyte-notification.mdx
deleted file mode 100644
index c0a8258524..0000000000
--- a/docs/ui-kit/components/dyte-notification.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-notification.svg
-description: >-
- Learn how to use and customize the dyte-notification component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-notification
-
-A component which shows a notification.
-
-You need to remove the element after you receive the
-`dyteNotificationDismiss` event.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-notification
-
diff --git a/docs/ui-kit/components/dyte-notifications.mdx b/docs/ui-kit/components/dyte-notifications.mdx
deleted file mode 100644
index dc10636f9c..0000000000
--- a/docs/ui-kit/components/dyte-notifications.mdx
+++ /dev/null
@@ -1,175 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-notifications component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-notifications
-
-A component which handles notifications.
-
-You can configure which notifications you want to see and which ones you want to hear.
-There are also certain limits which you can set as well.
-
-This is an example which passes the default configuration for notifications.
-
-```html
-
-
-
-```
-
-All these configurations take a specific category of notifications. Available
-categories are `participant_joined`, `participant_left`,
-`participant_joined_waitlist`, `chat`, `polls`, `webinar`, `tab_sync`.
-
-## Notifications Popup
-
-It is possible to customize which activity needs to show a notification alert.
-Use the `notifications` configuration to update individual category of
-notifications.
-
-All categories are enabled by default.
-
-To disable specific category of notifications set the value of the category to
-`false` like below.
-
-```html
-
-
-
-```
-
-## Notification duration
-
-Similar to notification popup, it is possible to customize the duration of the
-notification popup displayed on screen. By using the `notification_duration`
-configuration, it is possible to change the duration for individual category of
-notifications.
-
-Here are the default display durations (in milliseconds)
-
- participant_joined: 2000
- participant_left: 2000
- participant_joined_waitlist: 4000
- chat: 2000
- polls: 2000
- webinar: 2000
- tab_sync: 2000
-
-To change the duration for a specific category of notifications set the value of
-the category to the milliseconds.
-
-```html
-
-
-
-```
-
-## Notification Sound
-
-It is possible to turn off the notification sound for specific category of
-notifications.
-
-To disable sound for a specific category of notifications set the value of the
-category to `false` like below.
-
-```html
-
-
-
-```
-
-## Controlling sound once participants count
-
-It is possible to disable notification / sound automatically once the number of
-participants cross a certain limit.
-
-Turn off the notification sound for new chat messages after 10 participants
-
-```jsx
-const config = {
- participant_chat_message_sound_notification_limit: 10,
-};
-```
-
-Turn off the notification sound for participant joined notifications after 10
-participants
-
-```jsx
-const config = {
- participant_joined_sound_notification_limit: 10,
-};
-```
-
-Currently the number of configurations are limited, we are adding it for more
-categories soon.
-
-## Props
-
-
-
-
- UI Kit dyte-notifications
-
diff --git a/docs/ui-kit/components/dyte-overlay-modal.mdx b/docs/ui-kit/components/dyte-overlay-modal.mdx
deleted file mode 100644
index 8246bc4c32..0000000000
--- a/docs/ui-kit/components/dyte-overlay-modal.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-overlay-modal component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-overlay-modal
-
-A confirmation modal.
-
-## Props
-
-
-
-
- UI Kit dyte-overlay-modal
-
diff --git a/docs/ui-kit/components/dyte-participant-count.mdx b/docs/ui-kit/components/dyte-participant-count.mdx
deleted file mode 100644
index f27d931ddc..0000000000
--- a/docs/ui-kit/components/dyte-participant-count.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participant-count.svg
-description: >-
- Learn how to use and customize the dyte-participant-count component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-participant-count
-
-A component which shows count of total joined participants in a meeting.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-participant-count
-
diff --git a/docs/ui-kit/components/dyte-participant-tile.mdx b/docs/ui-kit/components/dyte-participant-tile.mdx
deleted file mode 100644
index 7fa3363af2..0000000000
--- a/docs/ui-kit/components/dyte-participant-tile.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participant-tile.svg
-description: >-
- Learn how to use and customize the dyte-participant-tile component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-participant-tile
-
-A component which plays a participants video and allows for placement
-of components like `dyte-name-tag`, `dyte-audio-visualizer` or any other component.
-
-```html
-
-
-
-
-
-
-
-```
-
-You can change the `name-tag-position` to any of the supported values
-and change the placement of audio-visualizer in name-tag as well.
-
-```html
-
-
-
-
-
-
-
-```
-
-It also has a few variants.
-
-```html
-
-
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-participant-tile
-
diff --git a/docs/ui-kit/components/dyte-participant.mdx b/docs/ui-kit/components/dyte-participant.mdx
deleted file mode 100644
index c4d5e80418..0000000000
--- a/docs/ui-kit/components/dyte-participant.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-participant component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-participant
-
-A participant entry component used inside `dyte-participants` which shows data like:
-name, picture and media device status.
-
-You can perform privileged actions on the participant too.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-participant
-
diff --git a/docs/ui-kit/components/dyte-participants-audio.mdx b/docs/ui-kit/components/dyte-participants-audio.mdx
deleted file mode 100644
index 7e7f9f4085..0000000000
--- a/docs/ui-kit/components/dyte-participants-audio.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participants-audio.svg
-description: >-
- Learn how to use and customize the dyte-participants-audio component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-participants-audio
-
-A component which plays all the audio from participants and screenshares.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-participants-audio
-
diff --git a/docs/ui-kit/components/dyte-participants-stage-list.mdx b/docs/ui-kit/components/dyte-participants-stage-list.mdx
deleted file mode 100644
index 52c9f607ab..0000000000
--- a/docs/ui-kit/components/dyte-participants-stage-list.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-participants-stage-list component in
- Dyte's UI Kit with our detailed documentation.
----
-
-# dyte-participants-stage-list
-
-A component which lists all participants, with ability to
-run privileged actions on each participant according to your permissions.
-
-## Props
-
-
-
-
- UI Kit dyte-participants-stage-list
-
diff --git a/docs/ui-kit/components/dyte-participants-toggle.mdx b/docs/ui-kit/components/dyte-participants-toggle.mdx
deleted file mode 100644
index 96fb508b9b..0000000000
--- a/docs/ui-kit/components/dyte-participants-toggle.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-participants-toggle component in
- Dyte's UI Kit with our detailed documentation.
----
-
-# dyte-participants-toggle
-
-A button which toggles visibility of participants.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSidebar: boolean;
- sidebar: 'participants' | 'none';
-}
-```
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-participants-toggle
-
diff --git a/docs/ui-kit/components/dyte-participants.mdx b/docs/ui-kit/components/dyte-participants.mdx
deleted file mode 100644
index 809e3712fa..0000000000
--- a/docs/ui-kit/components/dyte-participants.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-participants.svg
-description: >-
- Learn how to use and customize the dyte-participants component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-participants
-
-A component which lists all participants, with ability to
-run privileged actions on each participant according to your permissions.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-participants
-
diff --git a/docs/ui-kit/components/dyte-permissions-message.mdx b/docs/ui-kit/components/dyte-permissions-message.mdx
deleted file mode 100644
index 2ad43ad38b..0000000000
--- a/docs/ui-kit/components/dyte-permissions-message.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-permissions-message component in
- Dyte's UI Kit with our detailed documentation.
----
-
-# dyte-permissions-message
-
-A component which shows permission related troubleshooting
-information.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-permissions-message
-
diff --git a/docs/ui-kit/components/dyte-plugin-main.mdx b/docs/ui-kit/components/dyte-plugin-main.mdx
deleted file mode 100644
index 6ce90a7043..0000000000
--- a/docs/ui-kit/components/dyte-plugin-main.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-plugin-main.svg
-description: >-
- Learn how to use and customize the dyte-plugin-main component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-plugin-main
-
-A component which loads a plugin.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-plugin-main
-
diff --git a/docs/ui-kit/components/dyte-plugins-toggle.mdx b/docs/ui-kit/components/dyte-plugins-toggle.mdx
deleted file mode 100644
index f27f042410..0000000000
--- a/docs/ui-kit/components/dyte-plugins-toggle.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-plugins-toggle component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-plugins-toggle
-
-A button which toggles visibility of plugins.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSidebar: boolean;
- sidebar: 'plugins' | 'none';
-}
-```
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-plugins-toggle
-
diff --git a/docs/ui-kit/components/dyte-plugins.mdx b/docs/ui-kit/components/dyte-plugins.mdx
deleted file mode 100644
index ec8380f59e..0000000000
--- a/docs/ui-kit/components/dyte-plugins.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-plugins.svg
-description: >-
- Learn how to use and customize the dyte-plugins component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-plugins
-
-A component which lists all available plugins from their preset,
-and ability to enable or disable plugins.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-plugins
-
diff --git a/docs/ui-kit/components/dyte-poll-form.mdx b/docs/ui-kit/components/dyte-poll-form.mdx
deleted file mode 100644
index 7f11e45724..0000000000
--- a/docs/ui-kit/components/dyte-poll-form.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-poll-form component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-poll-form
-
-A component that lets you create a poll.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-poll-form
-
diff --git a/docs/ui-kit/components/dyte-poll.mdx b/docs/ui-kit/components/dyte-poll.mdx
deleted file mode 100644
index 2d13ffe15a..0000000000
--- a/docs/ui-kit/components/dyte-poll.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-poll component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-poll
-
-A poll component.
-
-Shows a poll where a user can vote.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-poll
-
diff --git a/docs/ui-kit/components/dyte-polls-toggle.mdx b/docs/ui-kit/components/dyte-polls-toggle.mdx
deleted file mode 100644
index 5eecc6cc5b..0000000000
--- a/docs/ui-kit/components/dyte-polls-toggle.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-polls-toggle component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-polls-toggle
-
-A button which toggles visibility of polls.
-
-You need to pass the `meeting` object to it to see the unread polls count badge.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSidebar: boolean;
- sidebar: 'polls' | 'none';
-}
-```
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-polls-toggle
-
diff --git a/docs/ui-kit/components/dyte-polls.mdx b/docs/ui-kit/components/dyte-polls.mdx
deleted file mode 100644
index 33dba57ec3..0000000000
--- a/docs/ui-kit/components/dyte-polls.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-polls.svg
-description: >-
- Learn how to use and customize the dyte-polls component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-polls
-
-A component which lists all available plugins a user can access with
-the ability to enable or disable them as per their permissions.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-polls
-
diff --git a/docs/ui-kit/components/dyte-recording-indicator.mdx b/docs/ui-kit/components/dyte-recording-indicator.mdx
deleted file mode 100644
index f4ec6e5898..0000000000
--- a/docs/ui-kit/components/dyte-recording-indicator.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-recording-indicator.svg
-description: >-
- Learn how to use and customize the dyte-recording-indicator component in
- Dyte's UI Kit with our detailed documentation.
----
-
-# dyte-recording-indicator
-
-A component which indicates the recording status of a meeting.
-
-It will not render anything if no recording is taking place.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-recording-indicator
-
diff --git a/docs/ui-kit/components/dyte-recording-toggle.mdx b/docs/ui-kit/components/dyte-recording-toggle.mdx
deleted file mode 100644
index c38be769a2..0000000000
--- a/docs/ui-kit/components/dyte-recording-toggle.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-recording-toggle component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-recording-toggle
-
-A button which toggles recording state of a meeting.
-
-Only a privileged user can perform this action,
-thus the button will not be visible for participants
-who don't have the permission to record a meeting.
-
-Note that the toggle button won't be rendered if you do not have the
-necessary permission.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-recording-toggle
-
diff --git a/docs/ui-kit/components/dyte-remote-access-manager.mdx b/docs/ui-kit/components/dyte-remote-access-manager.mdx
deleted file mode 100644
index 9e560949b6..0000000000
--- a/docs/ui-kit/components/dyte-remote-access-manager.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-remote-access-manager.svg
-description: >-
- Learn how to use and customize the dyte-remote-access-manager component in
- Dyte's UI Kit with our detailed documentation.
----
-
-# dyte-remote-access-manager
-
-A component which lets a user manage remote access requests for their screen.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-remote-access-manager
-
diff --git a/docs/ui-kit/components/dyte-screen-share-toggle.mdx b/docs/ui-kit/components/dyte-screen-share-toggle.mdx
deleted file mode 100644
index 58b0f47436..0000000000
--- a/docs/ui-kit/components/dyte-screen-share-toggle.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-screen-share-toggle component in
- Dyte's UI Kit with our detailed documentation.
----
-
-# dyte-screen-share-toggle
-
-A button which toggles your screenshare.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-screen-share-toggle
-
diff --git a/docs/ui-kit/components/dyte-screenshare-view.mdx b/docs/ui-kit/components/dyte-screenshare-view.mdx
deleted file mode 100644
index 97934d08a5..0000000000
--- a/docs/ui-kit/components/dyte-screenshare-view.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-screenshare-view.svg
-description: >-
- Learn how to use and customize the dyte-screenshare-view component in Dyte's
- UI Kit with our detailed documentation.
----
-
-# dyte-screenshare-view
-
-A component which plays a participant's screenshared video.
-
-It also allows for placement of other components similar to `dyte-participant-tile`.
-
-This component will not render anything if the participant hasn't start screensharing.
-
-```html
-
-
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-screenshare-view
-
diff --git a/docs/ui-kit/components/dyte-settings-audio.mdx b/docs/ui-kit/components/dyte-settings-audio.mdx
deleted file mode 100644
index 5294dfbaa1..0000000000
--- a/docs/ui-kit/components/dyte-settings-audio.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-settings-audio component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-settings-audio
-
-A component which lets to manage your audio devices and audio preferences.
-
-Emits `dyteStateUpdate` event with data for muting notification sounds:
-
-```ts
-{
- prefs: {
- muteNotificationSounds: boolean;
- }
-}
-```
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-settings-audio
-
diff --git a/docs/ui-kit/components/dyte-settings-toggle.mdx b/docs/ui-kit/components/dyte-settings-toggle.mdx
deleted file mode 100644
index 47cd50f647..0000000000
--- a/docs/ui-kit/components/dyte-settings-toggle.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-settings-toggle component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-settings-toggle
-
-A button which toggles visibility of chat.
-
-When clicked it emits a `dyteStateUpdate` event with the data:
-
-```ts
-{
- activeSettings: boolean;
-}
-```
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-settings-toggle
-
diff --git a/docs/ui-kit/components/dyte-settings-video.mdx b/docs/ui-kit/components/dyte-settings-video.mdx
deleted file mode 100644
index 68ba492f07..0000000000
--- a/docs/ui-kit/components/dyte-settings-video.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-settings-video component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-settings-video
-
-A component which lets to manage your camera devices and your video preferences.
-
-Emits `dyteStateUpdate` event with data for toggling mirroring of self video:
-
-```ts
-{
- prefs: {
- mirrorVideo: boolean;
- }
-}
-```
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-settings-video
-
diff --git a/docs/ui-kit/components/dyte-settings.mdx b/docs/ui-kit/components/dyte-settings.mdx
deleted file mode 100644
index b07da4a41e..0000000000
--- a/docs/ui-kit/components/dyte-settings.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-settings.svg
-description: >-
- Learn how to use and customize the dyte-settings component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-settings
-
-A settings component to see and change your audio/video devices
-as well as see your connection quality.
-
-```html
-Desktop View:
-
-
-Mobile View:
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-settings
-
diff --git a/docs/ui-kit/components/dyte-setup-screen.mdx b/docs/ui-kit/components/dyte-setup-screen.mdx
deleted file mode 100644
index 7030732378..0000000000
--- a/docs/ui-kit/components/dyte-setup-screen.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-setup-screen.svg
-description: >-
- Learn how to use and customize the dyte-setup-screen component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-setup-screen
-
-A screen shown before joining the meeting, where you can edit your display name,
-and media settings.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-setup-screen
-
diff --git a/docs/ui-kit/components/dyte-sidebar.mdx b/docs/ui-kit/components/dyte-sidebar.mdx
deleted file mode 100644
index 8bbc908e6f..0000000000
--- a/docs/ui-kit/components/dyte-sidebar.mdx
+++ /dev/null
@@ -1,64 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-sidebar.svg
-description: >-
- Learn how to use and customize the dyte-sidebar component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-sidebar
-
-A component which handles the sidebar and
-you can customize which sections you want, and which section you want as the default.
-
-```html
-
-
-
-
-
-```
-
-To see a mobile sidebar:
-
-```html
-
-
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-sidebar
-
diff --git a/docs/ui-kit/components/dyte-simple-grid.mdx b/docs/ui-kit/components/dyte-simple-grid.mdx
deleted file mode 100644
index ad9f406eaa..0000000000
--- a/docs/ui-kit/components/dyte-simple-grid.mdx
+++ /dev/null
@@ -1,34 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-simple-grid.svg
-description: >-
- Learn how to use and customize the dyte-simple-grid component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-simple-grid
-
-A grid component which renders only the participants in a simple grid.
-
-```html
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-simple-grid
-
diff --git a/docs/ui-kit/components/dyte-spinner.mdx b/docs/ui-kit/components/dyte-spinner.mdx
deleted file mode 100644
index 973e1dbb80..0000000000
--- a/docs/ui-kit/components/dyte-spinner.mdx
+++ /dev/null
@@ -1,24 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-spinner.svg
-description: >-
- Learn how to use and customize the dyte-spinner component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-spinner
-
-A component which shows an animating spinner.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-spinner
-
diff --git a/docs/ui-kit/components/dyte-spotlight-grid.mdx b/docs/ui-kit/components/dyte-spotlight-grid.mdx
deleted file mode 100644
index 7692f6abe4..0000000000
--- a/docs/ui-kit/components/dyte-spotlight-grid.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-spotlight-grid.svg
-description: >-
- Learn how to use and customize the dyte-spotlight-grid component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-spotlight-grid
-
-A grid component that renders two lists of participants: `pinnedParticipants` and `participants`.
-
-You can customize the layout to a `column` view, by default is is `row`.
-
-- Participants from `pinnedParticipants[]` are rendered inside a larger grid.
-- Participants from `participants[]` array are rendered in a smaller grid.
-
-```html
-
-
-
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-spotlight-grid
-
diff --git a/docs/ui-kit/components/dyte-stage.mdx b/docs/ui-kit/components/dyte-stage.mdx
deleted file mode 100644
index 456ea3f7e3..0000000000
--- a/docs/ui-kit/components/dyte-stage.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-stage component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-stage
-
-A component used as a stage that commonly houses
-the `grid` and `sidebar` components.
-
-## Props
-
-
-
-
- UI Kit dyte-stage
-
diff --git a/docs/ui-kit/components/dyte-switch.mdx b/docs/ui-kit/components/dyte-switch.mdx
deleted file mode 100644
index 35ccb9ad32..0000000000
--- a/docs/ui-kit/components/dyte-switch.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-switch.svg
-description: >-
- Learn how to use and customize the dyte-switch component in Dyte's UI Kit with
- our detailed documentation.
----
-
-# dyte-switch
-
-A switch component which follows Dyte's Design System.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-switch
-
diff --git a/docs/ui-kit/components/dyte-text-field.mdx b/docs/ui-kit/components/dyte-text-field.mdx
deleted file mode 100644
index ad587778d5..0000000000
--- a/docs/ui-kit/components/dyte-text-field.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-text-field component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-text-field
-
-A text field component.
-
-## Props
-
-
-
-
- UI Kit dyte-text-field
-
diff --git a/docs/ui-kit/components/dyte-text-message.mdx b/docs/ui-kit/components/dyte-text-message.mdx
deleted file mode 100644
index 5742e2a05b..0000000000
--- a/docs/ui-kit/components/dyte-text-message.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-text-message component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-text-message
-
-A component which renders a text message from chat.
-
-## Props
-
-
-
-
- UI Kit dyte-text-message
-
diff --git a/docs/ui-kit/components/dyte-tooltip.mdx b/docs/ui-kit/components/dyte-tooltip.mdx
deleted file mode 100644
index cc7c9f5a97..0000000000
--- a/docs/ui-kit/components/dyte-tooltip.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-image: /static/ui-kit/1.x.x/components/dyte-tooltip.svg
-description: >-
- Learn how to use and customize the dyte-tooltip component in Dyte's UI Kit
- with our detailed documentation.
----
-
-# dyte-tooltip
-
-Tooltip component which follows Dyte's Design System.
-
-```html
-
- Hover over me
-
-
-
- Hover over me
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-tooltip
-
diff --git a/docs/ui-kit/components/dyte-viewer-count.mdx b/docs/ui-kit/components/dyte-viewer-count.mdx
deleted file mode 100644
index 3f68e436d9..0000000000
--- a/docs/ui-kit/components/dyte-viewer-count.mdx
+++ /dev/null
@@ -1,26 +0,0 @@
----
-description: >-
- Learn how to use and customize the dyte-viewer-count component in Dyte's UI
- Kit with our detailed documentation.
----
-
-# dyte-viewer-count
-
-A component which shows count of total joined participants in a meeting.
-
-```html
-
-
-
-```
-
-## Props
-
-
-
-
- UI Kit dyte-viewer-count
-
diff --git a/docs/ui-kit/components/gallery.mdx b/docs/ui-kit/components/gallery.mdx
deleted file mode 100644
index e6dc8cafea..0000000000
--- a/docs/ui-kit/components/gallery.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-sidebar_position: 1
-slug: /components
-description: >-
- Learn how to use and customize the Gallery component in Dyte's UI Kit with our
- detailed documentation.
----
-
-# Gallery
-
-
-
-
-
-
-
-
-
-
- UI Kit Gallery
-
diff --git a/docs/ui-kit/customizations/_category_.json b/docs/ui-kit/customizations/_category_.json
deleted file mode 100644
index be2aca0117..0000000000
--- a/docs/ui-kit/customizations/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Customizations",
- "collapsible": true
-}
diff --git a/docs/ui-kit/customizations/custom-iconpack.mdx b/docs/ui-kit/customizations/custom-iconpack.mdx
deleted file mode 100644
index 77e9f6d5ba..0000000000
--- a/docs/ui-kit/customizations/custom-iconpack.mdx
+++ /dev/null
@@ -1,193 +0,0 @@
----
-sidebar_position: 6
----
-
-import {
- HTMLUIKitUtilsInstallation,
- HTMLUIKitInstallation,
-} from '@site/src/components/LatestInstallation';
-
-# Customize Meeting Icons
-
-Dyte's UI Kit provides all the necessary UI components to allow complete customization of all its UI Kit components. You can customize your meeting icons such as chat, clock, leave meeting, mic on and off, and more.
-
-Customizing the meeting icons involve the following steps:
-
-1. Integrate Dyte's web SDK into your web application
-2. Customize the default icon pack
-
-## Step 1: Integrate Dyte's web SDK into your web application
-
-
-
- To get started with customizing the icons for your meetings, you need to first integrate Dyte's Web SDK into your web application.
-
- 1. Install the package using npm or Yarn.
-
-
-
-To set up UI Kit components and web-core, add the following script tags inside
-the ` ` tag.
-
-
-
-You can also import utilities or any other export from CDN:
-
-
-
-
-
-
-```bash
-npm install @dytesdk/ui-kit @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fui-kit)
-
-
-
-
-
-```bash
-yarn add @dytesdk/ui-kit @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fui-kit)
-
-
-
-
-2. Create a meeting room using the [Create Meeting API](/api#/operations/create_meeting).
-3. Generate an `authToken` using the [Add Participant API](/api#/operations/add_participant). An `authToken` is a unique token that is used to identify a user in the meeting.
-4. Initialize the Dyte client using the `DyteClient.init({ authToken })`. It returns the meeting object.
-5. Pass the meeting object to the UI Kit.
-
-The `dyte-meeting` component generates the default UI experience. Read more about how to customize the UI [here](/ui-kit/basics/components-basics).
-
-```html
-
-
-
-
-
-```
-
-
-
-## Step 2: Customize default icon pack
-
-Now that you've integrated Dyte SDK into your application successfully, let's quickly understand how you can customize the icon set for your application.
-
-Dyte's default icon set is available at [icons.dyte.io](https://icons.dyte.io/). You can modify and generate your custom icon set from here.
-
-In order to replace Dyte's default icon set with your own, you can pass the link to your icon set in the `dyte-meeting` component like so.
-
-```html
-
-
-
-
-
-```
-
-## IconPack Reference
-
-Ƭ **IconPack**: typeof `defaultIconPack`
-
-Icon Pack object type:
-
-- Object key denotes name of icon
-- Object value stores the SVG string
-
-### defaultIconPack
-
-• `Const` **defaultIconPack**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------------------------- | :------- |
-| `attach` | `string` |
-| `call_end` | `string` |
-| `chat` | `string` |
-| `checkmark` | `string` |
-| `chevron_down` | `string` |
-| `chevron_left` | `string` |
-| `chevron_right` | `string` |
-| `chevron_up` | `string` |
-| `clock` | `string` |
-| `copy` | `string` |
-| `disconnected` | `string` |
-| `dismiss` | `string` |
-| `download` | `string` |
-| `emoji_multiple` | `string` |
-| `full_screen_maximize` | `string` |
-| `full_screen_minimize` | `string` |
-| `image` | `string` |
-| `image_off` | `string` |
-| `join_stage` | `string` |
-| `leave_stage` | `string` |
-| `mic_off` | `string` |
-| `mic_on` | `string` |
-| `more_vertical` | `string` |
-| `participants` | `string` |
-| `people` | `string` |
-| `pin` | `string` |
-| `pin_off` | `string` |
-| `poll` | `string` |
-| `recording` | `string` |
-| `rocket` | `string` |
-| `search` | `string` |
-| `send` | `string` |
-| `settings` | `string` |
-| `share` | `string` |
-| `share_screen_person` | `string` |
-| `share_screen_start` | `string` |
-| `share_screen_stop` | `string` |
-| `speaker` | `string` |
-| `spinner` | `string` |
-| `spotlight` | `string` |
-| `stop_recording` | `string` |
-| `subtract` | `string` |
-| `vertical_scroll` | `string` |
-| `vertical_scroll_disabled` | `string` |
-| `video_off` | `string` |
-| `video_on` | `string` |
-| `wand` | `string` |
-| `warning` | `string` |
-| `wifi` | `string` |
-
-
- UI Kit Customize Meeting Icons
-
diff --git a/docs/ui-kit/customizations/custom-locale.mdx b/docs/ui-kit/customizations/custom-locale.mdx
deleted file mode 100644
index b3ab17ed5f..0000000000
--- a/docs/ui-kit/customizations/custom-locale.mdx
+++ /dev/null
@@ -1,139 +0,0 @@
----
-sidebar_position: 6
----
-
-import {
- HTMLUIKitUtilsInstallation,
- HTMLUIKitInstallation,
-} from '@site/src/components/LatestInstallation';
-
-# Customize Meeting Locale
-
-Dyte's UI Kit allows you to customize all the text within the video call interface. You can personalize the text to align with your specific locale needs.
-
-Customizing the locale involve the following steps:
-
-1. Integrate Dyte's web SDK into your web application
-2. Customize the default language pack
-
-## Step 1: Integrate Dyte's web SDK into your web application
-
-
-
- To get started with customizing the icons for your meetings, you need to first integrate Dyte's Web SDK into your web application.
-
- 1. Install the package using npm or Yarn.
-
-
-
-To set up UI Kit components and web-core, add the following script tags inside
-the ` ` tag.
-
-
-
-You can also import utilities or any other export from CDN:
-
-
-
-
-
-
-```bash
-npm install @dytesdk/ui-kit @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fui-kit)
-
-
-
-
-
-```bash
-yarn add @dytesdk/ui-kit @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fui-kit)
-
-
-
-
-2. Create a meeting room using the [Create Meeting API](/api#/operations/create_meeting).
-3. Generate an `authToken` using the [Add Participant API](/api#/operations/add_participant). An `authToken` is a unique token that is used to identify a user in the meeting.
-4. Initialize the Dyte client using the `DyteClient.init({ authToken })`. It returns the meeting object.
-5. Pass the meeting object to the UI Kit.
-
-The `dyte-meeting` component generates the default UI experience. Read more about how to customize the UI [here](/ui-kit/basics/components-basics).
-
-```html
-
-
-
-
-
-```
-
-
-
-## Step 2: Customize the default language pack
-
-Now that you've integrated Dyte SDK into your application successfully, let's quickly understand how you can customize the language pack for your application.
-
-Dyte's default language pack can be imported like so.
-
-
-
-In order to replace Dyte's default locale set with your own, you can pass your own locale to the `t` prop exposed by the UI components.
-
-```html
-
-
-
-
-
-```
-
-The `useLanguage` function takes in your custom locale object as an argument and generates a function that retrieves the value associated with the provided key.
-
-import DefaultLanguageI18N from '/docs/partials/_default-language-i18n.mdx';
-
-
-
-
- UI Kit Customize Meeting Locale
-
diff --git a/docs/ui-kit/design-system.mdx b/docs/ui-kit/design-system.mdx
deleted file mode 100644
index 345fc19477..0000000000
--- a/docs/ui-kit/design-system.mdx
+++ /dev/null
@@ -1,233 +0,0 @@
----
-sidebar_position: 4
-description: Details about the Design System in Dyte's UI Kit.
----
-
-# Design System
-
-Read this blog post to know more:
-https://dyte.io/blog/new-dyte-video-sdk-design-system/
-
-## `provideDyteDesignSystem()` utility
-
-This is a very handy utility to configure the design system of UI Kit components
-programmatically, with very lines of code.
-
-```html
-
-
-
-```
-
-Read on to learn more about each token in detail.
-
-## Design Tokens
-
-UI Kit uses [design tokens](https://css-tricks.com/what-are-design-tokens/) for
-it's design system.
-
-Design tokens are the design related values which are used to maintain a design
-system, which provides flexibility in customizing the overall design of a system
-with values such as: typography, spacing, colors etc.
-
-These design tokens are stored and shared among components with the help of
-[CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties).
-
-### Typography
-
-```css
---dyte-font-family: Inter;
-```
-
-You can tweak the font family used in your UI Kit components easily with this
-token.
-
-You can edit this value in two ways with the provideDyteDesignSystem utility.
-
-#### Usage
-
-```js
-const designTokens = {
- fontFamily: 'Custom Font';
- // or
- googleFont: 'A Google Font';
-}
-```
-
-Set either of these values in your design tokens.
-
-1. With `fontFamily` 🪡 - Use a custom font family, you'll have to load the font
- manually.
-2. With `googleFont` ✨ - Use a google font, the font is loaded automatically.
-
-### Colors
-
-```css
---dyte-colors-brand-500: 33 96 253;
---dyte-colors-background-1000: 8 8 8;
-/* ... rest of the shades */
-```
-
-CSS Variables are set in the format: `R G B`.
-
-Here are all the color tokens, along with their default values.
-
-
-
-
-
-
-
-
-
-
-
-#### Usage
-
-:::info
-
-Note the exception of `text` and `text-on-brand` colors, you only specify a
-single color even though there are the following shades: 1000 - 600.
-
-This is because the `provideDyteDesignSystem()` utility sets the color you pass
-to `text-1000` and calculates lighter shades and sets them as well.
-
-Only pass objects for `brand` and `background` colors.
-
-:::
-
-A set of commonly used `background` shades are available by default with the
-`theme` property.
-
-Theme values are: `light`, `dark`, `darkest`.
-
-Edit color tokens like this. Only the colors you specify will be set.
-
-```js
-const designTokens = {
- theme: 'darkest',
- colors: {
- brand: { 500: '#0D51FD' },
- background: { 1000: '#080808' },
- text: '#ffffff',
- 'text-on-primary': '#ffffff',
- 'video-bg': '#181818',
- },
-};
-```
-
-### Spacing
-
-```css
---dyte-space-1: 4px;
-/* ... rest of the spacing scale */
-```
-
-The spacing scale is used for setting width, height, margins, paddings,
-positions etc. throughout the components.
-
-- The default value for the spacing scale base is `4px`.
-- Rest of the values are calculated with this base, set to `--dyte-space-1`.
-- Current spacing scale ranges from `0` to `96`.
-
-#### Usage
-
-Set the base of the spacing scale with `spacingBase` property.
-
-```js
-const designTokens = {
- spacingBase: 4, // value in px
-};
-```
-
-### Border Width & Border Radius
-
-Border Width and Border Radius properties can also be customized with design
-tokens!
-
-| Token Name | Values |
-| :------------- | :---------------------------------------------- |
-| `borderWidth` | `none`, `thin`, `fat` |
-| `borderRadius` | `sharp`, `rounded`, `extra-rounded`, `circular` |
-
-#### Usage
-
-```js
-const designTokens = {
- borderWidth: 'thin',
- borderRadius: 'rounded',
-};
-```
-
-
- UI Kit Design System
-
diff --git a/docs/ui-kit/introduction.mdx b/docs/ui-kit/introduction.mdx
deleted file mode 100644
index b3a6a94575..0000000000
--- a/docs/ui-kit/introduction.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-sidebar_position: 1
-slug: /
-image: /static/ui-kit/1.x.x/ui-kit-cover.jpg
----
-
-# Introduction
-
-Dyte's UI Kit is a prebuilt design library of UI components that makes it easy
-to integrate video and voice calls into any app or website within minutes.
-
-It is built on top of web components. To learn more about them, see [Web Components Overview](https://www.webcomponents.org/introduction).
-
-## Usage
-
-The UI Kit is a design library of prebuilt UI components built on top of the
-Core SDKs. Core SDK handles all the low-level media and network handling parts
-of a meeting and exposes APIs that the UI Kit uses.
-
-The library uses a layered design structure, allowing you to start with the prebuilt component and slowly go down layers and add custom UI incrementally as your needs evolve.
-
-- **Use prebuilt component**: You can use prebuilt `dyte-meeting` component to
- start a meeting quickly. With the prebuilt component, you don't have to handle any states, dialogs, and other aspects of managing the application. The UI kit
- also respect your permission configuration from the preset.
-
-- **Mix and match**: Use some components from our component library, build some custom components yourself. Read the [basics of our component design](/ui-kit/basics/components-basics) and checkout the [gallery of available components](/ui-kit/components)
-
-
- UI Kit Introduction
-
diff --git a/docs/ui-kit/quickstart.mdx b/docs/ui-kit/quickstart.mdx
deleted file mode 100644
index 26c4285602..0000000000
--- a/docs/ui-kit/quickstart.mdx
+++ /dev/null
@@ -1,139 +0,0 @@
----
-sidebar_position: 3
----
-
-import {
- HTMLUIKitUtilsInstallation,
- HTMLUIKitInstallation,
-} from '@site/src/components/LatestInstallation';
-
-# Quickstart
-
-This quickstart shows how to use Dyte's UI Kit prebuilt components to add live
-video and audio to your web applications with minimal coding and a variety of
-meeting UI customization options.
-
-For getting started quickly, you can use our
-[sample code](https://github.com/dyte-io/html-samples#samples). You can clone
-and run a sample application from the
-[HTML UI Kit GitHub repository](https://github.com/dyte-io/html-samples).
-
-## Before Getting Started
-
-- Make sure you've read the [Getting Started with Dyte](/getting-started) topic
- and completed the following steps:
- - Create a [Dyte Developer Account](https://dev.dyte.io/)
- - Create a [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
- - [Add Participant](/api/?v=v2#/operations/add_participant) to the meeting
-
-## Step 1: Install the SDK
-
-Since the UI Kit is built on top of the Core SDK, you must install the
-`web-core` package along with the `ui-kit`.
-
-There are two ways to use UI Kit in your project, according to your project
-setup.
-
-You can install the SDK using CDN, npm, or Yarn.
-
-
-
-
-To set up UI Kit components and web-core, add the following script tags inside
-the ` ` tag.
-
-
-
-You can also import utilities or any other export from CDN:
-
-
-
-
-
-
-```bash
-npm install @dytesdk/ui-kit @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fui-kit)
-
-
-
-
-
-```bash
-yarn add @dytesdk/ui-kit @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fui-kit)
-
-
-
-
-### Version
-
-| | |
-| ----------------- | ---------------------------------------------------------------------------------------------------------------- |
-| @dytesdk/ui-kit | [](https://badge.fury.io/js/@dytesdk%2Fui-kit) |
-| @dytesdk/web-core | [](https://badge.fury.io/js/@dytesdk%2Fweb-core) |
-
-## Step 2: Get Started with Dyte Prebuilt Components
-
-Here's a series of steps that you need to perform:
-
-1. Load the Dyte component.
-2. Initialize the Dyte client.
-3. Call the `init()` method and pass the `authToken`:
-
-| | |
-| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api#/operations/add_participant). The API response contains the authToken. |
-
-4. Pass the meeting object to UI Kit, which will use it to retrieve meeting
- information and display it on the user interface.
-
- The meeting object serves as the link between web-core and UI Kit, allowing
- them to communicate with one another. Once the UI Kit has the meeting object,
- it can join and leave meetings, and so on.
-
-import CodeRunner from '@site/src/components/CodeRunner/CodeRunner';
-
-
-
-
-
-
-
-
-
-
-`}
-/>
-
-
- UI Kit Quickstart
-
diff --git a/docs/ui-kit/reference/classes/DyteNotificationsAudio.md b/docs/ui-kit/reference/classes/DyteNotificationsAudio.md
deleted file mode 100644
index 2b569c87ac..0000000000
--- a/docs/ui-kit/reference/classes/DyteNotificationsAudio.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: DyteNotificationsAudio
-title: 'Class: DyteNotificationsAudio'
-custom_edit_url: null
----
-
-Handles notification sounds in a meeting
-
-## Constructors
-
-### constructor
-
-• **new DyteNotificationsAudio**()
-
-## Properties
-
-### audio
-
-• `Private` **audio**: `any`
-
-___
-
-### playing
-
-• `Private` **playing**: `any`
-
-## Methods
-
-### play
-
-▸ **play**(`sound`, `duration?`): `void`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sound` | ``"joined"`` \| ``"left"`` \| ``"message"`` |
-| `duration?` | `number` |
-
-#### Returns
-
-`void`
-
-___
-
-### setDevice
-
-▸ **setDevice**(`id`): `Promise`\<`void`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `id` | `string` |
-
-#### Returns
-
-`Promise`\<`void`\>
-
-
-
- UI Kit Class: DyteNotificationsAudio
-
diff --git a/docs/ui-kit/reference/interfaces/Notification.md b/docs/ui-kit/reference/interfaces/Notification.md
deleted file mode 100644
index 2d2467b6cb..0000000000
--- a/docs/ui-kit/reference/interfaces/Notification.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: Notification
-title: 'Interface: Notification'
-custom_edit_url: null
----
-
-Notification object type, which is used in ` `.
-
-## Properties
-
-### button
-
-• `Optional` **button**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `onClick` | () => `void` |
-| `text` | `string` |
-| `variant?` | `ButtonVariant` |
-
-___
-
-### duration
-
-• `Optional` **duration**: `number`
-
-Duration in milliseconds, don't pass this if you want a stagnant notification
-
-___
-
-### icon
-
-• `Optional` **icon**: `string`
-
-___
-
-### id
-
-• **id**: `string`
-
-___
-
-### image
-
-• `Optional` **image**: `string`
-
-___
-
-### message
-
-• **message**: `string`
-
-
-
- UI Kit Interface: Notification
-
diff --git a/docs/ui-kit/reference/interfaces/PollObject.md b/docs/ui-kit/reference/interfaces/PollObject.md
deleted file mode 100644
index 520ebdfff1..0000000000
--- a/docs/ui-kit/reference/interfaces/PollObject.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-id: PollObject
-title: 'Interface: PollObject'
-custom_edit_url: null
----
-
-## Properties
-
-### anonymous
-
-• **anonymous**: `boolean`
-
-___
-
-### hideVotes
-
-• **hideVotes**: `boolean`
-
-___
-
-### options
-
-• **options**: `string`[]
-
-___
-
-### question
-
-• **question**: `string`
-
-
-
- UI Kit Interface: PollObject
-
diff --git a/docs/ui-kit/reference/interfaces/States.md b/docs/ui-kit/reference/interfaces/States.md
deleted file mode 100644
index d11fafa48d..0000000000
--- a/docs/ui-kit/reference/interfaces/States.md
+++ /dev/null
@@ -1,118 +0,0 @@
----
-id: States
-title: 'Interface: States'
-custom_edit_url: null
----
-
-Global States object which are shared among components
-
-## Indexable
-
-▪ [state: `string`]: `any`
-
-## Properties
-
-### activeJoinStage
-
-• `Optional` **activeJoinStage**: `boolean`
-
-___
-
-### activeLeaveConfirmation
-
-• `Optional` **activeLeaveConfirmation**: `boolean`
-
-___
-
-### activeMoreMenu
-
-• `Optional` **activeMoreMenu**: `boolean`
-
-___
-
-### activePermissionsMessage
-
-• `Optional` **activePermissionsMessage**: `boolean`
-
-___
-
-### activePlugin
-
-• `Optional` **activePlugin**: `boolean`
-
-___
-
-### activeRemoteAccessManager
-
-• `Optional` **activeRemoteAccessManager**: `boolean`
-
-___
-
-### activeScreenShare
-
-• `Optional` **activeScreenShare**: `boolean`
-
-___
-
-### activeSettings
-
-• `Optional` **activeSettings**: `boolean`
-
-___
-
-### activeSidebar
-
-• `Optional` **activeSidebar**: `boolean`
-
-___
-
-### activeSpotlight
-
-• `Optional` **activeSpotlight**: `boolean`
-
-___
-
-### image
-
-• `Optional` **image**: `ImageMessage`
-
-___
-
-### maxPeers
-
-• `Optional` **maxPeers**: `number`
-
-___
-
-### meeting
-
-• `Optional` **meeting**: ``"idle"`` \| ``"setup"`` \| ``"joined"`` \| ``"ended"`` \| ``"waiting"``
-
-___
-
-### page
-
-• `Optional` **page**: `number`
-
-___
-
-### prefs
-
-• `Optional` **prefs**: [`UserPreferences`](UserPreferences.md)
-
-___
-
-### roomLeftState
-
-• `Optional` **roomLeftState**: `RoomLeftState`
-
-___
-
-### sidebar
-
-• `Optional` **sidebar**: ``"chat"`` \| ``"polls"`` \| ``"participants"`` \| ``"plugins"`` \| ``"none"``
-
-
-
- UI Kit Interface: States
-
diff --git a/docs/ui-kit/reference/interfaces/UIConfig.md b/docs/ui-kit/reference/interfaces/UIConfig.md
deleted file mode 100644
index b3b8a6199b..0000000000
--- a/docs/ui-kit/reference/interfaces/UIConfig.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-id: UIConfig
-title: 'Interface: UIConfig'
-custom_edit_url: null
----
-
-A UI Config object defines the UI of the meeting
-
-## Properties
-
-### config
-
-• `Optional` **config**: `Config`
-
-___
-
-### designTokens
-
-• `Optional` **designTokens**: `DesignTokens`
-
-___
-
-### root
-
-• `Optional` **root**: `UIRoot`
-
-___
-
-### styles
-
-• `Optional` **styles**: `UIStyles`
-
-
-
- UI Kit Interface: UIConfig
-
diff --git a/docs/ui-kit/reference/interfaces/UserPreferences.md b/docs/ui-kit/reference/interfaces/UserPreferences.md
deleted file mode 100644
index 804da7c4ba..0000000000
--- a/docs/ui-kit/reference/interfaces/UserPreferences.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-id: UserPreferences
-title: 'Interface: UserPreferences'
-custom_edit_url: null
----
-
-User preferences object type which are
-shared within the global States object.
-
-## Properties
-
-### autoScroll
-
-• `Optional` **autoScroll**: `boolean`
-
-___
-
-### mirrorVideo
-
-• `Optional` **mirrorVideo**: `boolean`
-
-___
-
-### muteNotificationSounds
-
-• `Optional` **muteNotificationSounds**: `boolean`
-
-
-
- UI Kit Interface: UserPreferences
-
diff --git a/docs/ui-kit/reference/interfaces/_category_.json b/docs/ui-kit/reference/interfaces/_category_.json
deleted file mode 100644
index 34cc0b9773..0000000000
--- a/docs/ui-kit/reference/interfaces/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 1,
- "label": "Interfaces",
- "collapsible": true
-}
diff --git a/docs/ui-kit/reference/reference.md b/docs/ui-kit/reference/reference.md
deleted file mode 100644
index 37512d2f6d..0000000000
--- a/docs/ui-kit/reference/reference.md
+++ /dev/null
@@ -1,290 +0,0 @@
----
-id: reference
-title: Reference
-custom_edit_url: null
-sidebar_class_name: hideReferenceSidebarLink
----
-
-## Interfaces
-
-- [Notification](interfaces/Notification.md)
-- [PollObject](interfaces/PollObject.md)
-- [States](interfaces/States.md)
-- [UIConfig](interfaces/UIConfig.md)
-- [UserPreferences](interfaces/UserPreferences.md)
-
-## Type Aliases
-
-### DyteI18n
-
-Ƭ **DyteI18n**: (`key`: keyof [`LangDict`](reference.md#langdict) \| `string` & {}) => `string`
-
-#### Type declaration
-
-▸ (`key`): `string`
-
-i18n helper method type
-
-##### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `key` | keyof [`LangDict`](reference.md#langdict) \| `string` & {} |
-
-##### Returns
-
-`string`
-
-___
-
-### IconPack
-
-Ƭ **IconPack**: typeof [`defaultIconPack`](reference.md#defaulticonpack)
-
-Icon Pack object type.
-- Oject key denotes name of icon
-- Object value stores the SVG string
-
-___
-
-### LangDict
-
-Ƭ **LangDict**: typeof [`defaultLanguage`](reference.md#defaultlanguage)
-
-Language dictionary object type
-
-___
-
-### Size
-
-Ƭ **Size**: ``"sm"`` \| ``"md"`` \| ``"lg"`` \| ``"xl"``
-
-Screen breakpoints
-
-## Variables
-
-### defaultConfig
-
-• `Const` **defaultConfig**: [`UIConfig`](interfaces/UIConfig.md)
-
-The default UI Config
-
-___
-
-### defaultIconPack
-
-• `Const` **defaultIconPack**: `Object`
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `attach` | `string` |
-| `call_end` | `string` |
-| `chat` | `string` |
-| `checkmark` | `string` |
-| `chevron_down` | `string` |
-| `chevron_left` | `string` |
-| `chevron_right` | `string` |
-| `chevron_up` | `string` |
-| `clock` | `string` |
-| `copy` | `string` |
-| `disconnected` | `string` |
-| `dismiss` | `string` |
-| `download` | `string` |
-| `emoji_multiple` | `string` |
-| `full_screen_maximize` | `string` |
-| `full_screen_minimize` | `string` |
-| `image` | `string` |
-| `image_off` | `string` |
-| `join_stage` | `string` |
-| `leave_stage` | `string` |
-| `mic_off` | `string` |
-| `mic_on` | `string` |
-| `more_vertical` | `string` |
-| `participants` | `string` |
-| `people` | `string` |
-| `pin` | `string` |
-| `pin_off` | `string` |
-| `poll` | `string` |
-| `recording` | `string` |
-| `rocket` | `string` |
-| `search` | `string` |
-| `send` | `string` |
-| `settings` | `string` |
-| `share` | `string` |
-| `share_screen_person` | `string` |
-| `share_screen_start` | `string` |
-| `share_screen_stop` | `string` |
-| `speaker` | `string` |
-| `spinner` | `string` |
-| `spotlight` | `string` |
-| `stop_recording` | `string` |
-| `subtract` | `string` |
-| `vertical_scroll` | `string` |
-| `vertical_scroll_disabled` | `string` |
-| `video_off` | `string` |
-| `video_on` | `string` |
-| `wand` | `string` |
-| `warning` | `string` |
-| `wifi` | `string` |
-
-___
-
-### defaultLanguage
-
-• `Const` **defaultLanguage**: `Object`
-
-Default language dictionary
-
-#### Type declaration
-
-| Name | Type |
-| :------ | :------ |
-| `audio` | `string` |
-| `cancel` | `string` |
-| `chat` | `string` |
-| `connection` | `string` |
-| `dismiss` | `string` |
-| `end_meeting_for_all` | `string` |
-| `full_screen` | `string` |
-| `full_screen.exit` | `string` |
-| `leave` | `string` |
-| `leave_confirmation` | `string` |
-| `left_meeting` | `string` |
-| `mic_off` | `string` |
-| `mic_on` | `string` |
-| `page` | `string` |
-| `participants` | `string` |
-| `perm.sys_denied.message` | `string` |
-| `perm_browser_denied` | `string` |
-| `perm_denied_text` | `string` |
-| `perm_denied_title` | `string` |
-| `perm_sys_denied` | `string` |
-| `plugins` | `string` |
-| `polls` | `string` |
-| `settings` | `string` |
-| `setup_screen.join_in_as` | `string` |
-| `setup_screen.joining_as` | `string` |
-| `setup_screen.your_name` | `string` |
-| `share_screen_start` | `string` |
-| `share_screen_stop` | `string` |
-| `stage.add_to_stage` | `string` |
-| `stage.empty_host` | `string` |
-| `stage.empty_host_summary` | `string` |
-| `stage.empty_viewer` | `string` |
-| `stage.join_cancel` | `string` |
-| `stage.join_confirm` | `string` |
-| `stage.join_summary` | `string` |
-| `stage.join_title` | `string` |
-| `stage.remove_from_stage` | `string` |
-| `stage_request.accept_all` | `string` |
-| `stage_request.accept_request` | `string` |
-| `stage_request.approval_pending` | `string` |
-| `stage_request.denied` | `string` |
-| `stage_request.denied_tip` | `string` |
-| `stage_request.deny_request` | `string` |
-| `stage_request.header_title` | `string` |
-| `stage_request.leave_stage` | `string` |
-| `stage_request.leave_tip` | `string` |
-| `stage_request.pending_tip` | `string` |
-| `stage_request.request` | `string` |
-| `stage_request.request_tip` | `string` |
-| `video` | `string` |
-| `video_off` | `string` |
-| `video_on` | `string` |
-| `waitlist.accept_all` | `string` |
-| `waitlist.accept_request` | `string` |
-| `waitlist.body_text` | `string` |
-| `waitlist.deny_request` | `string` |
-| `waitlist.header_title` | `string` |
-
-## Functions
-
-### extendConfig
-
-▸ **extendConfig**(`config`, `baseConfig?`): [`UIConfig`](interfaces/UIConfig.md)
-
-Extend the default UI Config with your own
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `config` | [`UIConfig`](interfaces/UIConfig.md) | Your extended UI Config |
-| `baseConfig?` | [`UIConfig`](interfaces/UIConfig.md) | - |
-
-#### Returns
-
-[`UIConfig`](interfaces/UIConfig.md)
-
-New extended UI Config object
-
-___
-
-### generateConfig
-
-▸ **generateConfig**(`oldConfig`, `toExtend?`, `options?`): `Object`
-
-Generates a config with older theme value.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `oldConfig` | `DyteThemePresetV1` | V1 Theme object |
-| `toExtend?` | [`UIConfig`](interfaces/UIConfig.md) | UI Config object to extend the generated config |
-| `options?` | `ConfigOptions` | Options for toggling components |
-
-#### Returns
-
-`Object`
-
-| Name | Type |
-| :------ | :------ |
-| `config` | [`UIConfig`](interfaces/UIConfig.md) |
-| `data` | `ConfigData` |
-
-___
-
-### provideDyteDesignSystem
-
-▸ **provideDyteDesignSystem**(`el`, `tokens`): `void`
-
-Provides the design system new tokens to consume values from for styling the Dyte UI Kit's UI.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `el` | `HTMLElement` | The element/node you want to _provide_ Dyte's design system. |
-| `tokens` | `DesignTokens` | The design tokens you want to updated. |
-
-#### Returns
-
-`void`
-
-___
-
-### sendNotification
-
-▸ **sendNotification**(`notification`): `boolean`
-
-Send notification which will be displayed in the ` ` component.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `notification` | [`Notification`](interfaces/Notification.md) | Notification object |
-
-#### Returns
-
-`boolean`
-
-Return value of emitting the event
-
-
-
- UI Kit Reference
-
diff --git a/docs/ui-kit/release-notes.mdx b/docs/ui-kit/release-notes.mdx
deleted file mode 100644
index 783bf3a4ca..0000000000
--- a/docs/ui-kit/release-notes.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-sidebar_class_name: releaseSidebarHeading
-tags:
- - releasenotes
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-:::danger
-
-Dyte SDKs are now in maintenance mode and will not receive any new features or bug fixes. To migrate to Cloudflare RealtimeKit SDKs, see the [migration guide](/guides/realtimekit-migration/sdk-guide?framework=web-components).
-
-:::
-
-The release notes lists all new features, resolved issues, and known issues of UI Kit in chronological order.
-
-
-
-
- UI Kit Release Notes
-
diff --git a/docs/web-core/Introduction.mdx b/docs/web-core/Introduction.mdx
deleted file mode 100644
index 9d8dad6abc..0000000000
--- a/docs/web-core/Introduction.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Introduction
-sidebar_position: 4
-sidebar_class_name: module-seperation
----
-
-import ProductSection from '/docs/partials/_product-section.mdx';
-
-# Introduction
-
-The Dyte Core SDK is designed to provide developers with an easy way to incorporate real-time communication (RTC) solutions into their apps and websites. With full customization and branding options, you can build your own user interface from the ground up without dealing with complicated media layers.
-
-The Core SDK acts as a data-only layer, offering high-level primitives and abstracting away complex media and networking optimizations. It only provides simple APIs that are user-friendly and easy to work with.
-
-{/* TODO: Move this to a parent level switch when we move this page to the new layout */}
-
-
-
-
- ## Hooks
-
-[React Hooks](https://beta.reactjs.org/reference/react) are functions that allow developers to manage state and other React features in functional components. Hooks were introduced in React version 16.8 as a way to simplify the code. Dyte provides the following built-in hooks:
-
-- useDyteClient()
-- useDyteMeeting()
-- useDyteSelector()
-
-See [Hooks](/react-ui-kit/using-hooks) for more information.
-
-
-
-## Utility Modules
-
-The Core SDK includes various modules for in-call utilities like chat, polls, and recording that enable building a UI on top of it. The following are the core SDK modules:
-
-- **meeting.self**: This consists of properties and methods corresponding to the current (local) user, such as enabling or disabling their audio and video, getting a list of media devices or changing the device, or sharing your mobile screen.
-- **meeting.participants**: Use this module to get useful information about the other participants that are present in the meeting. A host can use this module for access control. For example, the host can mute or kick a participant.
-- **meeting.chat**: It provides the methods to integrate chat features such as sending/receiving, editing, and deleting text, images, and files.
-- **meeting.polls**: Meetings can have polls. This module lets you perform actions related to polls, that is create and manage a poll within a meeting.
-- **meeting.recording**: When a meeting needs to be recorded, this module can be used. It lets you start or stop a recording, and get the current status of an ongoing recording.
-- **meeting.meta**: This object consists of all the metadata related to the current meeting, such as the title, the timestamp of when it started, and more.
-
-
- Web Core Introduction
-
diff --git a/docs/web-core/advanced/_category_.json b/docs/web-core/advanced/_category_.json
deleted file mode 100644
index 40e0e69671..0000000000
--- a/docs/web-core/advanced/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Initialization",
- "collapsible": true
-}
diff --git a/docs/web-core/advanced/advance.mdx b/docs/web-core/advanced/advance.mdx
deleted file mode 100644
index e8470506ed..0000000000
--- a/docs/web-core/advanced/advance.mdx
+++ /dev/null
@@ -1,163 +0,0 @@
----
-title: Advance
-sidebar_position: 1
----
-
-## Defaults Configuration
-
-
-
-```js
-await DyteClient.init({
- defaults: {
- ...
- }
-})
-```
-
-
-```js
-useEffect(() => {
- initMeeting({
- defaults: {
- ...
- },
- });
-}, []);
-```
-
-
-
-While initializing DyteClient you can pass configuration overrides, the available options are
-
-```ts
-type DefaultOptions {
- video?: boolean;
- audio?: boolean;
- mediaConfiguration?: {
- video?: VideoQualityConstraints,
- audio?: AudioQualityConstraints,
- screenshare?: ScreenshareQualityConstraints,
- }
- isNonPreferredDevice?: (device: MediaDeviceInfo) => boolean;
- autoSwitchAudioDevice?: boolean;
- recording?: RecordingConfig;
-}
-```
-
-### audio, video
-
-This optional property is true by default and defines whether audio or video would be acquired and enabled on SDK initialization as soon as you join the meeting the SDK will produce your video and
-audio streams by default.
-
-
-
-```ts {5}
-const meeting = await DyteClient.init({
- authToken,
- defaults: {
- audio: false, // Disable user's audio by default
- video: true, // Enable user's video by default
- },
-});
-```
-
-
-```ts
-useEffect(() => {
- initMeeting({
- authToken: '',
- defaults: {
- audio: false,
- video: false,
- },
- });
-}, []);
-```
-
-
-
-### mediaConfiguration.screenShare.displaySurface
-
-Specifies the _preferred_ screenshare surface, user will still be shown all possible options but the one configured here will be preselected
-
-Allowed values: `window`, `monitor`, `browser`
-
-[https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints#displaysurface](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints#displaysurface)
-
-### mediaConfiguration
-
-Defines media quality configuration
-
-For audio -
-
-```ts
-{
- echoCancellation?: boolean, // default true
- noiseSupression?: boolean, // default true
- autoGainControl?: boolean, // default true
- enableStereo?: boolean, // default false
- enableHighBitrate?: boolean // default false
-}
-```
-
-For applications where audio quality needs to be high and as loseless as possible
-
-```js
-{
- echoCancellation: false,
- noiseSupression: false,
- autoGainControl: false,
- enableStereo: true,
- enableHighBitrate: true,
-}
-```
-
-For video -
-
-```ts
-{
- width: { ideal: number },
- height: { ideal: number },
- frameRate?: { ideal: number },
-}
-```
-
-### isNonPreferredDevice
-
-Our SDK will acquire media devices preferring virtual devices to not be selected by default (OBS, iPhone continuity)
-You can override this logic by using your own function to decide the preference
-
-```ts
-defaults: {
- ...
- isNonPreferredDevice: (device: MediaDeviceInfo) => {
- if(device.label.startsWith("Virtual")) {
- return false
- }
- }
-}
-```
-
-### autoSwitchAudioDevice
-
-By default, when a new audio device is plugged in, our SDK switches to that device. You can configure that behaviour
-
-### recording
-
-```ts
-{
- fileNamePrefix?: string;
- videoConfig?: {
- height?: number;
- width?: number;
- codec?: string;
- };
-}
-```
-
-Refer to [recording codec guide](/guides/capabilities/recording/configure-codecs#configure-codecs) for info the `codec` parameter
-
-
- Web Core Advance
-
diff --git a/docs/web-core/chat/_category_.json b/docs/web-core/chat/_category_.json
deleted file mode 100644
index 50bf23d1b2..0000000000
--- a/docs/web-core/chat/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 8,
- "label": "Chat",
- "collapsible": true
-}
diff --git a/docs/web-core/chat/edit-chat-messages.mdx b/docs/web-core/chat/edit-chat-messages.mdx
deleted file mode 100644
index 82924105fd..0000000000
--- a/docs/web-core/chat/edit-chat-messages.mdx
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: Editing Chat Messages
-description: Edit chat messages that you have sent in a meeting.
-sidebar_position: 4
-tags:
- - web-core
- - chat
----
-
-As mentioned in introduction, there are 3 types of chat messages - text
-messages, images, and files. There is a method in meeting.chat to edit a message
-of each type.
-
-## Edit a text message
-
-To edit a text message, the `meeting.chat.editTextMessage()` method can be used.
-This accepts a `messageId` (type `string`) and a `message` (type `string`).
-
-```ts
-const message = meeting.chat.messages[0];
-const messageId = message?.id;
-const newMessage = 'Is this the real life?';
-await;
-meeting.chat.editTextMessage(messageId, newMessage);
-```
-
-## Edit an image
-
-You can send an image with the help of meeting.chat.editImageMessage(). This
-accepts a `messageId` of type `string` and an image of type `File`.
-
-```ts
-Edit image:
-
-Edit Image
-```
-
-```ts
-async function onEditImage() {
- const messageId = '...';
- const image = document.getElementById('img');
- await meeting.chat.editImageMessage(messageId, image.files[0]);
-}
-```
-
-## Edit a file
-
-Editing a file is quite similar to editing an image. To edit a file use
-`meeting.chat.editFileMessage()`.
-
-```ts
-Edit file:
-
-Edit File
-```
-
-```ts
-async function onEditFile() {
- const messageId = '...';
- const file = document.getElementById('file');
- await meeting.chat.editFileMessage(messageId, file.files[0]);
-}
-```
-
-## Extra
-
-There is also a common method called `meeting.chat.editMessage()` that can be
-used to edit any of the 3 types of messages displayed above. It essentially
-calls one of the methods from above depending upon the type of payload you send
-to the method. The `editMessage()` method accepts a parameters `messageId`
-`message` of the following type:
-
-```ts
-async function editMessage(
- messageId: string,
- message: { type: 'text', message: string }
- | { type: 'image', image: File }
- | { type: 'file', file: File },
-) {...}
-```
-
-Here's how you would use the `editMessage()` method to edit a text message.
-
-```ts
-const messageId = '...';
-const message = 'Is this just fantasy?';
-await meeting.chat.sendMessage(messageId, { type: 'text', message });
-```
-
-
- Web Core Editing Chat Messages
-
diff --git a/docs/web-core/chat/introduction.mdx b/docs/web-core/chat/introduction.mdx
deleted file mode 100644
index a1c2407bba..0000000000
--- a/docs/web-core/chat/introduction.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: Introducing chat
-description: Send and receive chat messages in a meeting.
-sidebar_position: 1
-tags:
- - web-core
- - chat
----
-
-# Introducing chat
-
-The meeting chat object is stored in `meeting.chat`, which has methods for
-sending and receiving messages. There are 3 types of messages that can be sent
-in chat - text messages, images, and files.
-
-The `meeting.chat.messages` array contains all the messages that have been sent
-in the chat. This is an array of objects, where each object is of type
-`Message`.
-
-The type `Message` is defined in the following manner.
-
-```ts
-interface BaseMessage {
- type: T;
- userId: string;
- displayName: string;
- time: Date;
- id: string;
- isEdited?: boolean;
- read?: boolean;
- pluginId?: string;
- pinned?: boolean;
- targetUserIds?: string[];
-}
-
-interface TextMessage extends BaseMessage {
- message: string;
-}
-
-interface ImageMessage extends BaseMessage {
- link: string;
-}
-
-interface FileMessage extends BaseMessage {
- name: string;
- size: number;
- link: string;
-}
-
-type Message = TextMessage | ImageMessage | FileMessage;
-```
-
-
- Web Core Introducing chat
-
diff --git a/docs/web-core/chat/other-chat-functions.mdx b/docs/web-core/chat/other-chat-functions.mdx
deleted file mode 100644
index 974a140296..0000000000
--- a/docs/web-core/chat/other-chat-functions.mdx
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: Other chat functions
-description: Other functionality associated with chat.
-sidebar_position: 5
-tags:
- - web-core
- - chat
----
-
-# Other chat functions
-
-The `meeting.chat` object exposes certain other methods for convenience when
-working with chat.
-
-## Get messages by a user
-
-You can get messages by a particular user by passing the user's ID to the
-`meeting.chat.getMessagesByUser()` method.
-
-```ts
-// Find the userId of the user with name "Freddie".
-const { userId } = meeting.participants.joined
- .toArray()
- .find((p) => p.name === 'Freddie');
-
-const messages = meeting.chat.getMessagesByUser(userId);
-```
-
-## Get messages of a particular type
-
-You can also get messages of a particular type using the
-`meeting.chat.getMessagesByType()` method. For example, you can get all image
-messages present in the chat using the following snippet.
-
-```ts
-const imageMessages = meeting.chat.getMessagesByType('image');
-```
-
-## Pinning a chat message
-
-You can `pin` a number of messages to the chat. When you pin a message, the
-message object will have the attribute `pinned: true`, using which you can
-identify if a message is pinned.
-
-To pin a message, run the following snippet.
-
-```ts
-// Let's say we want to pin the first message in the chat (could be a text, image, or file).
-const { id } = meeting.chat.messages[0];
-
-await meeting.chat.pin(id);
-```
-
-Once you pin a message, it will be added to `meeting.chat.pinned`.
-
-```ts
-const { id } = meeting.chat.messages[0];
-
-await meeting.chat.pin(id);
-
-console.log(meeting.chat.pinned);
-console.log(meeting.chat.pinned.length > 0); // Should be true
-```
-
-You can also unpin a pinned message, by using the `meeting.chat.unpin()` method.
-
-```ts
-// Unpin the first pinned message.
-
-const { id } = meeting.chat.pinned[0];
-await meeting.chat.unpin(id);
-```
-
-You can listen for events to know when a message is pinned or unpinned.
-
-```ts
-meeting.chat.on('pinMessage', ({ message }) => {
- console.log('A message was pinned', JSON.stringify(message));
-});
-```
-
-```ts
-meeting.chat.on('unpinMessage', ({ message }) => {
- console.log('A message was unpinned', JSON.stringify(message));
-});
-```
-
-## Deleting a chat message
-
-The `meeting.chat` namespace exposes a method called `deleteMessage()`. It takes
-a parameter `meesageId` of type `string`.
-
-```ts
-const messageId = '...';
-await meeting.chat.deleteMessage(messageId);
-```
-
-
- Web Core Other chat functions
-
diff --git a/docs/web-core/chat/receiving-chat-messages.mdx b/docs/web-core/chat/receiving-chat-messages.mdx
deleted file mode 100644
index ec3a3aca16..0000000000
--- a/docs/web-core/chat/receiving-chat-messages.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: Receiving chat messages
-description: Receive chat messages that have been sent in a meeting.
-sidebar_position: 3
-tags:
- - web-core
- - chat
----
-
-# Receiving chat messages
-
-The `meeting.chat` object emits events when new chat messages are received. You
-can listen for the `chatUpdate` event to log when a new chat message is
-received.
-
-
-
-```ts
-meeting.chat.on('chatUpdate', ({ message, messages }) => {
- console.log(`Received message ${message}`);
- console.log(`All messages in chat: ${messages.join(', ')}`);
-});
-```
-
-
-
-```ts
-const messages = useDyteSelector((m) => m.chat.messages));
-```
-
-Alternatively,
-
-```ts
-meeting.chat.on('chatUpdate', ({ message, messages }) => {
- console.log(`Received message ${message}`);
- console.log(`All messages in chat: ${messages.join(', ')}`);
-});
-```
-
-
-
-
-Here, the `message` is of type `Message`, as defined in
-[introduction](./introduction). `messages` is a list of all chat messages in the
-meeting, which is the same as `meeting.chat.messages`.
-
-When a chat message is received, the `meeting.chat.messages` list is also
-updated.
-
-```ts
-console.log(JSON.stringify(meeting.chat.messages));
-meeting.chat.on('chatUpdate', () => {
- console.log(JSON.stringify(meeting.chat.messages));
-});
-```
-
-
- Web Core Receiving chat messages
-
diff --git a/docs/web-core/chat/sending-a-chat-message.mdx b/docs/web-core/chat/sending-a-chat-message.mdx
deleted file mode 100644
index dc875e782b..0000000000
--- a/docs/web-core/chat/sending-a-chat-message.mdx
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Sending a chat message
-description: Send a chat message in a meeting.
-sidebar_position: 2
-tags:
- - web-core
- - chat
----
-
-# Sending a chat message
-
-As mentioned in [introduction](./introduction), there are 3 types of chat
-messages - text messages, images, and files. There is a method in `meeting.chat`
-to send a message of each type.
-
-## Send a text message
-
-To send a text message, the `meeting.chat.sendTextMessage()` method can be used.
-This accepts a string `message` and sends it to the room.
-
-```ts
-const message = 'Is this the real life?';
-await meeting.chat.sendTextMessage(message);
-```
-
-## Send an image
-
-You can send an image with the help of `meeting.chat.sendImageMessage()`. This
-accepts an image of type `File`, and sends it to the participants in the
-meeting.
-
-```html
-Select image:
-
-Send Image
-```
-
-```ts
-async function onSendImage() {
- const image = document.getElementById('img');
- await meeting.chat.sendImageMessage(image.files[0]);
-}
-```
-
-## Send a file
-
-Sending a file is quite similar to sending an image. The only difference is that
-when you send an image, a preview will be shown in the meeting chat, which is
-not the case for sending files. That being said, an image can be sent as a file
-too using `meeting.chat.sendFileMessage()`.
-
-```html
-Select file:
-
-Send File
-```
-
-```ts
-async function onSendFile() {
- const file = document.getElementById('file');
- await meeting.chat.sendFileMessage(file.files[0]);
-}
-```
-
-## Extra
-
-There is also a common method called `meeting.chat.sendMessage()` that can be
-used to send any of the 3 types of messages displayed above. It essentially
-calls one of the methods from above depending upon the type of payload you send
-to the method. The `sendMessage()` method accepts a parameter `message` of the
-following type:
-
-```ts
-async function sendMessage(
- message: { type: 'text', message: string }
- | { type: 'image', image: File }
- | { type: 'file', file: File },
-) {...}
-```
-
-Here's how you would use the `sendMessage()` method to send a text message.
-
-```ts
-const message = 'Is this just fantasy?';
-await meeting.chat.sendMessage({ type: 'text', message });
-```
-
-
- Web Core Sending a chat message
-
diff --git a/docs/web-core/error-codes/_category_.json b/docs/web-core/error-codes/_category_.json
deleted file mode 100644
index f04ac45173..0000000000
--- a/docs/web-core/error-codes/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 99,
- "label": "System Error Codes",
- "collapsible": true
-}
diff --git a/docs/web-core/error-codes/error-code-zero-ten.mdx b/docs/web-core/error-codes/error-code-zero-ten.mdx
deleted file mode 100644
index cd1bb6e7de..0000000000
--- a/docs/web-core/error-codes/error-code-zero-ten.mdx
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: System Error Codes (0-20)
-sidebar_position: 2
----
-
-This topic describes web core system error codes 0-20.
-
-import ErrorCodesDetails from '@site/docs/partials/error-codes/_web_core_error_codes_details.mdx';
-
-
-
-
- Web Core System Error Codes (0-20)
-
diff --git a/docs/web-core/error-codes/error-code.mdx b/docs/web-core/error-codes/error-code.mdx
deleted file mode 100644
index d30e3d4105..0000000000
--- a/docs/web-core/error-codes/error-code.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: Debug System Error Codes
-sidebar_position: 1
----
-
-import ErrorCodeDebugSystem from '@site/docs/partials/error-codes/_web_core_debug_system_error_codes.mdx';
-
-
-
-
- Web Core Debug System Error Codes
-
diff --git a/docs/web-core/livestreaming.mdx b/docs/web-core/livestreaming.mdx
deleted file mode 100644
index 9995e929ce..0000000000
--- a/docs/web-core/livestreaming.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: Livestreaming
-sidebar_position: 10
----
-
-- Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms.
-- Dyte uses LHLS to deliver low latency one way streams
-- The Interactive Livestream product delivers interactivity via chat, polls, reactions etc
-- Viewer can also be pulled in the livestream by the host using Stage Management APIs
-
-This topic talks about how you can use livestreaming properties, events, and functions.
-
-## Properties
-
-### Playlist URL
-
-`meeting.livestream.playbackUrl` - This URL allows you to watch the live stream. It is the location of the video playlist file and can be accessed through a web browser or any media player.
-
-### Livestream Status
-
-`meeting.livestream.status` - The current status of the livestream. This field can assume the following values:
-
-- IDLE
-- STARTING
-- LIVESTREAMING
-- STOPPING
-
-### Viewer Count
-
-`meeting.livestream.viewerCount` - The number of people viewing the livestream, including hosts and viewers.
-
-## Methods
-
-Use the following methods to start and stop the livestreaming.
-
-### Start Livestream
-
-Users with the permission `canLivestream` set to true can start a livestream.
-
-`await meeting.livestream.start();`
-
-### Stop Livestream
-
-Users with the permission `canLivestream` set to true can stop a livestream.
-
-`await meeting.livestream.stop();`
-
-## Events
-
-Here is a list of events that the `meeting.livestream` module emits:
-
-| **Event** | **Description** |
-| ------------------- | ------------------------------------------------------------------------------------------------------------- |
-| `livestreamUpdate` | This event is triggered when the state of the livestream changes, specifically when it is started or stopped. |
-| `viewerCountUpdate` | Emitted when a new viewer joins or a viewer leaves the livestream. |
-
-
- Web Core Livestreaming
-
diff --git a/docs/web-core/local-user/_category_.json b/docs/web-core/local-user/_category_.json
deleted file mode 100644
index 2c78a8e824..0000000000
--- a/docs/web-core/local-user/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 6,
- "label": "Local User",
- "collapsible": true
-}
diff --git a/docs/web-core/local-user/events.mdx b/docs/web-core/local-user/events.mdx
deleted file mode 100644
index a1f331b46e..0000000000
--- a/docs/web-core/local-user/events.mdx
+++ /dev/null
@@ -1,263 +0,0 @@
----
-title: Events
-description: Local user events guide.
-sidebar_position: 2
-tags:
- - web-core
- - local-user
- - self
- - self events
----
-
-# Local User - Events
-
-You can subscribe to various events on the local user by calling
-`meeting.self.on(EVENT_NAME)`.
-
-## Room joined
-
-Triggered when the join event completes and now the `meeting` is ready to
-produce and consume media.
-
-
-
-```ts
-meeting.self.on('roomJoined', () => {
- console.log(
- 'User has joined the meeting and ready to produce and consume media',
- );
-});
-```
-
-
-```ts
-const roomJoined = useDyteSelector((meeting) => meeting.self.roomJoined);
-useEffect(() => {
- if (roomJoined) {
- console.log('User has joined the meeting and ready to produce and consume media')
- }
-}, [roomJoined]);
-```
-
-Alternatively,
-
-```ts
-meeting.self.on('roomJoined', () => {
- console.log(
- 'User has joined the meeting and ready to produce and consume media',
- );
-});
-```
-
-
-
-
-## Room left
-
-Triggered when the local user leaves the meeting.
-
-
-
-```js
-meeting.self.on('roomLeft', ({ state }) => {
- // state is a string whose values are explained below
- if (state === 'left') {
- console.log('User has left the room');
- }
-});
-```
-
-
-
-```ts
-const roomJoined = useDyteSelector((meeting) => meeting.self.roomJoined);
-useEffect(() => {
- if (!roomJoined)
- console.log('User has left the room')
-}, [roomJoined]);
-```
-
-Alternatively,
-
-```js
-meeting.self.on('roomLeft', ({ state }) => {
- // state is a string whose values are explained below
- if (state === 'left') {
- console.log('User has left the room');
- }
-});
-```
-
-
-
-
-Here are all the possible values of the `state` variable.
-
-| Event | Description |
-| ------------------- | -------------------------------------------------------------------------------------- |
-| `left` | Participant has left the meeting. |
-| `kicked` | Participant is removed from the meeting. |
-| `ended` | Everyone is removed from the meeting, and the session has ended. |
-| `rejected` | Participant's request to join the meeting is rejected (when you're in a waiting room). |
-| `disconnected` | Temporary network disconnection |
-| `failed` | Failed to join the meeting |
-| `connected-meeting` | Participant has left this meeting and joined a connected meeting (Breakout meeting) |
-
-## Video update
-
-Triggered when the user starts / stops the video using `enableVideo` or
-`disableVideo`
-
-
-
-
-```ts
-const videoElem = document.getElementById('my-video');
-meeting.self.on('videoUpdate', async ({ videoEnabled, videoTrack }) => {
- if (videoEnabled) {
- const stream = new MediaStream();
- stream.addTrack(videoTrack);
- videoElem.srcObject = stream;
- videoElem.play();
- } else {
- videoElem.stop();
- }
-});
-```
-
-
-```ts
-const videoEnabled = useDyteSelector((meeting) => meeting.self.videoEnabled);
-const videoTrack = useDyteSelector((meeting) => meeting.self.videoTrack);
-useEffect(() => {
- const videoElem = document.getElementById('my-video');
- if (videoEnabled && videoTrack) {
- const stream = new MediaStream();
- stream.addTrack(videoTrack);
- videoElem.srcObject = stream;
- videoElem.play();
- }
-}, [videoEnabled, videoTrack]);
-```
-
-
-
-## Audio update
-
-Triggered when the user starts / stops the audio using `enableAudio` or
-`disableAudio`
-
-
-
-```ts
-const audioElem = document.getElementById('my-audio');
-meeting.self.on('audioUpdate', async ({ audioEnabled, audioTrack }) => {
- if (audioEnabled) {
- const stream = new MediaStream();
- stream.addTrack(audioTrack);
- audioElem.srcObject = stream;
- audioElem.play();
- } else {
- audioElem.stop();
- }
-});
-```
-
-
-```ts
-const audioEnabled = useDyteSelector((meeting) => meeting.self.audioEnabled);
-const audioTrack = useDyteSelector((meeting) => meeting.self.audioTrack);
-useEffect(() => {
- const audioElem = document.getElementById('my-audio');
- if (audioEnabled && audioTrack) {
- const stream = new MediaStream();
- stream.addTrack(audioTrack);
- audioElem.srcObject = stream;
- audioElem.play();
- }
-}, [audioEnabled, audioTrack]);
-```
-
-
-
-## Screenshare update
-
-Triggered when the user starts / stops the screen share using
-`enableScreenShare()` or `disableScreenShare()`.
-
-
-
- ```ts
-const screenElem = document.getElementById('my-screen-share');
-meeting.self.on(
- 'screenShareUpdate',
- async ({ screenShareEnabled, screenShareTracks }) => {
- if (screenShareEnabled) {
- const stream = new MediaStream();
- stream.addTrack(screenShareTracks.video);
- screenElem.srcObject(stream);
- await screenElem.play();
- } else {
- await screenElem.stop();
- }
- },
-);
-```
-
-
- ```ts
-const screenShareEnabled = useDyteSelector(
- (meeting) => meeting.self.screenShareEnabled,
-);
-const screenShareTrack = useDyteSelector(
- (meeting) => meeting.self.screenShareTrack,
-);
-```
-
-
-
-## Device update
-
-Subscribe to the `deviceUpdate` event to handle the changing video, audio and
-speaker devices
-
-```ts
-meeting.self.on('deviceUpdate', ({ device }) => {
- // handle microphone device change
- if (device.kind === 'audioinput') {
- console.log('mic change', device);
- }
- // handle camera device change
- if (device.kind === 'videoinput') {
- console.log('camera change', device);
- }
- // handle speaker device change
- if (device.kind === 'audiooutput') {
- console.log('speaker change', device);
- }
-});
-```
-
-## Network quality score
-
-import SelfMediaScoreUpdate from '@site/docs/partials/events/_self-media-score-update.mdx';
-
-
-
-
- Web Core Events
-
-
-## Permission Updates
-
-Triggered when permissions are updated dynamically by a privileged user
-
-Subscribe to `chatUpdate`, `pollsUpdate`, `pluginsUpdate` or `*` for any kind of permission updates
-Example:
-
-```ts
-meeting.self.permissions.on('chatUpdate', () => {
- // Chat permissions are updated
- // check meeting.self.permissions for updated permissions
-});
-```
diff --git a/docs/web-core/local-user/extras.mdx b/docs/web-core/local-user/extras.mdx
deleted file mode 100644
index 2171d09611..0000000000
--- a/docs/web-core/local-user/extras.mdx
+++ /dev/null
@@ -1,97 +0,0 @@
----
-title: Other Methods
-description: Methods to manage the local user.
-sidebar_position: 5
-tags:
- - web-core
- - local-user
- - self
- - methods
----
-
-## Update media resolution at runtime
-
-### Camera
-
-meeting.self.updateVideoConstraints(resolution)
-
-Example
-
-```ts
-await meeting.self.updateVideoConstraints({
- width: { ideal: 1920 },
- height: { ideal: 1080 },
-});
-```
-
-### Screenshare
-
-meeting.self.updateScreenshareConstraints(resolution)
-
-Example
-
-```ts
-await meeting.self.updateScreenshareConstraints({
- width: { ideal: 1920 },
- height: { ideal: 1080 },
-});
-```
-
-## Using Middlewares
-
-Middlewares are add-ons that you can use to add effects and filters to your
-audio and video streams with ease. The `meeting.self` namespace exposes methods
-to add and remove these middlewares. Read more about how to work with
-middlewares [here](https://dyte.io/blog/streams-blog/).
-
-### Create a middleware
-
-```ts
-function RetroTheme() {
- return (canvas, ctx) => {
- ctx.filter = 'grayscale(1)';
- ctx.shadowColor = '#000';
- ctx.shadowBlur = 20;
- ctx.lineWidth = 50;
- ctx.strokeStyle = '#000';
- ctx.strokeRect(0, 0, canvas.width, canvas.height);
- };
-}
-```
-
-### Working with video middlewares
-
-```ts
-// Add the video middleware
-meeting.self.addVideoMiddleware(RetroTheme);
-
-// Remove the video middleware
-meeting.self.removeVideoMiddleware(RetroTheme);
-```
-
-### Working with audio middlewares
-
-```ts
-// Add the audio middleware
-meeting.self.addAudioMiddleware(YourAudioMiddleware);
-
-// Remove the audio middleware
-meeting.self.removeAudioMiddleware(YourAudioMiddleware);
-```
-
-## Pinning & unpinning
-
-You can pin or unpin yourself given you have the appropriate permissions. You
-can check the pinned status of the local user using `meeting.isPinned`.
-
-```ts
-meeting.self.pin();
-```
-
-```ts
-meeting.self.unpin();
-```
-
-
- Web Core Other Methods
-
diff --git a/docs/web-core/local-user/introduction.mdx b/docs/web-core/local-user/introduction.mdx
deleted file mode 100644
index 1c879725c6..0000000000
--- a/docs/web-core/local-user/introduction.mdx
+++ /dev/null
@@ -1,224 +0,0 @@
----
-title: Introduction
-description: Local user setup guide.
-sidebar_position: 1
-tags:
- - web-core
- - local-user
- - self
----
-
-# Introduction
-
-Accessible via `self` key within the `meeting` object, the local user object consists of all the information related to the current participant and methods to configure media and other states.
-
-## Properties
-
-Here is a list of properties that local user provides:
-
-**Metadata**
-
-- `userId`: User ID of the local user.
-- `customParticipantId`: Identifier provided by the developer while adding the
- participant.
-- `organizationId`: The ID of the organization the meeting is created from.
-- `name`: Contains Name of the local user.
-- `picture`: Display picture URL for the local user.
-- `permissions`: The permissions related to various capabilities for the local user defined by the preset
-- `config`: The configuration for how the meeting should appear for the local user
-
-**Media**:
-
-- `mediaPermissions`: The current audio and video permissions given by the local
- user.
-- `audioTrack`: The audio track for the local user.
-- `videoTrack`: The video track for the local user.
-- `screenShareTracks`: The screen share video and audio tracks for the local
- user.
-- `audioEnabled`: A boolean value indicating if the audio is currently enabled.
-- `videoEnabled`: A boolean value indicating if the video is currently enabled.
-- `screenShareEnabled`: A boolean value indicating if the screen share is
- currently enabled.
-
-**States**:
-
-- `isPinned`: A boolean value indicating if the local user is pinned or not.
-- `roomJoined`: A boolean value indicating if the local user is in the meeting
-- `roomState`: Indicates the state of the user in the meeting. It
- can take the following values:
-
- ```ts
- type RoomState =
- | 'init'
- | 'joined'
- | 'waitlisted'
- | 'rejected'
- | 'kicked'
- | 'left'
- | 'ended'
- | 'disconnected';
- ```
-
-```mermaid
-stateDiagram-v2
- direction LR
- classDef END fill:#ef4444,color:#fff,stroke:#ef4444;
-
- [*] --> init
- init --> joined
- init --> waitlisted
- waitlisted --> joined
- waitlisted --> rejected
- joined --> disconnected
- disconnected --> joined
- joined --> kicked
- joined --> left
- joined --> ended
-
- class kicked,left,ended,rejected END
-```
-
-
-
-
-If you would like to subscribe to roomState, you can do so by listening to the `roomLeft` and `roomJoined` events as seen [here](/web-core/local-user/events#room-joined).
-```ts
-const roomState = meeting.self.roomState;
-```
-
-
-
-
-```ts
-// subscribe to roomState
-const roomState = useDyteSelector((m) => m.self.roomState)
-return (
- <>
- {roomState === "disconnected" && disconnected
}
- >
-)
-```
-
-
-
-## Change the name of the local user
-
-Change the user's name by calling `setName` method. The changed name will
-reflect across all participants ONLY if the change happens before joining the
-meeting.
-
-```ts
-await meeting.self.setName('New Name');
-```
-
-## Media
-
-### Mute/Unmute microphone
-
-```ts
-// Mute Audio
-await meeting.self.disableAudio();
-
-// Unmute Audio
-await meeting.self.enableAudio();
-
-// Get current status
-meeting.self.audioEnabled;
-```
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableAudio()") --> success("Emits audioUpdate event on self")
- eam -. possibly .-> indirect("Update mediaPermissions.audio with mediaPermissionUpdate event")
-
- class eam basic;
-```
-
-### Enable/Disable camera
-
-```ts
-// Disable Video
-await meeting.self.disableVideo();
-
-// Enable Video
-await meeting.self.enableVideo();
-
-// Get current status
-meeting.self.videoEnabled;
-```
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableVideo()") --> success("Emits videoUpdate event on self")
- eam -. possibly .-> indirect("Update mediaPermissions.video with mediaPermissionUpdate event")
-
- class eam basic;
-```
-
-### Enable / Disable Screen share
-
-```ts
-// Enable Screenshare
-await meeting.self.enableScreenShare();
-
-// Disable Screenshare
-await meeting.self.disableScreenShare();
-
-// Get current status
-meeting.self.screenShareEnabled;
-```
-
-### Check all available media devices
-
-```ts
-// Returns all media devices accessible by the local participant.
-await meeting.self.getAllDevices();
-```
-
-### Change the media device in use
-
-Given a device parameter, switches the corresponding input to given device. You can choose which device needs to be changed to from using the above getAllDevices function
-
-```ts
-/**
- * Change the current media device that is being used by the local participant.
- * @param device The device that is to be used. A device of the same `kind` will be replaced.
- * the primary stream.
- */
-await meeting.self.setDevice(device);
-```
-
-## Play Video Track
-
-### Register Video Element
-
-API to play a users video track on a provided `` element.
-
-```ts
-// this is the video element where we want to play the users track
-const videoElement = document.querySelector('video.participant');
-
-meeting.self.registerVideoElement(videoElement);
-
-// if you want to play a preview video track which is local
-// and not sent to other users, you can pass
-// the second argument `isPreview` as `true`.
-meeting.self.registerVideoElement(videoElement, true);
-```
-
-### Deregister Video Element
-
-There is also a way to deregister a video element.
-This is typically done in the cleanup phase if you are using some framework like React.
-
-```ts
-meeting.self.deregisterVideoElement(videoElement);
-```
-
-
- Web Core Introduction
-
diff --git a/docs/web-core/local-user/manage-media-devices.mdx b/docs/web-core/local-user/manage-media-devices.mdx
deleted file mode 100644
index 16d2e96c71..0000000000
--- a/docs/web-core/local-user/manage-media-devices.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: Manage Media Devices
-description: Local user media guide to manage media permissions.
-sidebar_position: 3
-tags:
- - web-core
- - local-user
- - self
- - self events
----
-
-# Manage Media Devices
-
-To get the list of media devices that are currently being used, you can
-use the following methods:
-
-```js
-// Get all media devices
-const devices = await meeting.self.getAllDevices();
-
-// Get all audio devices
-const audioDevices = await meeting.self.getAudioDevices();
-
-// Get all video devices
-const videoDevices = await meeting.self.getVideoDevices();
-
-// Get all speakers
-const speakerDevices = await meeting.self.getSpeakerDevices();
-
-// Get device by ID
-const device = await meeting.self.getDeviceById('12345', 'audio');
-
-// Fetch current media devices being used
-const currentDevices = meeting.self.getCurrentDevices();
-```
-
-## Set device
-
-To set a device as an active device, you can call `setDevice` method. This takes
-a `MediaDeviceInfo` object, and replaces the same `kind` device.
-
-```js
-await meeting.self.setDevice(device);
-```
-
-
- Web Core Manage Media Devices
-
diff --git a/docs/web-core/local-user/media-permission-errors.mdx b/docs/web-core/local-user/media-permission-errors.mdx
deleted file mode 100644
index 25473dacf2..0000000000
--- a/docs/web-core/local-user/media-permission-errors.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Media Permission Errors
-description: Local user media guide to local media permission errors.
-sidebar_position: 4
-tags:
- - web-core
- - local-user
- - self
- - self events
----
-
-# Media Permission Errors
-
-This event is triggered when Dyte fails to acquire the user's local media
-(camera and/or microphone) or user revokes the permission for media devices.
-
-Your application can catch these errors like below:
-
-```ts
-meeting.self.on('mediaPermissionError', ({ message, kind }) => {
- console.log(`Failed to capture ${kind}: ${message}`);
-});
-```
-
-This event shares information that can be used to show appropriate message for
-the user.
-
-Possible values for **message** are
-
- `DENIED` - Permission was denied by the user
-
- `SYSTEM_DENIED` - Permission was denied by the system
-
- `COULD_NOT_START` - Failed to capture media stream from the hardware
-
-Possible values for **kind** - `audio`, `video`, `screenshare`
-
-
- Web Core Media Permission Errors
-
diff --git a/docs/web-core/participants/_category_.json b/docs/web-core/participants/_category_.json
deleted file mode 100644
index 1506bb147c..0000000000
--- a/docs/web-core/participants/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Remote Participants",
- "collapsible": true
-}
diff --git a/docs/web-core/participants/events.mdx b/docs/web-core/participants/events.mdx
deleted file mode 100644
index f6121e8927..0000000000
--- a/docs/web-core/participants/events.mdx
+++ /dev/null
@@ -1,324 +0,0 @@
----
-title: Events
-description: Event handling for participants.
-sidebar_position: 3
-tags:
- - web-core
- - participants
- - self
----
-
-You can subscribe to events for all participants using
-`meeting.participants.on()` method. Here are the supported events:
-
-### View mode change
-
-Triggered when the View mode changes
-
-
-
-```ts
-meeting.participants.on(
- 'viewModeChanged',
- ({ viewMode, currentPage, pageCount }) => {
- console.log('view mode changed', viewMode);
- },
-);
-```
-
-
-```ts
-const viewMode = useDyteSelector((meeting) => meeting.participants.viewMode);
-```
-
-
-
-
-### Page change
-
-
-
-```ts
-meeting.participants.on(
- 'pageChanged',
- ({ viewMode, currentPage, pageCount }) => {
- console.log('page changed', currentPage);
- },
-);
-```
-
-
-```ts
-const pageChanged = useDyteSelector(
- (meeting) => meeting.participants.pageCount,
-);
-```
-
-
-
-### Active speaker
-
-This event is triggered when a participant becomes `active` when they starts to
-speak.
-
-
-
-```ts
-meeting.participants.on('activeSpeaker', (participant) => {
- console.log(`${participant.id} is currently speaking`);
-});
-```
-
-
-```ts
-const activeSpeaker = useDyteSelector(
- (meeting) => meeting.participants.lastActiveSpeaker,
-);
-```
-
-
-
-## Events on all participants
-
-Instead of subscribing to individual participant events, you can subscribe to a
-participant map, such as `joined` & `active` and get updated when any of the
-participant emits an event.
-
-If you want to subscribe to participants when they become `active`, you can do
-so by subscribing to `meetings.participants.active.on('participantJoined')`
-
-### Participant joined
-
-Trigger an event when any participant joins the meeting.
-
-
-
-```ts
-meeting.participants.joined.on('participantJoined', (participant) => {
- console.log(`A participant with id "${participant.id}" has joined`);
-});
-```
-
-
-```ts
-/**
- * Returns a list of all joined participants in the meeting
-*/
-const joinedParticipants = useDyteSelector(
- (meeting) => meeting.participants.joined,
-);
-```
-Alternatively,
-```ts
-meeting.participants.joined.on('participantJoined', (participant) => {
- console.log(`A participant with id "${participant.id}" has joined`);
-});
-```
-
-
-
-### Participant left
-
-Trigger an event when any participant leaves the meeting.
-
-
-
-```ts
-meeting.participants.joined.on('participantLeft', (participant) => {
- console.log(`A participant with id "${participant.id}" has left the meeting`);
-});
-```
-
-
-```ts
-/**
- * Returns a list of all joined participants in the meeting
-*/
-const joinedParticipants = useDyteSelector(
- (meeting) => meeting.participants.joined,
-);
-```
-Alternatively,
-```ts
-meeting.participants.joined.on('participantLeft', (participant) => {
- console.log(`A participant with id "${participant.id}" has left the meeting`);
-});
-```
-
-
-
-### Participant pinned
-
-Trigger an event when a participant is pinned.
-
-
-
-```ts
-meeting.participants.joined.on('pinned', (participant) => {
- console.log(`Participant with id "${participant.id}" was pinned`);
-});
-```
-
-
-```ts
-// Returns a list of all pinned participants in the meeting, to listen to pinned event check the Javascript event
-const pinnedParticipants = useDyteSelector(
- (meeting) => meeting.participants.pinned,
-);
-```
-
-
-
-### Participant unpinned
-
-Trigger an event when a participant is unpinned.
-
-
-
-```ts
-meeting.participants.joined.on('unpinned', (participant) => {
- console.log(`Participant with id "${participant.id}" was unpinned`);
-});
-```
-
-
-```ts
-// Returns a list of all pinned participants in the meeting, to listen to pinned event check the Javascript event
-const pinnedParticipants = useDyteSelector(
- (meeting) => meeting.participants.pinned,
-);
-```
-
-
-
-### Video update
-
-Trigger an event when any participant starts / stops video.
-
-
-
-```ts
-meeting.participants.joined.on('videoUpdate', (participant) => {
- console.log(
- `A participant with id "${participant.id}" updated their video track in the meeting`,
- );
- // Use the video track if it exists
- if (participant.videoEnabled) {
- // participant.videoTrack
- } else {
- // handle stop video
- }
-});
-```
-
-
-```js
-// Check for one participant
-const videoEnabled = useDyteSelector(
- (m) => m.participants.joined.get(participantId).videoEnabled,
-);
-// All video enabled participants
-const videoEnabledParticipants = useDyteSelector((m) =>
- m.participants.joined.toArray().find((p) => p.videoEnabled),
-);
-```
-
-
-
-### Audio update
-
-Trigger an event when any participant starts / stops audio.
-
-
-
-```ts
-meeting.participants.joined.on('audioUpdate', (participant) => {
- console.log(
- `A participant with id "${participant.id}" updated their audio track in the meeting`,
- );
- // Use the audio track if it exists
- if (participant.audioEnabled) {
- // participant.audioTrack
- } else {
- // handle stop audio
- }
-});
-```
-
-
-
-```js
-// Check for one participant
-const audioEnabled = useDyteSelector(
- (m) => m.participants.joined.get(participantId).audioEnabled,
-);
-// All audio enabled participants
-const audioEnabledParticipants = useDyteSelector((m) =>
- m.participants.joined.toArray().find((p) => p.audioEnabled),
-);
-```
-
-
-
-### Screen share update
-
-Trigger an event when any participant starts / stops screen share.
-
-
-
-```ts
-meeting.participants.joined.on('screenShareUpdate', (participant) => {
- console.log(
- `A participant with id "${participant.id}" updated their screen share in the meeting`,
- );
- // Use the screen share track if it exists
- if (participant.screenShareEnabled) {
- // participant.screenShareTrack
- } else {
- // handle stop screen share
- }
-});
-```
-
-
-```ts
-// Check for one participant
-const screensharingParticipant = useDyteSelector((m) =>
- m.participants.joined.toArray().find((p) => p.screenShareEnabled),
-);
-// All screen sharing participants
-const audioEnabledParticipants = useDyteSelector((m) =>
- m.participants.joined.toArray().find((p) => p.screenShareEnabled),
-);
-```
-
-
-
-## Network quality score
-
-import ParticipantMediaScoreUpdate from '@site/docs/partials/events/_participant-media-score-update.mdx';
-
-
-
-## Events for specific participant
-
-If you want to subscribe to above events but for a specific participant only,
-you can do so by binding event to `meeting.participants.joined.get(peerId).on()`
-method. where the `peerId` is the id of the participant that you want to watch.
-
-### Webinar events
-
-Here is a list of events that can are emitted for a participants in a `WEBINAR`
-setup.
-
-| **Event** | **Description** |
-| ------------------------- | ---------------------------------------------------------------------- |
-| `peerRequestToJoinStage` | Emitted when a user has requested to join the webinar meeting. |
-| `peerRejectedToJoinStage` | Emitted when the user's request to join the meeting has been rejected. |
-| `peerAcceptedToJoinStage` | Emitted when the user's request to join the meeting has been accepted |
-| `peerStoppedPresenting` | Emitted when a participant stops presenting in the webinar meeting. |
-| `peerStartedPresenting` | Emitted when a participant starts presenting in the webinar meeting. |
-
-
- Web Core Participant Events
-
diff --git a/docs/web-core/participants/participant-object.mdx b/docs/web-core/participants/participant-object.mdx
deleted file mode 100644
index 1332cdddbe..0000000000
--- a/docs/web-core/participants/participant-object.mdx
+++ /dev/null
@@ -1,147 +0,0 @@
----
-title: Participant Object
-description: The object corresponding to a particular participant.
-sidebar_position: 2
-slug: /participants/participant-object
-tags:
- - web-core
- - participants
- - participant
----
-
-# Participant Object
-
-The `participant` object consists of all the information related to a particular
-participant. For instance, it contains a participants video/audio/screenshare
-stream, and the participant's name. It also contains state variables that
-indicate whether a participant's camera is on or off, and whether they are muted
-or unmuted. Head over to [DyteParticipant](../reference/DyteParticipant.md) for
-a detailed reference.
-
-The participant object has the following properties.
-
-**Media**:
-
-- `videoEnabled`: Set to true if the participant's camera is on.
-- `audioEnabled`: Set to true if the participant is unmuted.
-- `screenShareEnabled`: Set to true if the participant is sharing their screen.
-- `videoTrack`: The video track of the participant.
-- `audioTrack`: The audio track of the participant.
-- `screenShareTracks`: The video and audio (if any) track of the participant's
- screen share stream.
-
-**Metadata**:
-
-- `id`: The `participantId` of the participant (aka `peerId`).
-- `userId`: The `userId` of the participant.
-- `name`: The participant's name.
-- `picture`: The participant's picture (if any).
-- `customParticipantId`: An arbitrary ID that can be set to identify the
- participant.
-- `isPinned`: Set to true if the participant is pinned.
-- `presetName`: Name of the preset associated with the participant.
-
-The participant object is an event emitter, so you can set listeners on this
-object for events such as video and audio updates. For instance, to fire a
-callback when a participant toggles their mic, you can subscribe to the
-following events.
-
-```ts
-meeting.participants.joined
- .get(participantId)
- .on('audioUpdate', ({ audioEnabled, audioTrack }) => {
- // This will only be fired on mic toggles for the participant with ID `participantId`
- console.log(
- 'The participant with id',
- participantId,
- 'has toggled their mic to',
- audioEnabled,
- );
- });
-```
-
-The events emitted by all participant objects are also re-emitted by all the
-maps in `meeting.participants`. Therefore, you can add a listener to
-`meeting.participants.joined` for the `audioUpdate` event. For instance, the
-same code above can be re-implemented as follows.
-
-```ts
-meeting.participants.joined.on(
- 'audioUpdate',
- (participant, { audioEnabled, audioTrack }) => {
- // This will be fired on mic toggles for all participants in the meeting
- console.log(
- 'The participant with id',
- participant.id,
- 'has toggled their mic to',
- audioEnabled,
- );
- },
-);
-```
-
-Read more about the participant events in the
-[events](/web-core/participants/events) section in the API reference.
-
-## Host controls methods
-
-If you (the local user) have the relevant permissions in the meeting, you can
-disable a participant's video/audio streams, or even remove them from the
-meeting.
-
-```ts
-const participant = meeting.participants.joined.get(participantId);
-
-// To disable a participant's video stream
-participant.disableVideo();
-
-// To disable a participant's audio stream
-participant.disableAudio();
-
-// To kick a participant from the meeting
-participant.kick();
-```
-
-You can also `pin` or `unpin` a participant in the meeting. All "pinned"
-participants are added to the `meeting.participants.pinned` map.
-
-```ts
-const participant = meeting.participants.joined.get(participantId);
-
-// Pin a participant to the meeting.
-await participant.pin();
-
-// Unpin a participant in the meeting.
-await participant.unpin();
-```
-
-## Play Video Track
-
-### Register Video Element
-
-API to play a users video track on a provided `` element.
-
-```ts
-// this is the video element where we want to play the users track
-const videoElement = document.querySelector('video.participant');
-
-meeting.self.registerVideoElement(videoElement);
-
-// if you want to play a preview video track which is local
-// and not sent to other users, you can pass
-// the second argument `isPreview` as `true`.
-meeting.self.registerVideoElement(videoElement, true);
-```
-
-### Deregister Video Element
-
-There is also a way to deregister a video element.
-This is typically done in the cleanup phase if you are using some framework like React.
-
-```ts
-meeting.self.deregisterVideoElement(videoElement);
-```
-
-
- Web Core The participant object
-
diff --git a/docs/web-core/participants/permissions.mdx b/docs/web-core/participants/permissions.mdx
deleted file mode 100644
index dec9f4db92..0000000000
--- a/docs/web-core/participants/permissions.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
-# Permissions
-
-Permissions for a participant are defined by the preset. However they can updated in meeting by calling `updatePermissions` for remote participants
-
-## Find the target participants
-
-Permissions can be updated for either a single participant or multiple participant at once. Find the `id`s of the participant whose permissions need to be updated
-
-```ts
-const participantIds = meeting.participants.joined
- .toArray()
- .filter((e) => {
- return e.name.startsWith('John');
- })
- .map((p) => p.id);
-```
-
-## Update permissions
-
-```ts
-// Allow file upload permissions in public chat
-const newPermissions = { chat: { public: { files: true } } };
-
-meeting.participants.updatePermissions(participantIds, newPermissions);
-```
-
-Allowed values for update permissions objects. Every field is optional
-
-```ts
-interface UpdatedPermissions {
- polls?: {
- canCreate?: boolean;
- canVote?: boolean;
- };
- plugins?: {
- canClose?: boolean;
- canStart?: boolean;
- };
- chat?: {
- public?: {
- canSend?: boolean;
- text?: boolean;
- files?: boolean;
- };
- private?: {
- canSend?: boolean;
- text?: boolean;
- files?: boolean;
- };;
- };
-}
-```
diff --git a/docs/web-core/participants/pip.mdx b/docs/web-core/participants/pip.mdx
deleted file mode 100644
index 9b6480f607..0000000000
--- a/docs/web-core/participants/pip.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: Picture-in-Picture
-description: 'Events, methods and data pertaining to browser picture in picture mode'
-sidebar_position: 3
-tags:
- - web-core
- - participants
- - participant
----
-
-Picture-in-Picture API allows you to render `meeting.participants.active` participant's video as a floating tile outside of the current webpage's context.
-
-Supported in Chrome/Edge/Chromium based browsers
-
-## Methods
-
-### Check if supported
-
-Use the boolean value at `meeting.participants.pip.isSupported` to check if the browser supports PIP capabilities
-
-### Initialization
-
-Call `meeting.participant.pip.init()` to activate PIP mode. Optionally you can pass height and width the configure the size of the PIP tile
-
-
-
-```ts
-meeting.participant.pip.init({
- width: 360,
- height: 360,
-});
-```
-
-
-```ts
-const { meeting } = useDyteMeeting();
-meeting.participants.pip.init({
- width: 360,
- height: 360,
-});
-```
-
-
-
-### Enable
-
-`meeting.participant.pip.enable()` to enable PIP mode if disabled
-
-### Disable
-
-`meeting.participant.pip.disable()` to enable PIP mode if enabled
-
-
- Web Core Picture-in-Picture
-
diff --git a/docs/web-core/participants/remote-participants.mdx b/docs/web-core/participants/remote-participants.mdx
deleted file mode 100644
index 10ec193fac..0000000000
--- a/docs/web-core/participants/remote-participants.mdx
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: Participant Maps
-description: 'Events, methods and data pertaining to meeting participants.'
-sidebar_position: 1
-slug: /participants/
-tags:
- - web-core
- - participants
- - participant
----
-
-# Participant Maps
-
-The data regarding all meeting participants is stored under
-`meeting.participants`. These **does not** include the local user. Use the
-methods and events to consume the participants data. For example, to get all the
-participants who joined the meeting:
-
-```ts
-// get all joined participants
-const joinedParticipants = meeting.participants.joined;
-```
-
-The `meeting.participants` object has the following **maps** of participants
-
-- **joined**: A map that contains all the participants who are currently in the meeting
- except the local user
-- **waitlisted**: A map that contains all the participants waiting to join the
- meeting.
-- **active**: A map that contains all the participants except the local user whose media is subscribed to i.e
- participants are supposed to be on the screen at the moment except the local user
-- **pinned**: A map that contains all the pinned participants of the meeting.
-
-Therefore if you were to make a video / audio grid of participants, you'd use the `active`
-map, but to display the list of all participants in the meeting you'd use the `joined` map.
-
-Each participant in each of the `joined`, `waitlisted`, `active`, and `pinned`
-maps is of type [`DyteParticipant`](../reference/DyteParticipant.md). Read more
-about each individual `participant` object
-[here](../participants/participant-object.mdx).
-
-Each of these maps are of type
-[`DyteParticipantMap`](../reference/DyteParticipantMap.md), and therefore emit a
-`participantJoined` event when a participant is added to the map, and a
-`participantLeft` event when a participant leaves the map. For instance, to
-listen for when a participant gets pinned in the meeting, you can use the
-following snippet:
-
-```ts
-meeting.participants.pinned.on('participantJoined', (participant) => {
- console.log(`Participant ${participant.name} got pinned`);
-});
-```
-
----
-
-and these other properties
-
-- `count`: The number of participants who are joined in the meeting.
-- `pageCount`: Number of pages available in paginated mode.
-- `maxActiveParticipantsCount`: The maximum number of participants that can be
- present in the active state.
-- `lastActiveSpeaker `: This stores the `participantId` of the last participant
- who spoke in the meeting.
-
-## Set participant view mode
-
-The view mode indicates whether the participants are populated in `ACTIVE_GRID`
-mode or `PAGINATED` mode. In `ACTIVE_GRID` mode, the participants are
-automatically replaced in `meeting.participants.active`, based on who is
-speaking or who has their video turned on.
-
-In `PAGINATED` mode, the participants in `meeting.participants.active` will be
-fixed. Only when you call the `meeting.participants.setPage(pageNumber)` method,
-it will replace the `active` participants with a different set of participants.
-
-You can change the participant view between `ACTIVE_GRID` and `PAGINATED` mode
-using the following method. This will trigger `viewModeChanged` event as a side
-affect.
-
-```ts
-// set the view mode to paginated
-await meeting.participants.setViewMode('PAGINATED');
-
-// set the view mode to active grid
-await meeting.participants.setViewMode('ACTIVE_GRID');
-```
-
-### Set page number in paginated mode
-
-The `setPage()` method allows you to switch between pages of participants
-present in the meeting.
-
-```ts
-// switch to second page
-await meeting.participants.setPage(2);
-```
-
-## Waiting room methods
-
-The `acceptWaitingRoomRequest()` method accepts requests from waitlisted
-participants if user has appropriate permissions.
-
-```ts
-await meeting.participants.joined.acceptWaitingRoomRequest(participantId);
-```
-
-The `rejectWaitingRoomRequest()` method requests from waitlisted participants if
-user has appropriate permissions.
-
-```ts
-await meeting.participants.joined.rejectWaitingRoomRequest(participantId);
-```
-
-
- Web Core Participants
-
diff --git a/docs/web-core/plugins/_category_.json b/docs/web-core/plugins/_category_.json
deleted file mode 100644
index 5772922e2f..0000000000
--- a/docs/web-core/plugins/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 8,
- "label": "Plugins",
- "collapsible": true
-}
diff --git a/docs/web-core/plugins/disable-plugin.mdx b/docs/web-core/plugins/disable-plugin.mdx
deleted file mode 100644
index 29fb082c50..0000000000
--- a/docs/web-core/plugins/disable-plugin.mdx
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Functions to disable plugins
-description: Methods on a plugin in a meeting.
-sidebar_position: 3
-tags:
- - web-core
- - plugins
----
-
-# Functions to disable plugins
-
-Each plugin in `meeting.plugins` object is of type
-[`DytePlugin`](./introduction) and exposes the following functions to disable
-plugins.
-
-## Remove Plugin View
-
-This method is used for cleaning up event listeners attached to an iframe. It
-must be used before the iframe is removed from the DOM.
-
-
-
-```ts
-const plugins = meeting.plugins.all.toArray();
-plugins.forEach(async (plugin: DytePlugin) => {
- await plugin.removePluginView();
-});
-```
-
-
-```ts
-const plugins = useDyteSelector((m) => m.plugins.all.toArray());
-plugins.forEach(async (plugin: DytePlugin) => {
- await plugin.removePluginView();
-});
-```
-
-
-
-### Deactivate Plugins
-
-The `deactivate()` method deactivates the plugin for all users in the meeting.
-When you deactivate a plugin, it gets removed from the active plugins map and
-can only be accessed from `meeting.plugins.all`.
-
-The snippet below displays all active plugins and deactivate a plugin on click.
-
-
-
-```ts
-const plugins = meeting.plugins.active.toArray();
-plugins.forEach((plugin: DytePlugin) => {
- const button = document.createElement('button');
- button.innerText = `Deactivate ${plugin.name}`;
- button.onclick = async () => {
- await plugin.deactivate();
- };
- document.body.appendChild(button);
-});
-```
-
-
-```ts
-const plugins = useDyteSelector((m) => m.plugins.active.toArray());
-plugins.forEach((plugin: DytePlugin) => {
- const button = document.createElement('button');
- button.innerText = `Deactivate ${plugin.name}`;
- button.onclick = async () => {
- await plugin.deactivate();
- };
- document.body.appendChild(button);
-});
-```
-
-
-
-Here is another way you can deactivate a plugin.
-
-```ts
-const plugins = meeting.plugins.active.toArray();
-const plugin = plugins.find((p) => p.name === 'YouTube');
-
-await plugin?.deactivate();
-```
-
-### ~~Disable Plugins~~
-
-**_Deprecated_**
-
-The `disable()` method deactivates the plugin for the current user. This does
-not affect other users in the meeting.
-
-```ts
-const plugins = meeting.plugins.active.toArray();
-const plugin = plugins.find((p) => p.name === 'YouTube');
-
-await plugin?.disable();
-```
-
-
- Web Core Functions to disable plugins
-
diff --git a/docs/web-core/plugins/enable-plugin.mdx b/docs/web-core/plugins/enable-plugin.mdx
deleted file mode 100644
index cee34c6f34..0000000000
--- a/docs/web-core/plugins/enable-plugin.mdx
+++ /dev/null
@@ -1,118 +0,0 @@
----
-title: Functions to enable plugins
-description: Methods on a plugin in a meeting.
-sidebar_position: 2
-tags:
- - web-core
- - plugins
----
-
-# Functions to enable plugins
-
-Each plugin in `meeting.plugins` object is of type
-[`DytePlugin`](./introduction) and exposes the following functions to enable
-plugins.
-
-### Add Plugin View
-
-This method adds the communication layer between the plugin inside the iframe and
-the core application (meeting object) in the main window.
-
-
-
-```ts
-const plugins = meeting.plugins.all.toArray();
-plugins.forEach(async (plugin: DytePlugin) => {
- const iframe = document.createElement('iframe');
- await plugin.addPluginView(iframe);
-});
-```
-
-
-```ts
-const plugins = useDyteSelector((m) => m.plugins.all.toArray());
-plugins.forEach(async (plugin: DytePlugin) => {
- const iframe = document.createElement('iframe');
- await plugin.addPluginView(iframe);
-});
-```
-
-
-
-### Activate Plugins
-
-The `activate()` method activates a plugin for all users in the meeting. When
-you activate a plugin, it moves into the active plugins map and can be accessed
-from `meeting.plugins.active`.
-
-The snippet below displays all plugins and activates a plugin on click.
-
-
-
-```ts
-const plugins = meeting.plugins.all.toArray();
-plugins.forEach((plugin: DytePlugin) => {
- const button = document.createElement('button');
- button.innerText = plugin.name;
- button.onclick = async () => {
- await plugin.activate();
- };
- document.body.appendChild(button);
-});
-```
-
-
-```ts
-const plugins = useDyteSelector((m) => m.plugins.all.toArray());
-plugins.forEach((plugin: DytePlugin) => {
- const button = document.createElement('button');
- button.innerText = plugin.name;
- button.onclick = async () => {
- await plugin.activate();
- };
- document.body.appendChild(button);
-});
-```
-
-
-
-Here is another way you can activate a plugin.
-
-
-
-
-```ts
-const plugins = meeting.plugins.all.toArray();
-const plugin = plugins.find((p) => p.name === 'YouTube');
-await plugin?.activate();
-```
-
-
-
-
-```ts
-const plugins = useDyteSelector((m) => m.plugins.all.toArray());
-const plugin = plugins.find((p) => p.name === 'YouTube');
-await plugin?.activate();
-```
-
-
-
-
-### ~~Enable Plugins~~
-
-**_Deprecated_**
-
-The `enable()` method enables a plugin for the current user. This does not
-affect other users in the meeting.
-
-```ts
-const plugins = meeting.plugins.all.toArray();
-const plugin = plugins.find((p) => p.name === 'YouTube');
-
-await plugin?.enable();
-```
-
-
- Web Core Functions to enable plugins
-
diff --git a/docs/web-core/plugins/extra.mdx b/docs/web-core/plugins/extra.mdx
deleted file mode 100644
index 2533499681..0000000000
--- a/docs/web-core/plugins/extra.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Other methods
-description: Methods on a plugin in a meeting.
-sidebar_position: 4
-tags:
- - web-core
- - plugins
----
-
-## Subscribe to events from a plugin
-
-A plugin emits the following events:
-
-- `enabled` - Emitted when a plugin is enabled.
-- `closed` - Emitted when a plugin is closed.
-- `dyteStateUpdate` - Emitted when the state of the plugin has changed.
-- `ready` - Emitted when the plugin is ready to exchange data with client SDK.
-- `toggleViewMode` - Emitted when the control is toggled for users with
- view-only permissions for a plugin.
-
-```ts
-const pluginId = '...';
-const plugin = meeting.plugins.active.get(pluginId);
-plugin.on('enabled', () => {
- console.log('The plugin has been enabled');
-});
-```
-
-## Send data to the plugin
-
-You can send data (type `any`) to a plugin using the `sendData()` method. This
-method comes in handy when building your own plugin.
-
-```ts
-const pluginId = '...';
-const plugin = meeting.plugins.active.get(pluginId);
-plugin.on('ready', () => {
- plugin.sendData({
- eventName: 'my-custom-event',
- data: 'Hello world',
- });
-});
-```
-
-
- Web Core Other methods
-
diff --git a/docs/web-core/plugins/introduction.mdx b/docs/web-core/plugins/introduction.mdx
deleted file mode 100644
index 4e2682c396..0000000000
--- a/docs/web-core/plugins/introduction.mdx
+++ /dev/null
@@ -1,84 +0,0 @@
----
-title: Introduction
-description: Manage plugins in a meeting.
-sidebar_position: 1
-tags:
- - web-core
- - plugins
----
-
-# Introduction
-
-Plugins are one-click add-ons that can make your meetings more immersive and
-collaborative. Dyte provides a bunch of inbuilt plugins to choose from, you can
-also build your own plugins using the Plugin SDK.
-
-The meeting plugins can be accessed from the `meeting.plugins` object, it
-exposes the following.
-
-| Property | Type | Description |
-| -------- | ---- | -------------------------------------- |
-| active | Map | All plugins that are currently in use. |
-| all | Map | All plugins the meeting has access to. |
-
-Each plugin in the map is of type `DytePlugin`.
-
-```ts
-interface DytePlugin {
- baseURL: string;
- createdAt: string;
- description: string;
- id: string;
- name: string;
- config: PluginConfig | undefined;
- organizationId: string;
- picture: string;
- private: boolean;
- published: boolean;
- staggered: boolean;
- tags: string[];
- type: string;
- updatedAt: string;
-}
-```
-
-Once a plugin is activated, `plugin.config` get's populated. It is of type
-`PluginConfig`.
-
-```ts
-interface PluginConfig {
- name: string;
- pluginId: string;
- version: string;
- description: string;
- author?: string;
- repository?: string;
- tags?: string[];
- picture?: string;
- url?: string;
- files: {
- include: string[];
- exclude?: string[];
- };
- views?: {
- [viewId: string]: {
- url: string;
- suggestedPosition: string;
- };
- };
- contentScript?: string;
- permissions?: {
- [key: string]: {
- default: boolean;
- description: string;
- };
- };
- config?: {
- [key: string]: string;
- };
-}
-```
-
-
- Web Core Introduction
-
diff --git a/docs/web-core/polls/_category_.json b/docs/web-core/polls/_category_.json
deleted file mode 100644
index fe2eed0b04..0000000000
--- a/docs/web-core/polls/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 10,
- "label": "Polls",
- "collapsible": true
-}
diff --git a/docs/web-core/polls/creating-a-poll.mdx b/docs/web-core/polls/creating-a-poll.mdx
deleted file mode 100644
index 0c44065171..0000000000
--- a/docs/web-core/polls/creating-a-poll.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: Creating a poll
-description: Create polls in a meeting.
-sidebar_position: 2
-tags:
- - web-core
- - polls
- - create
----
-
-# Creating a poll
-
-A new poll can be created using the `create` method from the
-[`meeting.polls`](./introduction) object. The `meeting.polls.create()` method
-accepts the following params.
-
-| Param | Type | Default Value | Required | Description |
-| --------- | -------- | ------------- | -------- | ------------------------------------------ |
-| question | string | - | yes | The question that is to be voted for. |
-| options | string[] | - | yes | The options of the poll. |
-| anonymous | boolean | false | no | If true, the poll votes are anonymous. |
-| hideVotes | boolean | false | no | If true, the votes on the poll are hidden. |
-
-The following snippet creates a poll where votes are anonymous.
-
-```ts
-await meeting.poll.create(
- 'Are you an early bird or a night owl?',
- ['Early bird', 'Night owl'],
- true,
-);
-```
-
-
- Web Core Creating a poll
-
diff --git a/docs/web-core/polls/introduction.mdx b/docs/web-core/polls/introduction.mdx
deleted file mode 100644
index b4c90d2c3f..0000000000
--- a/docs/web-core/polls/introduction.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Introduction
-description: 'Create, receive and interact with polls in a meeting.'
-sidebar_position: 1
-tags:
- - web-core
- - polls
----
-
-# Introduction
-
-The meetings polls object can be accessed using `meeting.polls`. It provides
-methods to create polls, vote, and more.
-
-`meeting.polls.items` returns an array of all polls created in a meeting, where
-each element is an object of type `Poll`.
-
-The type `Poll` is defined in the following manner.
-
-```ts
-interface Poll {
- id: string;
- question: string;
- options: PollOption[];
- anonymous: boolean;
- hideVotes: boolean;
- createdBy: string;
- createdByUserId: string;
- voted: string[]; // stores participant ID
-}
-
-interface PollOption {
- text: string;
- votes: {
- id: string; // stores participant ID
- name: string;
- }[];
- count: number;
-}
-```
-
-
- Web Core Introduction
-
diff --git a/docs/web-core/polls/other-poll-functions.mdx b/docs/web-core/polls/other-poll-functions.mdx
deleted file mode 100644
index 536af15ce2..0000000000
--- a/docs/web-core/polls/other-poll-functions.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Other poll functions
-description: Other poll functions
-sidebar_position: 4
-tags:
- - web-core
- - polls
- - results
- - updates
----
-
-# Other poll functions
-
-## View poll results
-
-**The total votes on a poll can be accessed in the following manner.**
-
-```ts
-const poll = meeting.polls.items[0];
-const votes = poll.voted;
-```
-
-`votes` is an array of participant ID's (`meeting.participant.id`).
-
-**The total votes on a poll option can be accessed in the following manner.**
-
-```ts
-const poll = meeting.polls.items[0];
-const options = poll.options;
-```
-
-`options` returns an array of objects, where each object is of type
-[`PollObject`](./introduction).
-
-## Get notified when a poll is created or updated
-
-An event is fired each time `meeting.polls.items` is updated or created. User
-can listen for this to get the updated list of polls. the response object
-contains the following properties.
-
-- `polls`: List of all polls.
-- `newPoll`: A boolean variable which is true when a new poll has been created.
-
-```ts
-meeting.polls.on('pollsUpdate', ({ polls, newPoll }) => {
- console.log(polls, newPoll);
-});
-```
-
-
- Web Core Other poll functions
-
diff --git a/docs/web-core/polls/voting-on-a-poll.mdx b/docs/web-core/polls/voting-on-a-poll.mdx
deleted file mode 100644
index e99ef790eb..0000000000
--- a/docs/web-core/polls/voting-on-a-poll.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Voting on a poll
-description: Voting on polls in a meeting.
-sidebar_position: 3
-tags:
- - web-core
- - polls
- - votes
----
-
-# Voting on a poll
-
-The `meeting.polls.vote()` method can be used to register a vote on a poll. It
-accepts the following params.
-
-| Param | Type | Default Value | Required | Description |
-| ----- | ------ | ------------- | -------- | ------------------------------------------ |
-| id | string | - | yes | The ID of the poll that is to be voted on. |
-| index | number | - | yes | The index of the option. |
-
-The following snippet votes for the 1st option on the 1st poll created in the
-meeting.
-
-```ts
-const poll = meeting.polls.items[0];
-await meeting.poll.vote(poll.id, 0);
-```
-
-
- Web Core Voting on a poll
-
diff --git a/docs/web-core/pre-call/1-media-preview.mdx b/docs/web-core/pre-call/1-media-preview.mdx
deleted file mode 100644
index 0c6b805f60..0000000000
--- a/docs/web-core/pre-call/1-media-preview.mdx
+++ /dev/null
@@ -1,172 +0,0 @@
-# Media Preview
-
-This section focuses on pre-call functionality, providing developers with the tools needed to prepare the media environment before joining the meeting. If you are using our UI Kits, this will be handled by `dyte-setup-screen` or could be built with `dyte-participant-tile`, `dyte-settings` components.
-
-## Properties
-
-- `audioEnabled`: A boolean value indicating if the audio is currently enabled.
-- `videoEnabled`: A boolean value indicating if the video is currently enabled.
-
-- `audioTrack`: The audio track for the local user.
-- `videoTrack`: The video track for the local user.
-
-## Methods
-
-### Toggling Media
-
-The same methods used by post joining meeting are also used to control media-pre meeting.
-
-**1. Mute/Unmute microphone**
-
-```ts
-// Mute Audio
-await meeting.self.disableAudio();
-
-// Unmute Audio
-await meeting.self.enableAudio();
-```
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableAudio()") --> success("Emits audioUpdate event on self")
- eam -. possibly .-> indirect("Update mediaPermissions.audio with mediaPermissionUpdate event")
-
- class eam basic;
-```
-
-
-
-Anytime there is an update in audio state you will get a `audioUpdate` event
-
-
-
-
-```ts
-meeting.self.on('audioUpdate', ({ audioEnabled, audioTrack }) => {
- // if enabled show a visual(izer) preview of the audio to the user
-});
-```
-
-
-
-
-```tsx
-const audioEnabled = useDyteSelector((m) => m.self.audioEnabled);
-const audioTrack = useDyteSelector((m) => m.self.audioTrack);
-```
-
-or if you want a traditional JS event you can use the `audioUpdate` event
-
-```ts
-// Alternatively
-useEffect(() => {
- if (!meeting) return;
-
- const onAudioUpdate = ({ audioEnabled, audioTrack }) => {
- // if enabled show a visual(izer) preview of the audio to the user
- };
-
- meeting.self.on('audioUpdate', onAudioUpdate);
- return () => {
- meeting.self.removeListener('audioUpdate', onAudioUpdate);
- };
-}, [meeting]);
-```
-
-
-
-
-**2. Enable/Disable camera**
-
-```ts
-// Disable Video
-await meeting.self.disableVideo();
-
-// Enable Video
-await meeting.self.enableVideo();
-```
-
-```mermaid
-flowchart LR
- classDef basic fill:white;
-
- eam("enableVideo()") --> success("Emits videoUpdate event on self")
- eam -. possibly .-> indirect("Update mediaPermissions.audio with mediaPermissionUpdate event")
-
- class eam basic;
-```
-
-
-Anytime there is an update in audio state you will get a `videoUpdate` event
-
-
-
-
-```ts
-meeting.self.on('videoUpdate', ({(videoEnabled, videoTrack)}) => {
- // if videoEnabled play video here to a element
-});
-```
-
-
-
-```ts
-const videoEnabled = useDyteSelector((m) => m.self.videoEnabled);
-const videoTrack = useDyteSelector((m) => m.self.videoTrack);
-```
-
-or if you want a traditional JS event you can use the `videoUpdate` event
-
-```ts
-// Alternatively
-useEffect(() => {
- if (!meeting) return;
-
- const onVideoUpdate = ({ videoEnabled, videoTrack }) => {
- // if videoEnabled play video here to a element
- };
-
- meeting.self.on('videoUpdate', onVideoUpdate);
- return () => {
- meeting.self.removeListener('videoUpdate', onVideoUpdate);
- };
-}, [meeting]);
-```
-
-
-
-
-### Changing Media Device
-
-To get the list of media devices that are currently being used, you can
-use the following methods:
-
-```ts
-// Fetch current media devices being used
-const currentDevices = meeting.self.getCurrentDevices();
-```
-
-```js
-// Get all media devices
-const devices = await meeting.self.getAllDevices();
-
-// Get all audio devices
-const audioDevices = await meeting.self.getAudioDevices();
-
-// Get all video devices
-const videoDevices = await meeting.self.getVideoDevices();
-
-// Get all speakers
-const speakerDevices = await meeting.self.getSpeakerDevices();
-```
-
-These methods should be called when you want the user to be shown these preferences. When the user selects a device, use the below method to select the device.
-
-**Set device**
-
-```js
-meeting.self.setDevice(device);
-// eg. device = videoDevices[0];
-```
diff --git a/docs/web-core/pre-call/2-handling-permissions.mdx b/docs/web-core/pre-call/2-handling-permissions.mdx
deleted file mode 100644
index 614ba5d2fe..0000000000
--- a/docs/web-core/pre-call/2-handling-permissions.mdx
+++ /dev/null
@@ -1,70 +0,0 @@
-# Handling Browser Permissions
-
-## Properties
-
-`self.mediaPermissions`: The current audio and video **browser permissions** given by the local
-user.
-
-Permissions start with `NOT_REQUESTED` and can go into 4 different states
-
-```mermaid
-stateDiagram-v2
- NOT_REQUESTED --> ACCEPTED
- NOT_REQUESTED --> DENIED
- NOT_REQUESTED --> SYSTEM_DENIED
- NOT_REQUESTED --> COULD_NOT_START
-```
-
-
-
-- `ACCEPTED` - The user accepted browser permission prompts
-- `DENIED` - The user denied browser permission prompts
-- `SYSTEM_DENIED` - The user's browser does not have the required permission, in this case this usually means the browser application lacks the necessary permission on the OS level
-- `COULD_NOT_START` - Unable to start the selected device, you can retry with a different device
-
-
-
-:::warning
-
-One other thing to note down here is user might revoke permission later, or might unplug devices etc so these states can change at runtime
-
-:::
-
-
-
-Use the `mediaPermissionUpdate` event on `self` to listen for these changes
-
-
-
-```js
-meeting.self?.addListener('mediaPermissionUpdate', ({ kind, message }) => {
- console.log(`Permission update for ${kind} is ${message}`);
-});
-```
-
-
-```js
-useEffect(() => {
- const onMediaPermissionUpdate = ({ kind, message }) => {
- console.log(`Permission update for ${kind} is ${message}`);
- };
- meeting.self?.on('mediaPermissionUpdate', onMediaPermissionUpdate);
- return () => {
- meeting.self?.off('mediaPermissionUpdate', onMediaPermissionUpdate);
- };
-}, [meeting]);
-```
-
-
-
-```mermaid
-stateDiagram-v2
- NOT_REQUESTED --> ACCEPTED
- NOT_REQUESTED --> DENIED
- NOT_REQUESTED --> SYSTEM_DENIED
- NOT_REQUESTED --> COULD_NOT_START
- ACCEPTED --> DENIED
- ACCEPTED --> COULD_NOT_START
- DENIED --> ACCEPTED
- COULD_NOT_START --> ACCEPTED
-```
diff --git a/docs/web-core/pre-call/3-virtual-bg.mdx b/docs/web-core/pre-call/3-virtual-bg.mdx
deleted file mode 100644
index 35437cab88..0000000000
--- a/docs/web-core/pre-call/3-virtual-bg.mdx
+++ /dev/null
@@ -1,147 +0,0 @@
----
-sidebar_label: Virtual BG and Noise Cancellation
----
-
-#
-
-## Virtual Background & Blur
-
-### Installation
-
-To enable the virtual background feature in your application, you first need to install the "Background Transformer" package.
-
-
-
-
-```bash
-npm i @dytesdk/video-background-transformer
-```
-
-
-
-
-If you are using the web-core CDN script bundle, you can add the package by including a script tag in the head section of your HTML file:
-
-```js
-
-```
-
-
-
-
-### Initialize
-
-```js
-import DyteVideoBackgroundTransformer from '@dytesdk/video-background-transformer';
-```
-
-If you installed the package using a script tag, the `DyteVideoBackgroundTransformer` will be automatically available for use once the installation process is complete.
-
-2.x versions of DyteVideoBackgroundTransformer use their own rendering mechanism thus require you to disable the default per frame canvas rendering.
-
-```js
-await meeting.self.setVideoMiddlewareGlobalConfig({
- disablePerFrameCanvasRendering: true,
-});
-```
-
-For reference, A middleware such as [company branding](https://github.com/dyte-in/streams-middleware-samples/blob/main/video/company-branding.js) with the default per frame rendering can be rewritten without per frame rendering as [this](https://github.com/dyte-in/streams-middleware-samples/blob/main/video/middleware-with-per-frame-rendering-disabled/company-branding.js).
-
-:::info Note
-If you don't want to disable the default per frame rendering mechanism due to a custom middleware, please use the [legacy version](https://www.npmjs.com/package/@dytesdk/video-background-transformer/v/1.1.8) (README included) of DyteVideoBackgroundTransformer that is compatible with web-core 1.x versions.
-:::
-
-Now that we have disabled the per frame rendering, we can initialise the DyteVideoBackgroundTransformer.
-
-```js
-const videoBackgroundTransformer = await DyteVideoBackgroundTransformer.init({
- meeting: meeting,
- segmentationConfig: {
- pipeline: 'canvas2dCpu', // 'webgl2' | 'canvas2dCpu'
- },
-});
-```
-
-To customise DyteVideoBackgroundTransformer configs, please refer to the [video background transfomer](https://www.npmjs.com/package/@dytesdk/video-background-transformer?activeTab=readme) NPM package.
-
-:::info Note
-DyteVideoBackgroundTransformer's 2.x version requires you to use web-core 2.x versions. Please refer to our web-core [upgrade guide](https://docs.dyte.io/web-core/upgrade).
-
-In case you don't want to upgrade SDKs yet, Please use the [legacy version](https://www.npmjs.com/package/@dytesdk/video-background-transformer/v/1.1.8) (README included) of DyteVideoBackgroundTransformer that is compatible with web-core 1.x versions.
-:::
-
-### Add an image as a background
-
-To incorporate an image as a background, create a static background video middleware using the `createStaticBackgroundVideoMiddleware` method provided by the `videoBackgroundTransformer` object.
-
-```js
-const videoMiddleware =
- await videoBackgroundTransformer.createStaticBackgroundVideoMiddleware(
- `https://assets.dyte.io/backgrounds/bg-dyte-office.jpg`,
- );
-meeting.self.addVideoMiddleware(videoMiddleware);
-```
-
-:::info note
-
-Ensure that the URL of the image allows Cross-Origin Resource Sharing (CORS) to avoid canvas tainting issues. If the CORS policy is not allowed for the image, it may result in the video feed getting stuck on a frame or appearing blank.
-
-:::
-
-### Blur the background
-
-Create a background blur video middleware using the `createBackgroundBlurVideoMiddleware` method provided by the `videoBackgroundTransformer` object.
-
-```js
-const videoMiddleware =
- await videoBackgroundTransformer.createBackgroundBlurVideoMiddleware(10);
-meeting.self.addVideoMiddleware(videoMiddleware);
-```
-
-Pass intensity as a parameter between 1-100
-
-### Remove blur/virtual background
-
-Use the `removeVideoMiddleware` method
-
-```
-meeting.self.removeVideoMiddleware(videoMiddleware);
-```
-
-## Noise Cancellation (Krisp.ai)
-
-:::info note
-
-This is a paid addon, contact support@dyte.io for access.
-
-:::
-
-### Installation
-
-Create/Append to the `.npmrc` file in the project root with the below contents
-
-```
-//registry.npmjs.org/:_authToken=
-@dytesdk:registry=https://registry.npmjs.org/
-#always-auth=true
-```
-
-```sh
-npm i @dytesdk/krisp-noise-cancellation
-```
-
-### Usage
-
-**Initialise the middleware**
-
-```ts
-const krisp = new Krisp();
-await krisp.init(meeting);
-```
-
-**Enable / disable the noise cancellation**
-
-```
-krisp.activate()
-// krisp.deactivate()
-```
diff --git a/docs/web-core/pre-call/4-meeting-meta.mdx b/docs/web-core/pre-call/4-meeting-meta.mdx
deleted file mode 100644
index 168a7002f5..0000000000
--- a/docs/web-core/pre-call/4-meeting-meta.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
-# Meeting Metadata
-
-### Change the name of the user
-
-Allow the user to edit their name by calling `setName` method.
-
-```ts
-await meeting.self.setName('New Name');
-```
-
-### Get info about the participants in the meeting
-
-Before joining the meeting, you can get a list of people currently in the meeting by using the method
-
-```ts
-/**
- * Returns all peers currently in the room, is a non paginated call
- * and should only be used if you are in a non room joined state,
- * if in a joined group call, use `meeting.participants.joined`
- */
-meeting.participants.getParticipantsInMeetingPreJoin();
-```
diff --git a/docs/web-core/pre-call/5-waiting-room.mdx b/docs/web-core/pre-call/5-waiting-room.mdx
deleted file mode 100644
index 7ae4b37d74..0000000000
--- a/docs/web-core/pre-call/5-waiting-room.mdx
+++ /dev/null
@@ -1,111 +0,0 @@
-# Waiting Room
-
-After you call `.join()` on meeting, you either get a `roomJoined` event if you are allowed to join or a `waitlisted` event.
-
-Use the `self.roomState` to track the user's state in the meeting.
-
-```mermaid
-stateDiagram-v2
- init --> joined
- init --> waitlisted
- waitlisted --> joined
- waitlisted --> rejected
-```
-
-
-
-This diagram only represents the waiting room related states, the `roomState` property also transitions through other states
-
-Each of these state changes generate their own events.
-
-- **joined**
-
-
-
-
-```ts
-meeting.self.on('roomJoined', () => {
- // local user is in the meeting
-});
-```
-
-
-
-
-```ts
-const roomState = useDyteSelector((m) => m.self.roomState);
-const joined = roomState === 'joined';
-```
-
-Alternatively
-
-```ts
-meeting.self.on('roomJoined', () => {
- // local user is in the meeting
-});
-```
-
-
-
-
-- **waitlisted**
-
-
-
-
-```ts
-meeting.self.on('waitlisted', () => {
- // local user is waitlisted
-});
-```
-
-
-
-
-```ts
-const roomState = useDyteSelector((m) => m.self.roomState);
-const isWaitlisted = roomState === 'waitlisted';
-```
-
-Alternatively
-
-```ts
-meeting.self.on('waitlisted', () => {
- // local user is waitlisted
-});
-```
-
-
-
-
-- **rejected**
-
-
-
-
-```ts
-meeting.self.on('roomLeft', ({ state }) => {
- // state = rejected when host rejects the entry
-});
-```
-
-
-
-
-```ts
-const roomState = useDyteSelector((m) => m.self.roomState);
-const rejected = roomState === 'rejected';
-```
-
-Alternatively
-
-```ts
-meeting.self.on('roomLeft', ({ state }) => {
- // state = rejected when host rejects the entry
-});
-```
-
-
-
-
-Host can use [these methods to accept/reject participants](/web-core/participants#waiting-room-methods)
diff --git a/docs/web-core/pre-call/_category_.json b/docs/web-core/pre-call/_category_.json
deleted file mode 100644
index 23939cdb04..0000000000
--- a/docs/web-core/pre-call/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 3,
- "label": "Pre-call",
- "collapsible": true,
- "className": "pre-call-docs"
-}
diff --git a/docs/web-core/quickstart.mdx b/docs/web-core/quickstart.mdx
deleted file mode 100644
index 20279cc51f..0000000000
--- a/docs/web-core/quickstart.mdx
+++ /dev/null
@@ -1,249 +0,0 @@
----
-tags:
- - web-core
- - quickstart
- - setup
-slug: /
-sidebar_position: 2
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-import { WebCoreCDNInstallation } from '@site/src/components/LatestInstallation';
-
-# Quickstart
-
-This quickstart shows how to incorporate live video and audio into any web application using Dyte's Core SDKs.
-
-Core SDKs offer comprehensive customization and branding capabilities, enabling you to create your own user interface (UI) from scratch, without having to deal with complex media layers.
-
-If you're looking for a quick and easy way to integrate video and audio into your application with a prebuilt UI, check out our [UI Kit](/ui-kit/quickstart).
-
-## Objective
-
-You'll learn how to:
-
-- Install the Dyte SDK
-- Initialize Dyte Client
-- Connect to the meeting
-- Go live!
-
-## Before Getting Started
-
-- Make sure you've read the [Getting Started with Dyte](/getting-started) topic
- and completed the following steps:
-
- - Create a [Dyte Developer Account](https://dev.dyte.io/)
- - Create a [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
- - [Add Participant](/api/?v=v2#/operations/add_participant) to the meeting
-
-## Step 1: Install the SDK
-
-You can install the package using CDN, npm or Yarn.
-
-
-
-
-### NPM
-
-```shell
-npm install @dytesdk/web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Fweb-core)
-
-### CDN
-
-Add the following script tag in the head of your HTML file.
-
-
-
-
-
-```shell
-npm install @dytesdk/react-web-core
-```
-
-[](https://badge.fury.io/js/@dytesdk%2Freact-web-core)
-
-
-
-
-## Step 2: Initialize the SDK
-
-
-
-1. Initialize the Dyte client.
-2. Call the `init()` method and pass the authToken.
-
-| | |
-| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api#/operations/add_participant). The API response contains the authToken. |
-
-```js
-const meeting = await DyteClient.init({
- authToken,
-});
-```
-
-
-
-To start, we need to initialize the libraries and wrap the application in the ` ` component. Import the `DyteProvider` from the `dytesdk/react-web-core`.
-
-The ` ` provides the necessary context for the various hooks to consume the `meeting` object as per their purpose. Dyte provides the following built-in hooks for your usage:
-
-- `useDyteClient()`
-- `useDyteMeeting()`
-- `useDyteSelector()`
-
-For more information on hooks, see [Use Web Core Hooks](/react-ui-kit/using-hooks).
-
-To initialize, call the `init()` method and pass the `authToken`. You can get the `authToken` using the [Add Participant API](/api#/operations/add_participant).
-
-```jsx
-import { DyteProvider, useDyteClient } from '@dytesdk/react-web-core';
-import { useEffect } from 'react';
-
-export default function App() {
- const [meeting, initMeeting] = useDyteClient();
-
- useEffect(() => {
- initMeeting({
- authToken: '',
- defaults: {
- audio: false,
- video: false,
- },
- });
- }, []);
-
- return (
-
- {/* Render your UI here. Subcomponents can now use the `useDyteMeeting` and `useDyteSelector` hooks */}
-
- );
-}
-```
-
-You can now use the `useDyteMeeting` and `useDyteSelector` hooks as required.
-
-
-
-
-## Step 3: Connect to the meeting
-
-Now, you have established the connection with the Dyte meeting server
-successfully, You may use the `meeting` object to set the users display name or apply
-a [video background middleware](https://www.npmjs.com/package/@dytesdk/video-background-transformer).
-
-Next step is to join the room.
-
-### Join the room
-
-To join the meeting room, call join() method on the DyteClient instance as
-shown below.
-
-```js
-await meeting.join();
-```
-
-:::info
-
-Once the join room process completes `roomJoined` event is emitted on the `meeting.self`
-namespace.
-
-If you want to perform any actions, such as enabling audio, video, or starting
-and stopping recording, you can do so after the `roomJoined` event is fired.
-
-For example:
-
-
-
-
-```js
-meeting.self.on('roomJoined', () => {
- console.log('User has joined the room', meeting.self.roomJoined);
- // run my actions.
-});
-```
-
-
-
-
-```js
-...
-const roomJoinedListener = () => {
- console.log('User has joined the room', meeting.self.roomJoined);
- // run my actions.
-}
-
-useEffect(() => {
- meeting.self.on('roomJoined', roomJoinedListener);
-
- return () => {
- meeting.self.off('roomJoined', roomJoinedListener);
- };
-}, [meeting]);
-...
-```
-
-
-
-
-:::
-
-### Leave the room
-
-Once the meeting is over, you can leave the meeting room.
-
-To leave the meeting room, call `leave()` method on the dyteClient as shown
-below.
-
-```js
-await meeting.leave();
-```
-
-:::info
-
-Once the leave room process completes `roomLeft` event is emitted on `meeting.self`,
-`roomLeft` may also be called in case the user is kicked out of the room or disconnects
-
-For example:
-
-
-
-
-```js
-meeting.self.on('roomLeft', () => {
- console.log('User has left the room', meeting.self.roomJoined);
- // run my actions.
-});
-```
-
-
-
-
-```js
-...
-const roomLeftListener = () => {
- console.log('User has left the room', meeting.self.roomJoined);
- // run my actions.
-}
-
-useEffect(() => {
- meeting.self.on('roomLeft', roomLeftListener);
-
- return () => {
- meeting.self.off('roomLeft', roomLeftListener);
- };
-}, [meeting]);
-...
-```
-
-
-
-:::
-
-
- Web Core Quickstart
-
diff --git a/docs/web-core/recording.mdx b/docs/web-core/recording.mdx
deleted file mode 100644
index 7ab543ebc9..0000000000
--- a/docs/web-core/recording.mdx
+++ /dev/null
@@ -1,188 +0,0 @@
----
-title: Recording
-description: Control recordings in a meeting.
-sidebar_position: 9
-tags:
- - web-core
- - recording
----
-
-# Recording
-
-The `meeting.recording` object can be used start and stop recordings in a
-meeting. You can also get the current status of a recording using this API.
-
-The `meeting.recording` object has the following properties:
-
-## List recordings
-
-Retrieve a list of active recordings along with their current status.
-
-
-
-
-```ts
-const recordings = meeting.recording.recordings;
-```
-
-
-
-
-```ts
-const recordings = useDyteSelector((m) => m.recording.recordings);
-```
-
-
-
-
-it returns list of recording ids and their state
-
-```ts
-[
- {
- id: '',
- state: '',
- },
-];
-```
-
-The recording states include `IDLE`, `STARTING`, `RECORDING`, `PAUSED`, and `STOPPING`.
-
-## Start a recording
-
-Initiate a recording using the start method.
-
-```ts
-await meeting.recording.start();
-```
-
-To enable multiple parallel recordings, the first recording must be started with the option `{ allowMultiple: true }`.
-
-```ts
-await meeting.recording.start({ allowMultiple: true });
-```
-
-Subsequent recordings can then be initiated while the first is still running.
-
-## Stop a recording
-
-End an active recording with the stop method.
-
-```ts
-await meeting.recording.stop();
-```
-
-To stop a specific recording, provide the recording ID:
-
-```ts
-await meeting.recording.stop(recordingId);
-```
-
-Omitting the recording ID will stop all recordings in `RECORDING` or `PAUSED` state.
-
-## Pause a recording
-
-Temporarily halt a recording using the pause method.
-
-```ts
-await meeting.recording.pause();
-```
-
-To pause a specific recording, include the recording ID:
-
-```ts
-await meeting.recording.pause(recordingId);
-```
-
-Without a recording ID, all recordings in the `RECORDING` state will be paused.
-
-## Resume a recording
-
-Restart a paused recording with the resume method.
-
-```ts
-await meeting.recording.resume();
-```
-
-For resuming a specific recording, pass the recording ID:
-
-```ts
-await meeting.recording.resume(recordingId);
-```
-
-If no recording ID is specified, all recordings in the `PAUSED` state will be resumed.
-
-## Recording Configuration
-
-You can set the defaults for recording during initialization
-
-
-
-```js
-const meeting = await DyteClient.init({
- authToken,
- defaults: {
- recording: recordingConfig,
- },
-});
-```
-
-
-```js
-useEffect(() => {
- initMeeting({
- authToken,
- defaults: {
- recording: recordingConfig,
- },
- });
-}, []);
-```
-
-
-
-In recording config you can specify height, width and codec of the recording output. You can also customize the recording file name prefix.
-
-```ts
-interface RecordingConfig {
- videoConfig?: {
- height?: number;
- width?: number;
- codec?: 'H264' | 'VP8';
- };
- fileNamePrefix?: string;
-}
-```
-
-#### videoConfig
-
-1. **codec** - Codec using which the recording will be encoded. `H264` will use a `mp4` container, `VP8` will use a `webm` container
-
- Allowed values: `H264` | `VP8`
-
- Default: `H264`
-
-2. **width** - Width of the recording video in pixels
- Allowed values: 1 \>= width \<= 1920
-
- Default: `1280`
-
-3. **height** - Height of the recording video in pixels
- Allowed values: 1 \>= height \<= 1920
-
- Default: `720`
-
-#### fileNamePrefix
-
-You can customize the file name generated by Dyte recorder. All recordings for the meeting will start with the prefix provided here.
-It is equivalent of `file_name_prefix` in our [start recording API](https://docs.dyte.io/api#/)
-
-## Check active recording state
-
-The `meeting.recording.recordingState` property describes the current state of
-the recording. The valid states are `IDLE`, `STARTING`, `RECORDING`, `PAUSED` and
-`STOPPING`.
-
-
- Web Core Recording
-
diff --git a/docs/web-core/reference/DyteAi.md b/docs/web-core/reference/DyteAi.md
deleted file mode 100644
index 70b471e3fe..0000000000
--- a/docs/web-core/reference/DyteAi.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-sidebar_position: 17
-web_core_version: 2.4.1
----
-
-
-
-
-
-This module consists of the `ai` object which is used to interface with Dyte's AI features.
-You can obtain the live meeting transcript and use other meeting AI
-features such as summary, and agenda using this object.
-
-- [DyteAi](#module_DyteAi)
- - [.parseTranscript()](#module_DyteAi.parseTranscript)
- - [.parseTranscripts()](#module_DyteAi.parseTranscripts)
-
-
-
-### meeting.ai.parseTranscript()
-
-Parse a single line transcript
-
-**Kind**: static method of [DyteAi](#module_DyteAi)
-
-
-### meeting.ai.parseTranscripts()
-
-Parse a multi-line transcript
-
-**Kind**: static method of [DyteAi](#module_DyteAi)
diff --git a/docs/web-core/reference/DyteChat.md b/docs/web-core/reference/DyteChat.md
deleted file mode 100644
index 8583ab1197..0000000000
--- a/docs/web-core/reference/DyteChat.md
+++ /dev/null
@@ -1,224 +0,0 @@
----
-sidebar_position: 8
-web_core_version: 2.4.1
----
-
-
-
-
-
-This is the chat module, which can be used to send and receive messages from the meeting.
-
-- [DyteChat](#module_DyteChat)
- - [.messages](#module_DyteChat+messages)
- - [.channels](#module_DyteChat+channels)
- - [.socketJoined](#module_DyteChat+socketJoined)
- - [.pinned](#module_DyteChat+pinned)
- - [.setMaxTextLimit()](#module_DyteChat+setMaxTextLimit)
- - [.sendTextMessage(message)](#module_DyteChat+sendTextMessage)
- - [.sendImageMessage(image)](#module_DyteChat+sendImageMessage)
- - [.sendFileMessage(file)](#module_DyteChat+sendFileMessage)
- - [.sendMessage(message, participantIds)](#module_DyteChat+sendMessage)
- - [.getMessagesByUser(userId)](#module_DyteChat+getMessagesByUser)
- - [.getMessagesByType(type)](#module_DyteChat+getMessagesByType)
- - [.pin(id)](#module_DyteChat+pin)
- - [.unpin(id)](#module_DyteChat+unpin)
- - [.getMessages()](#module_DyteChat+getMessages)
- - [.createChannel()](#module_DyteChat+createChannel)
- - [.updateChannel()](#module_DyteChat+updateChannel)
- - [.sendMessageToChannel(message, channelId)](#module_DyteChat+sendMessageToChannel)
- - [.getChannelMembers()](#module_DyteChat+getChannelMembers)
- - [.searchMessages()](#module_DyteChat+searchMessages)
- - [.markLastReadMessage()](#module_DyteChat+markLastReadMessage)
-
-
-
-### meeting.chat.messages
-
-An array of chat messages.
-
-**Kind**: instance property of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.channels
-
-An Array of all available channels.
-
-**Kind**: instance property of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.socketJoined
-
-Returns true if the local participant has joined the meeting.
-
-**Kind**: instance property of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.pinned
-
-Returns an array of pinned messages.
-
-**Kind**: instance property of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.setMaxTextLimit()
-
-Set the max character limit of a text message
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.sendTextMessage(message)
-
-Sends a chat text message to the room.
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| ------- | ------------------------------------------ |
-| message | The message that must be sent to the room. |
-
-
-
-### meeting.chat.sendImageMessage(image)
-
-Sends an image message to the meeting.
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| ----- | ----------------------------- |
-| image | The image that is to be sent. |
-
-
-
-### meeting.chat.sendFileMessage(file)
-
-Sends a file to the meeting.
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| ----- | -------------- |
-| file | A File object. |
-
-
-
-### meeting.chat.sendMessage(message, participantIds)
-
-Sends a message to the meeting. This method can be used to send text, image,
-or file messages. The message type is determined by the key 'type' in `message`
-object.
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| -------------- | -------------------------------------------------------- |
-| message | An object including the type and content of the message. |
-| participantIds | An array including the userIds of the participants. |
-
-
-
-### meeting.chat.getMessagesByUser(userId)
-
-Returns an array of messages sent by a specific userId.
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| ------ | ---------------------------------------------- |
-| userId | The user id of the user that sent the message. |
-
-
-
-### meeting.chat.getMessagesByType(type)
-
-Returns an array of 'text', 'image' or 'file' messages.
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| ----- | --------------------------- |
-| type | 'text', 'image', or 'file'. |
-
-
-
-### meeting.chat.pin(id)
-
-Pins a chat message
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| ----- | ------------------------------ |
-| id | ID of the message to be pinned |
-
-
-
-### meeting.chat.unpin(id)
-
-Unpins a chat message
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| ----- | -------------------------------- |
-| id | ID of the message to be unpinned |
-
-
-
-### meeting.chat.getMessages()
-
-Gets chat messages in a paginated manner
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.createChannel()
-
-Creates a channel with specified name and userIds as members
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.updateChannel()
-
-Updates the channel
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.sendMessageToChannel(message, channelId)
-
-Sends a message to a channel. This method can be used to send text, image,
-or file messages. The message type is determined by the key 'type' in `message`
-object.
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-| Param | Description |
-| --------- | -------------------------------------------------------- |
-| message | An object including the type and content of the message. |
-| channelId | Id of the channel where you want to send the message. |
-
-
-
-### meeting.chat.getChannelMembers()
-
-returns a list of members added to the channel
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.searchMessages()
-
-search messages
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
-
-
-### meeting.chat.markLastReadMessage()
-
-marks last read message in a channel
-
-**Kind**: instance method of [DyteChat](#module_DyteChat)
diff --git a/docs/web-core/reference/DyteClient.md b/docs/web-core/reference/DyteClient.md
deleted file mode 100644
index 12feb038d6..0000000000
--- a/docs/web-core/reference/DyteClient.md
+++ /dev/null
@@ -1,155 +0,0 @@
----
-sidebar_position: 1
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DyteClient class is the main class of the web core library.
-An object of the DyteClient class can be created using
-`await DyteClient.init({ ... })`. Typically, an object of `DyteClient` is
-named `meeting`.
-
-- [DyteClient](#module_DyteClient)
- - _instance_
- - [.participants](#module_DyteClient+participants)
- - [.self](#module_DyteClient+self)
- - [.meta](#module_DyteClient+meta)
- - [.ai](#module_DyteClient+ai)
- - [.plugins](#module_DyteClient+plugins)
- - [.chat](#module_DyteClient+chat)
- - [.polls](#module_DyteClient+polls)
- - [.connectedMeetings](#module_DyteClient+connectedMeetings)
- - [.**internals**](#module_DyteClient+__internals__)
- - [.join()](#module_DyteClient+join)
- - [.leave()](#module_DyteClient+leave)
- - ~~[.joinRoom()](#module_DyteClient+joinRoom)~~
- - ~~[.leaveRoom()](#module_DyteClient+leaveRoom)~~
- - _static_
- - [.init(options)](#module_DyteClient.init)
-
-
-
-### meeting.participants
-
-The `participants` object consists of 4 maps of participants,
-`waitlisted`, `joined`, `active`, `pinned`. The maps are indexed by
-`peerId`s, and the values are the corresponding participant objects.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.self
-
-The `self` object can be used to manipulate audio and video settings,
-and other configurations for the local participant. This exposes methods
-to enable and disable media tracks, share the user's screen, etc.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.meta
-
-The `room` object stores information about the current meeting, such
-as chat messages, polls, room name, etc.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.ai
-
-The `ai` object is used to interface with Dyte's AI features.
-You can obtain the live meeting transcript and use other meeting AI
-features such as summary, and agenda using this object.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.plugins
-
-The `plugins` object stores information about the plugins available in
-the current meeting. It exposes methods to activate and deactivate them.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.chat
-
-The chat object stores the chat messages that were sent in the meeting.
-This includes text messages, images, and files.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.polls
-
-The polls object stores the polls that were initiated in the meeting.
-It exposes methods to create and vote on polls.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.connectedMeetings
-
-The connectedMeetings object stores the connected meetings states.
-It exposes methods to create/read/update/delete methods for connected meetings.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.\_\_internals\_\_
-
-The **internals** object exposes the internal tools & utilities such as features and logger
-so that client can utilise the same to build their own feature based UI.
-DyteLogger (**internals**.logger) can be used to send logs to Dyte's servers
-to inform Dyte of issues, if any, proactively.
-
-**Kind**: instance property of [DyteClient](#module_DyteClient)
-
-
-### meeting.join()
-
-The `join()` method can be used to join the meeting.
-A `roomJoined` event is emitted on `self` when the room
-is joined successfully.
-
-**Kind**: instance method of [DyteClient](#module_DyteClient)
-
-
-### meeting.leave()
-
-The `leave()` method can be used to leave a meeting.
-
-**Kind**: instance method of [DyteClient](#module_DyteClient)
-
-
-### ~~meeting.joinRoom()~~
-
-**_Deprecated_**
-
-**Kind**: instance method of [DyteClient](#module_DyteClient)
-
-
-### ~~meeting.leaveRoom()~~
-
-**_Deprecated_**
-
-**Kind**: instance method of [DyteClient](#module_DyteClient)
-
-
-### meeting.init(options)
-
-The `init` method can be used to instantiate the DyteClient class.
-This returns an instance of DyteClient, which can be used to perform
-actions on the meeting.
-
-**Kind**: static method of [DyteClient](#module_DyteClient)
-
-| Param | Description |
-| ----------------- | ----------------------------------------------- |
-| options | The options object. |
-| options.authToken | The authorization token received using the API. |
-| options.baseURI | The base URL of the API. |
-| options.defaults | The default audio and video settings. |
diff --git a/docs/web-core/reference/DyteConnectedMeetings.md b/docs/web-core/reference/DyteConnectedMeetings.md
deleted file mode 100644
index 66e835c2cd..0000000000
--- a/docs/web-core/reference/DyteConnectedMeetings.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-sidebar_position: 18
-web_core_version: 2.4.1
----
-
-
-
-
-
-This consists of the methods to faciliate connected meetings
-
-- [DyteConnectedMeetings](#module_DyteConnectedMeetings)
- - [.getConnectedMeetings()](#module_DyteConnectedMeetings+getConnectedMeetings)
- - [.createMeetings()](#module_DyteConnectedMeetings+createMeetings)
- - [.updateMeetings()](#module_DyteConnectedMeetings+updateMeetings)
- - [.deleteMeetings()](#module_DyteConnectedMeetings+deleteMeetings)
- - [.moveParticipants(sourceMeetingId, destinationMeetingId, participantIds)](#module_DyteConnectedMeetings+moveParticipants)
- - [.moveParticipantsWithCustomPreset()](#module_DyteConnectedMeetings+moveParticipantsWithCustomPreset)
-
-
-
-### meeting.connectedMeetings.getConnectedMeetings()
-
-get connected meeting state
-
-**Kind**: instance method of [DyteConnectedMeetings](#module_DyteConnectedMeetings)
-
-
-### meeting.connectedMeetings.createMeetings()
-
-create connected meetings
-
-**Kind**: instance method of [DyteConnectedMeetings](#module_DyteConnectedMeetings)
-
-
-### meeting.connectedMeetings.updateMeetings()
-
-update meeting title
-
-**Kind**: instance method of [DyteConnectedMeetings](#module_DyteConnectedMeetings)
-
-
-### meeting.connectedMeetings.deleteMeetings()
-
-delete connected meetings
-
-**Kind**: instance method of [DyteConnectedMeetings](#module_DyteConnectedMeetings)
-
-
-### meeting.connectedMeetings.moveParticipants(sourceMeetingId, destinationMeetingId, participantIds)
-
-Trigger event to move participants
-
-**Kind**: instance method of [DyteConnectedMeetings](#module_DyteConnectedMeetings)
-
-| Param | Type | Description |
-| -------------------- | --------------------------------- | ------------------------------ |
-| sourceMeetingId | string | id of source meeting |
-| destinationMeetingId | string | id of destination meeting |
-| participantIds | Array.<string> | list of id of the participants |
-
-
-
-### meeting.connectedMeetings.moveParticipantsWithCustomPreset()
-
-Trigger event to move participants with custom preset
-
-**Kind**: instance method of [DyteConnectedMeetings](#module_DyteConnectedMeetings)
diff --git a/docs/web-core/reference/DyteLivestream.md b/docs/web-core/reference/DyteLivestream.md
deleted file mode 100644
index c7c603123e..0000000000
--- a/docs/web-core/reference/DyteLivestream.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-sidebar_position: 12
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DyteLivestream module represents the state of the current livestream, and allows
-to start/stop live streams.
-
-- [DyteLivestream](#module_DyteLivestream)
- - [.start()](#module_DyteLivestream+start)
- - [.stop()](#module_DyteLivestream+stop)
-
-
-
-### meeting.livestream.start()
-
-Starts livestreaming the meeting.
-
-**Kind**: instance method of [DyteLivestream](#module_DyteLivestream)
-
-
-### meeting.livestream.stop()
-
-Stops livestreaming the meeting.
-
-**Kind**: instance method of [DyteLivestream](#module_DyteLivestream)
diff --git a/docs/web-core/reference/DyteMeta.md b/docs/web-core/reference/DyteMeta.md
deleted file mode 100644
index db173fc48a..0000000000
--- a/docs/web-core/reference/DyteMeta.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-sidebar_position: 7
-web_core_version: 2.4.1
----
-
-
-
-
-
-This consists of the metadata of the meeting, such as the room name and the title.
-
-- [DyteMeta](#module_DyteMeta)
- - [.selfActiveTab](#module_DyteMeta+selfActiveTab)
- - [.broadcastTabChanges](#module_DyteMeta+broadcastTabChanges)
- - [.viewType](#module_DyteMeta+viewType)
- - [.meetingStartedTimestamp](#module_DyteMeta+meetingStartedTimestamp)
- - [.meetingTitle](#module_DyteMeta+meetingTitle)
- - [.sessionId](#module_DyteMeta+sessionId)
- - [.meetingId](#module_DyteMeta+meetingId)
- - [.setBroadcastTabChanges(broadcastTabChanges)](#module_DyteMeta+setBroadcastTabChanges)
- - [.setSelfActiveTab(spotlightTab)](#module_DyteMeta+setSelfActiveTab)
-
-
-
-### meeting.meta.selfActiveTab
-
-Represents the current active tab
-
-**Kind**: instance property of [DyteMeta](#module_DyteMeta)
-
-
-### meeting.meta.broadcastTabChanges
-
-Represents whether current user is spotlighted
-
-**Kind**: instance property of [DyteMeta](#module_DyteMeta)
-
-
-### meeting.meta.viewType
-
-The `viewType` tells the type of the meeting
-possible values are: GROUP_CALL| LIVESTREAM | CHAT | AUDIO_ROOM
-
-**Kind**: instance property of [DyteMeta](#module_DyteMeta)
-
-
-### meeting.meta.meetingStartedTimestamp
-
-The timestamp of the time when the meeting started.
-
-**Kind**: instance property of [DyteMeta](#module_DyteMeta)
-
-
-### meeting.meta.meetingTitle
-
-The title of the meeting.
-
-**Kind**: instance property of [DyteMeta](#module_DyteMeta)
-
-
-### meeting.meta.sessionId
-
-(Experimental) The sessionId this meeting object is part of.
-
-**Kind**: instance property of [DyteMeta](#module_DyteMeta)
-
-
-### meeting.meta.meetingId
-
-The room name of the meeting.
-
-**Kind**: instance property of [DyteMeta](#module_DyteMeta)
-
-
-### meeting.meta.setBroadcastTabChanges(broadcastTabChanges)
-
-Sets current user as broadcasting tab changes
-
-**Kind**: instance method of [DyteMeta](#module_DyteMeta)
-
-| Param |
-| ------------------- |
-| broadcastTabChanges |
-
-
-
-### meeting.meta.setSelfActiveTab(spotlightTab)
-
-Sets current active tab for user
-
-**Kind**: instance method of [DyteMeta](#module_DyteMeta)
-
-| Param |
-| ------------ |
-| spotlightTab |
diff --git a/docs/web-core/reference/DyteParticipant.md b/docs/web-core/reference/DyteParticipant.md
deleted file mode 100644
index 0fd81c1148..0000000000
--- a/docs/web-core/reference/DyteParticipant.md
+++ /dev/null
@@ -1,232 +0,0 @@
----
-sidebar_position: 5
-web_core_version: 2.4.1
----
-
-
-
-
-
-This module represents a single participant in the meeting.
-The participant object can be accessed from one of the participant lists
-present in the `meeting.participants` object. For example,
-
-```ts
-const participant1 = meeting.participants.active.get(participantId);
-const participant2 = meeting.participants.joined.get(participantId);
-const participant3 = meeting.participants.active.toArray()[0];
-const participant4 = meeting.participants.active
- .toArray()
- .filter((p) => p.name === 'John');
-```
-
-- [DyteParticipant](#module_DyteParticipant)
- - [this.](#exp_module_DyteParticipant--this.) ⏏
- - [.id](#module_DyteParticipant--this.+id)
- - [.userId](#module_DyteParticipant--this.+userId)
- - [.name](#module_DyteParticipant--this.+name)
- - [.picture](#module_DyteParticipant--this.+picture)
- - [.customParticipantId](#module_DyteParticipant--this.+customParticipantId)
- - ~~[.clientSpecificId](#module_DyteParticipant--this.+clientSpecificId)~~
- - [.device](#module_DyteParticipant--this.+device)
- - [.videoTrack](#module_DyteParticipant--this.+videoTrack)
- - [.audioTrack](#module_DyteParticipant--this.+audioTrack)
- - [.screenShareTracks](#module_DyteParticipant--this.+screenShareTracks)
- - [.videoEnabled](#module_DyteParticipant--this.+videoEnabled)
- - [.audioEnabled](#module_DyteParticipant--this.+audioEnabled)
- - [.screenShareEnabled](#module_DyteParticipant--this.+screenShareEnabled)
- - [.producers](#module_DyteParticipant--this.+producers)
- - [.manualProducerConfig](#module_DyteParticipant--this.+manualProducerConfig)
- - [.supportsRemoteControl](#module_DyteParticipant--this.+supportsRemoteControl)
- - [.presetName](#module_DyteParticipant--this.+presetName)
- - [.stageStatus](#module_DyteParticipant--this.+stageStatus)
- - [.mediaJoined](#module_DyteParticipant--this.+mediaJoined)
- - [.socketJoined](#module_DyteParticipant--this.+socketJoined)
- - [.isPinned](#module_DyteParticipant--this.+isPinned)
- - [.pin()](#module_DyteParticipant--this.+pin)
- - [.unpin()](#module_DyteParticipant--this.+unpin)
- - [.setIsPinned()](#module_DyteParticipant--this.+setIsPinned)
- - [.disableAudio()](#module_DyteParticipant--this.+disableAudio)
- - [.kick()](#module_DyteParticipant--this.+kick)
- - [.disableVideo()](#module_DyteParticipant--this.+disableVideo)
- - [.updateVideo()](#module_DyteParticipant--this.+updateVideo)
-
-
-
-### this. ⏏
-
-NOTE(ishita1805): Added a fallback value to support hive group-call
-till stage support is not completed for hive.
-
-**Kind**: Exported member
-
-
-#### participant.id
-
-The peer ID of the participant.
-The participants are indexed by this ID in the participant map.
-
-
-
-#### participant.userId
-
-The user ID of the participant.
-
-
-
-#### participant.name
-
-The name of the participant.
-
-
-
-#### participant.picture
-
-The picture of the participant.
-
-
-
-#### participant.customParticipantId
-
-The custom id of the participant set during Add Participant REST API
-
-
-
-#### ~~participant.clientSpecificId~~
-
-**_Deprecated_**
-
-
-
-#### participant.device
-
-The device configuration of the participant.
-
-
-
-#### participant.videoTrack
-
-The participant's video track.
-
-
-
-#### participant.audioTrack
-
-The participant's audio track.
-
-
-
-#### participant.screenShareTracks
-
-The participant's screenshare video and audio track.
-
-
-
-#### participant.videoEnabled
-
-This is true if the participant's video is enabled.
-
-
-
-#### participant.audioEnabled
-
-This is true if the participant's audio is enabled.
-
-
-
-#### participant.screenShareEnabled
-
-This is true if the participant is screensharing.
-
-
-
-#### participant.producers
-
-producers created by participant
-
-
-
-#### participant.manualProducerConfig
-
-producer config passed during manual subscription
-
-
-
-#### participant.supportsRemoteControl
-
-This is true if the dyte participant supports remote control.
-
-
-
-#### participant.presetName
-
-The preset of the participant.
-
-
-
-#### participant.stageStatus
-
-Denotes the participants's current stage status.
-
-
-
-#### participant.mediaJoined
-
-Returns true if the local participant has joined the meeting.
-
-
-
-#### participant.socketJoined
-
-Returns true if the local participant has joined the meeting.
-
-
-
-#### participant.isPinned
-
-Returns true if the participant is pinned.
-
-
-
-#### participant.pin()
-
-Returns `participant.id` if user has permission
-to pin participants.
-
-
-
-#### participant.unpin()
-
-Returns `participant.id` if user has permission
-to unpin participants.
-
-
-
-#### participant.setIsPinned()
-
-
-
-#### participant.disableAudio()
-
-Disables audio for this participant.
-Requires the permission to disable participant audio.
-
-
-
-#### participant.kick()
-
-Kicks this participant from the meeting.
-Requires the permission to kick a participant.
-
-
-
-#### participant.disableVideo()
-
-Disables video for this participant.
-Requires the permission to disable video for a participant.
-
-
-
-#### participant.updateVideo()
-
-Internal method, do not use
diff --git a/docs/web-core/reference/DyteParticipantMap.md b/docs/web-core/reference/DyteParticipantMap.md
deleted file mode 100644
index 675cd9b76b..0000000000
--- a/docs/web-core/reference/DyteParticipantMap.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-sidebar_position: 4
-web_core_version: 2.4.1
----
-
-
-
-
-
-This is a map of participants, indexed by `participant.id` (a participant's peer ID).
-This map emits an event whenever a participant present in the map emits an event.
-For example, when a participant is added to this map, a `participantJoined` event is
-emitted from the map. When a participant object emits an event `videoUpdate`, the map
-re-emits that event (provided the participant is present in the map).
diff --git a/docs/web-core/reference/DyteParticipants.md b/docs/web-core/reference/DyteParticipants.md
deleted file mode 100644
index a120e0c646..0000000000
--- a/docs/web-core/reference/DyteParticipants.md
+++ /dev/null
@@ -1,350 +0,0 @@
----
-sidebar_position: 3
-web_core_version: 2.4.1
----
-
-
-
-
-
-This module represents all the participants in the meeting (except the local user).
-It consists of 4 maps:
-
-- `joined`: A map of all participants that have joined the meeting.
-- `waitlisted`: A map of all participants that have been added to the waitlist.
-- `active`: A map of active participants who should be displayed in the meeting grid.
-- `pinned`: A map of pinned participants.
-
-* [DyteParticipants](#module_DyteParticipants)
- - [.waitlisted](#module_DyteParticipants+waitlisted)
- - [.joined](#module_DyteParticipants+joined)
- - ~~[.active](#module_DyteParticipants+active)~~
- - [.videoSubscribed](#module_DyteParticipants+videoSubscribed)
- - [.audioSubscribed](#module_DyteParticipants+audioSubscribed)
- - [.pinned](#module_DyteParticipants+pinned)
- - [.all](#module_DyteParticipants+all)
- - [.pip](#module_DyteParticipants+pip)
- - [.socketJoined](#module_DyteParticipants+socketJoined)
- - [.mediaJoined](#module_DyteParticipants+mediaJoined)
- - [.viewMode](#module_DyteParticipants+viewMode)
- - [.currentPage](#module_DyteParticipants+currentPage)
- - [.lastActiveSpeaker](#module_DyteParticipants+lastActiveSpeaker)
- - [.selectedPeers](#module_DyteParticipants+selectedPeers)
- - [.count](#module_DyteParticipants+count)
- - [.maxActiveParticipantsCount](#module_DyteParticipants+maxActiveParticipantsCount)
- - [.pageCount](#module_DyteParticipants+pageCount)
- - [.setMaxActiveParticipantsCount(limit:)](#module_DyteParticipants+setMaxActiveParticipantsCount)
- - [.acceptWaitingRoomRequest(id)](#module_DyteParticipants+acceptWaitingRoomRequest)
- - [.acceptAllWaitingRoomRequest()](#module_DyteParticipants+acceptAllWaitingRoomRequest)
- - [.rejectWaitingRoomRequest(id)](#module_DyteParticipants+rejectWaitingRoomRequest)
- - [.setViewMode(viewMode)](#module_DyteParticipants+setViewMode)
- - [.setPage(page)](#module_DyteParticipants+setPage)
- - [.disableAllAudio(allowUnmute)](#module_DyteParticipants+disableAllAudio)
- - [.disableAllVideo()](#module_DyteParticipants+disableAllVideo)
- - ~~[.disableAudio(participantId)](#module_DyteParticipants+disableAudio)~~
- - ~~[.disableVideo(participantId)](#module_DyteParticipants+disableVideo)~~
- - ~~[.kick(participantId)](#module_DyteParticipants+kick)~~
- - [.kickAll()](#module_DyteParticipants+kickAll)
- - [.broadcastMessage(target)](#module_DyteParticipants+broadcastMessage)
- - [.getAllJoinedPeers()](#module_DyteParticipants+getAllJoinedPeers)
- - [.getParticipantsInMeetingPreJoin()](#module_DyteParticipants+getParticipantsInMeetingPreJoin)
-
-
-
-### meeting.participants.waitlisted
-
-Returns a list of participants waiting to join the meeting.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.joined
-
-Returns a list of all participants in the meeting.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### ~~meeting.participants.active~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.videoSubscribed
-
-Returns a list of participants whose video streams are currently consumed.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.audioSubscribed
-
-Returns a list of participants whose audio streams are currently consumed.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.pinned
-
-Returns a list of participants who have been pinned.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.all
-
-Returns all added participants irrespective of whether they are currently
-in the meeting or not
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.pip
-
-Return the controls for Picture-in-Picture
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.socketJoined
-
-Returns true if the local participant has joined the meeting.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.mediaJoined
-
-Returns true if the local participant has joined the meeting.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.viewMode
-
-Indicates whether the meeting is in 'ACTIVE_GRID' mode or 'PAGINATED' mode.
-
-In 'ACTIVE_GRID' mode, participants are populated in the participants.active map
-dynamically. The participants present in the map will keep changing when other
-participants unmute their audio or turn on their videos.
-
-In 'PAGINATED' mode, participants are populated in the participants.active map
-just once, and the participants in the map will only change if the page number is
-changed by the user using setPage(page).
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.currentPage
-
-This indicates the current page that has been set by the user in PAGINATED mode.
-If the meeting is in ACTIVE_GRID mode, this value will be 0.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.lastActiveSpeaker
-
-This stores the `participantId` of the last participant who spoke in the meeting.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.selectedPeers
-
-Keeps a list of all participants who have been present in the selected peers list.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.count
-
-Returns the number of participants who are joined in the meeting.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.maxActiveParticipantsCount
-
-Returns the maximum number of participants that can be present in
-the active map.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.pageCount
-
-Returns the number of pages that are available in the meeting in PAGINATED mode.
-If the meeting is in ACTIVE_GRID mode, this value will be 0.
-
-**Kind**: instance property of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.setMaxActiveParticipantsCount(limit:)
-
-Updates the maximum number of participants that are populated in
-the active map.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ------ | ----------------- |
-| limit: | Updated max limit |
-
-
-
-### meeting.participants.acceptWaitingRoomRequest(id)
-
-Accepts requests from waitlisted participants if user
-has appropriate permissions.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ----- | ----------------------------------------------- |
-| id | peerId or userId of the waitlisted participant. |
-
-
-
-### meeting.participants.acceptAllWaitingRoomRequest()
-
-We need a new event for socket service events
-since if we send them all together, sequence of events
-can be unreliable
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.rejectWaitingRoomRequest(id)
-
-Rejects requests from waitlisted participants if user
-has appropriate permissions.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ----- | -------------------------------------------- |
-| id | participantId of the waitlisted participant. |
-
-
-
-### meeting.participants.setViewMode(viewMode)
-
-Sets the view mode of the meeting to either ACTIVE_GRID or PAGINATED.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| -------- | ---------------------------------------------------- |
-| viewMode | The mode in which the active map should be populated |
-
-
-
-### meeting.participants.setPage(page)
-
-Populates the active map with participants present in the page number
-indicated by the parameter `page` in PAGINATED mode.
-Does not do anything in ACTIVE_GRID mode.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ----- | -------------------------- |
-| page | The page number to be set. |
-
-
-
-### meeting.participants.disableAllAudio(allowUnmute)
-
-Disables audio for all participants in the meeting.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ----------- | -------------------------------------------------- |
-| allowUnmute | Allow participants to unmute after they are muted. |
-
-
-
-### meeting.participants.disableAllVideo()
-
-Disables video for all participants in the meeting.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-
-### ~~meeting.participants.disableAudio(participantId)~~
-
-**_Deprecated_**
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ------------- | ------------------------------ |
-| participantId | ID of participant to be muted. |
-
-
-
-### ~~meeting.participants.disableVideo(participantId)~~
-
-**_Deprecated_**
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ------------- | ------------------------------ |
-| participantId | ID of participant to be muted. |
-
-
-
-### ~~meeting.participants.kick(participantId)~~
-
-**_Deprecated_**
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ------------- | ------------------------------- |
-| participantId | ID of participant to be kicked. |
-
-
-
-### meeting.participants.kickAll()
-
-Kicks all participants from the meeting.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.broadcastMessage(target)
-
-Broadcasts the message to participants
-
-If no `target` is specified it is sent to all participants including `self`.
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-| Param | Description |
-| ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
-| target | object containing a list of `participantIds` or object containing `presetName` - every user with that preset will be sent the message |
-
-
-
-### meeting.participants.getAllJoinedPeers()
-
-Returns all peers currently present in the room
-If you are in a group call, use `meeting.participants.joined`
-instead
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
-
-
-### meeting.participants.getParticipantsInMeetingPreJoin()
-
-Returns all peers currently in the room, is a non paginated call
-and should only be used if you are in a non room joined state,
-if in a joined group call, use `meeting.participants.joined`
-
-**Kind**: instance method of [DyteParticipants](#module_DyteParticipants)
diff --git a/docs/web-core/reference/DytePermissionsPreset.md b/docs/web-core/reference/DytePermissionsPreset.md
deleted file mode 100644
index 4b44e22dd6..0000000000
--- a/docs/web-core/reference/DytePermissionsPreset.md
+++ /dev/null
@@ -1,351 +0,0 @@
----
-sidebar_position: 6
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DytePermissionsPreset class represents the meeting permissions for the current participant
-
-- [DytePermissionsPreset](#module_DytePermissionsPreset)
- - _instance_
- - [.stageEnabled](#module_DytePermissionsPreset+stageEnabled)
- - [.stageAccess](#module_DytePermissionsPreset+stageAccess)
- - [.acceptWaitingRequests](#module_DytePermissionsPreset+acceptWaitingRequests)
- - [.requestProduceVideo](#module_DytePermissionsPreset+requestProduceVideo)
- - [.requestProduceAudio](#module_DytePermissionsPreset+requestProduceAudio)
- - [.requestProduceScreenshare](#module_DytePermissionsPreset+requestProduceScreenshare)
- - [.canAllowParticipantAudio](#module_DytePermissionsPreset+canAllowParticipantAudio)
- - [.canAllowParticipantScreensharing](#module_DytePermissionsPreset+canAllowParticipantScreensharing)
- - [.canAllowParticipantVideo](#module_DytePermissionsPreset+canAllowParticipantVideo)
- - [.canDisableParticipantAudio](#module_DytePermissionsPreset+canDisableParticipantAudio)
- - [.canDisableParticipantVideo](#module_DytePermissionsPreset+canDisableParticipantVideo)
- - [.kickParticipant](#module_DytePermissionsPreset+kickParticipant)
- - [.pinParticipant](#module_DytePermissionsPreset+pinParticipant)
- - [.canRecord](#module_DytePermissionsPreset+canRecord)
- - ~~[.waitingRoomType](#module_DytePermissionsPreset+waitingRoomType)~~
- - [.waitingRoomBehaviour](#module_DytePermissionsPreset+waitingRoomBehaviour)
- - [.plugins](#module_DytePermissionsPreset+plugins)
- - [.polls](#module_DytePermissionsPreset+polls)
- - ~~[.produceVideo](#module_DytePermissionsPreset+produceVideo)~~
- - ~~[.requestProduce](#module_DytePermissionsPreset+requestProduce)~~
- - [.canProduceVideo](#module_DytePermissionsPreset+canProduceVideo)
- - ~~[.produceScreenshare](#module_DytePermissionsPreset+produceScreenshare)~~
- - [.canProduceScreenshare](#module_DytePermissionsPreset+canProduceScreenshare)
- - ~~[.produceAudio](#module_DytePermissionsPreset+produceAudio)~~
- - [.canProduceAudio](#module_DytePermissionsPreset+canProduceAudio)
- - [.chatPublic](#module_DytePermissionsPreset+chatPublic)
- - [.chatPrivate](#module_DytePermissionsPreset+chatPrivate)
- - [.hiddenParticipant](#module_DytePermissionsPreset+hiddenParticipant)
- - [.showParticipantList](#module_DytePermissionsPreset+showParticipantList)
- - ~~[.canChangeParticipantRole](#module_DytePermissionsPreset+canChangeParticipantRole)~~
- - [.canChangeParticipantPermissions](#module_DytePermissionsPreset+canChangeParticipantPermissions)
- - ~~[.canChangeTheme](#module_DytePermissionsPreset+canChangeTheme)~~
- - ~~[.canPresent](#module_DytePermissionsPreset+canPresent)~~
- - ~~[.acceptPresentRequests](#module_DytePermissionsPreset+acceptPresentRequests)~~
- - ~~[.maxScreenShareCount](#module_DytePermissionsPreset+maxScreenShareCount)~~
- - [.canLivestream](#module_DytePermissionsPreset+canLivestream)
- - _static_
- - [.fromResponse()](#module_DytePermissionsPreset.fromResponse)
- - [.default()](#module_DytePermissionsPreset.default)
-
-
-
-### meeting.self.permissions.stageEnabled
-
-The `stageEnabled` property returns a boolean value.
-If `true`, stage management is available for the participant.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.stageAccess
-
-The `stageAccess` property dictactes how a user interacts with the stage.
-There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST`;
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.acceptWaitingRequests
-
-The `acceptWaitingRequests` returns boolean value.
-If `true`, participant can accept the request of waiting participant.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.requestProduceVideo
-
-The `requestProduceVideo` returns boolean value.
-If `true`, participant can send request to participants
-about producing video.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.requestProduceAudio
-
-The `requestProduceAudio` returns boolean value.
-If `true`, participant can send request to participants
-about producing audio.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.requestProduceScreenshare
-
-The `requestProduceScreenshare` returns boolean value.
-If `true`, participant can send request to participants
-about sharing screen.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canAllowParticipantAudio
-
-The `canAllowParticipantAudio` returns boolean value.
-If `true`, participant can enable other participants` audio.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canAllowParticipantScreensharing
-
-The `canAllowParticipantScreensharing` returns boolean value.
-If `true`, participant can enable other participants` screen share.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canAllowParticipantVideo
-
-The `canAllowParticipantVideo` returns boolean value.
-If `true`, participant can enable other participants` video.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canDisableParticipantAudio
-
-If `true`, a participant can disable other participants` audio.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canDisableParticipantVideo
-
-If `true`, a participant can disable other participants` video.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.kickParticipant
-
-The `kickParticipant` returns boolean value.
-If `true`, participant can remove other participants from the meeting.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.pinParticipant
-
-The `pinParticipant` returns boolean value.
-If `true`, participant can pin a participant in the meeting.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canRecord
-
-The `canRecord` returns boolean value.
-If `true`, participant can record the meeting.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.waitingRoomType~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.waitingRoomBehaviour
-
-The `waitingRoomType` returns string value.
-type of waiting room behavior
-possible values are `SKIP`, `ON_PRIVILEGED_USER_ENTRY`, `SKIP_ON_ACCEPT`
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.plugins
-
-The `plugins` tells if the participant can act on plugins
-there are 2 permissions with boolean values, `canStart` and `canClose`.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.polls
-
-The `polls` tells if the participant can use polls.
-There are 3 permissions with boolean values, `canCreate`, `canVote`, `canViewResults`
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.produceVideo~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.requestProduce~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canProduceVideo
-
-The `canProduceVideo` shows permissions for enabling video.
-There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST`
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.produceScreenshare~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canProduceScreenshare
-
-The `canProduceScreenshare` shows permissions for sharing screen.
-There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST`
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.produceAudio~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canProduceAudio
-
-The `canProduceAudio` shows permissions for enabling audio.
-There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST`
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.chatPublic
-
-The `chatPublic` shows permissions for public chat
-there are 4 permissions
-`canSend` - if true, the participant can send chat
-`text` - if true, the participant can send text
-`files` - if true, the participant can send files
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.chatPrivate
-
-The `chatPrivate` shows permissions for public chat
-there are 4 permissions
-`canSend` - if true, the participant can send private chat
-`text` - if true, the participant can send text as private chat
-`files` - if true, the participant can send files as private chat
-`canReceive` - (optional) if true, the participant can receive private chat
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.hiddenParticipant
-
-The `hiddenParticipant` returns boolean value.
-If `true`, participant is hidden.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.showParticipantList
-
-The `showParticipantList` returns boolean value.
-If `true`, participant list can be shown to the participant.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.canChangeParticipantRole~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canChangeParticipantPermissions
-
-The `canChangeParticipantPermissions` returns boolean value.
-If `true`, allow changing the participants' permissions.
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.canChangeTheme~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.canPresent~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.acceptPresentRequests~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### ~~meeting.self.permissions.maxScreenShareCount~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.canLivestream
-
-Livestream
-
-**Kind**: instance property of [DytePermissionsPreset](#module_DytePermissionsPreset)
-
-
-### meeting.self.permissions.fromResponse()
-
-**Kind**: static method of [DytePermissionsPreset](#module_DytePermissionsPreset)
-**Deprecated.**: Use init()
-
-
-### meeting.self.permissions.default()
-
-**Kind**: static method of [DytePermissionsPreset](#module_DytePermissionsPreset)
-**Deprecated.**: Use init()
diff --git a/docs/web-core/reference/DytePlugin.md b/docs/web-core/reference/DytePlugin.md
deleted file mode 100644
index 5980eef152..0000000000
--- a/docs/web-core/reference/DytePlugin.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-sidebar_position: 14
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DytePlugin module represents a single plugin in the meeting.
-A plugin can be obtained from one of the plugin arrays in `meeting.plugins`.
-For example,
-
-```ts
-const plugin1 = meeting.plugins.active.get(pluginId);
-const plugin2 = meeting.plugins.all.get(pluginId);
-```
-
-- [DytePlugin](#module_DytePlugin)
- - [.sendIframeEvent(message)](#module_DytePlugin+sendIframeEvent)
- - [.sendData(payload)](#module_DytePlugin+sendData)
- - [.removePluginView(viewId)](#module_DytePlugin+removePluginView)
- - [.addPluginView(iframe, viewId)](#module_DytePlugin+addPluginView)
- - [.activateForSelf()](#module_DytePlugin+activateForSelf)
- - [.deactivateForSelf()](#module_DytePlugin+deactivateForSelf)
- - ~~[.enable()](#module_DytePlugin+enable)~~
- - ~~[.disable()](#module_DytePlugin+disable)~~
- - [.activate()](#module_DytePlugin+activate)
- - [.deactivate()](#module_DytePlugin+deactivate)
-
-
-
-### plugin.sendIframeEvent(message)
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-| Param | Description |
-| ------- | ---------------------------------------- |
-| message | Socket message forwarded to this plugin. |
-
-
-
-### plugin.sendData(payload)
-
-This method is used to send arbitrary data to the plugin.
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-| Param | Description |
-| ----------------- | ---------------------------------------------------------------------- |
-| payload | The payload that you want to send inside the plugin. |
-| payload.eventName | Name of the event. This is used to listen for the event in plugin SDK. |
-| payload.data | Data you wish to emit. It can assume any data type. |
-
-
-
-### plugin.removePluginView(viewId)
-
-This method is used for cleaning up event listeners attached to an iframe. It must
-be used before the iframe is removed from the DOM.
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-| Param | Default | Description |
-| ------ | -------------------- | ------------------------------------------------------------------ |
-| viewId | default | ID of the view corresponding to this iframe. Default is 'default'. |
-
-
-
-### plugin.addPluginView(iframe, viewId)
-
-This method adds the communcation layer between the plugin inside the iframe
-and the core application (meeting object) in the main window.
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-| Param | Default | Description |
-| ------ | -------------------- | ------------------------------------------------------------------ |
-| iframe | | Iframe element to display this plugin. |
-| viewId | default | ID of the view corresponding to this iframe. Default is 'default'. |
-
-
-
-### plugin.activateForSelf()
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-
-### plugin.deactivateForSelf()
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-
-### ~~plugin.enable()~~
-
-**_Deprecated_**
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-
-### ~~plugin.disable()~~
-
-**_Deprecated_**
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-
-### plugin.activate()
-
-Activate this plugin for all participants.
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
-
-
-### plugin.deactivate()
-
-Deactivate this plugin for all participants.
-
-**Kind**: instance method of [DytePlugin](#module_DytePlugin)
diff --git a/docs/web-core/reference/DytePluginMap.md b/docs/web-core/reference/DytePluginMap.md
deleted file mode 100644
index 79e8635f4d..0000000000
--- a/docs/web-core/reference/DytePluginMap.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-sidebar_position: 13
-web_core_version: 2.4.1
----
-
-
-
-
-
-This is a map of plugins, indexed by `plugin.id`.
-This map emits an event whenever a plugin present in the map emits an event.
-For example, when a plugin is added to this map, a `pluginAdded` event is
-emitted from the map. When a plugin object emits an event `stateUpdate`, the map
-re-emits that event (provided the plugin is present in the map).
diff --git a/docs/web-core/reference/DytePlugins.md b/docs/web-core/reference/DytePlugins.md
deleted file mode 100644
index 6957caae31..0000000000
--- a/docs/web-core/reference/DytePlugins.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-sidebar_position: 10
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DytePlugins module consists of all the plugins in the meeting. It has 2 maps:
-
-- `all`: Consists of all the plugins in the meeting.
-- `active`: Consists of the plugins that are currently in use.
-
-* [DytePlugins](#module_DytePlugins)
- - [.all](#module_DytePlugins+all)
- - [.active](#module_DytePlugins+active)
-
-
-
-### meeting.plugins.all
-
-All plugins accessible by the current user.
-
-**Kind**: instance property of [DytePlugins](#module_DytePlugins)
-
-
-### meeting.plugins.active
-
-All plugins that are currently enabled in the room.
-
-**Kind**: instance property of [DytePlugins](#module_DytePlugins)
diff --git a/docs/web-core/reference/DytePolls.md b/docs/web-core/reference/DytePolls.md
deleted file mode 100644
index f64ebda903..0000000000
--- a/docs/web-core/reference/DytePolls.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-sidebar_position: 9
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DytePolls module consists of the polls that have been created in the meeting.
-
-- [DytePolls](#module_DytePolls)
- - [.items](#module_DytePolls+items)
- - [.socketJoined](#module_DytePolls+socketJoined)
- - [.create(question, options, anonymous, hideVotes)](#module_DytePolls+create)
- - [.vote(pollId, index)](#module_DytePolls+vote)
-
-
-
-### meeting.polls.items
-
-An array of poll items.
-
-**Kind**: instance property of [DytePolls](#module_DytePolls)
-
-
-### meeting.polls.socketJoined
-
-Returns true if the local participant has joined the meeting.
-
-**Kind**: instance property of [DytePolls](#module_DytePolls)
-
-
-### meeting.polls.create(question, options, anonymous, hideVotes)
-
-Creates a poll in the meeting.
-
-**Kind**: instance method of [DytePolls](#module_DytePolls)
-
-| Param | Default | Description |
-| --------- | ------------------ | ------------------------------------------ |
-| question | | The question that is to be voted for. |
-| options | | The options of the poll. |
-| anonymous | false | If true, the poll votes are anonymous. |
-| hideVotes | false | If true, the votes on the poll are hidden. |
-
-
-
-### meeting.polls.vote(pollId, index)
-
-Casts a vote on an existing poll.
-
-**Kind**: instance method of [DytePolls](#module_DytePolls)
-
-| Param | Description |
-| ------ | ------------------------------------------ |
-| pollId | The ID of the poll that is to be voted on. |
-| index | The index of the option. |
diff --git a/docs/web-core/reference/DyteRecording.md b/docs/web-core/reference/DyteRecording.md
deleted file mode 100644
index af69ec0755..0000000000
--- a/docs/web-core/reference/DyteRecording.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-sidebar_position: 16
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DyteRecording module represents the state of the current recording, and allows
-to start/stop recordings and check if there's a recording in progress.
-
-- [DyteRecording](#module_DyteRecording)
- - [.start()](#module_DyteRecording+start)
- - [.stop()](#module_DyteRecording+stop)
- - [.pause()](#module_DyteRecording+pause)
- - [.resume()](#module_DyteRecording+resume)
-
-
-
-### meeting.recording.start()
-
-Starts recording the meeting.
-
-**Kind**: instance method of [DyteRecording](#module_DyteRecording)
-
-
-### meeting.recording.stop()
-
-Stops all recording currently in 'RECORDING' state
-
-**Kind**: instance method of [DyteRecording](#module_DyteRecording)
-
-
-### meeting.recording.pause()
-
-Pauses all recording currently in 'RECORDING' state
-
-**Kind**: instance method of [DyteRecording](#module_DyteRecording)
-
-
-### meeting.recording.resume()
-
-Resumes all recording currently in 'PAUSED' state
-
-**Kind**: instance method of [DyteRecording](#module_DyteRecording)
diff --git a/docs/web-core/reference/DyteSelf.md b/docs/web-core/reference/DyteSelf.md
deleted file mode 100644
index a2b95053ed..0000000000
--- a/docs/web-core/reference/DyteSelf.md
+++ /dev/null
@@ -1,235 +0,0 @@
----
-sidebar_position: 2
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DyteSelf module represents the current user, and allows to modify the state
-of the user in the meeting. The audio and video streams of the user can be retrieved from
-this module.
-
-- [DyteSelf](#module_DyteSelf)
- - [.roomState](#module_DyteSelf+roomState)
- - [.permissions](#module_DyteSelf+permissions)
- - [.config](#module_DyteSelf+config)
- - [.roomJoined](#module_DyteSelf+roomJoined)
- - [.isPinned](#module_DyteSelf+isPinned)
- - [.cleanupEvents()](#module_DyteSelf+cleanupEvents)
- - [.setName(name)](#module_DyteSelf+setName)
- - [.setupTracks(options)](#module_DyteSelf+setupTracks)
- - [.enableAudio()](#module_DyteSelf+enableAudio)
- - [.enableVideo()](#module_DyteSelf+enableVideo)
- - [.updateVideoConstraints()](#module_DyteSelf+updateVideoConstraints)
- - [.enableScreenShare()](#module_DyteSelf+enableScreenShare)
- - [.updateScreenshareConstraints()](#module_DyteSelf+updateScreenshareConstraints)
- - [.disableAudio()](#module_DyteSelf+disableAudio)
- - [.disableVideo()](#module_DyteSelf+disableVideo)
- - [.disableScreenShare()](#module_DyteSelf+disableScreenShare)
- - [.getAllDevices()](#module_DyteSelf+getAllDevices)
- - [.setIsPinned()](#module_DyteSelf+setIsPinned)
- - [.pin()](#module_DyteSelf+pin)
- - [.unpin()](#module_DyteSelf+unpin)
- - [.hide()](#module_DyteSelf+hide)
- - [.show()](#module_DyteSelf+show)
- - [.setDevice(device)](#module_DyteSelf+setDevice)
- - [.updateVideo()](#module_DyteSelf+updateVideo)
-
-
-
-### meeting.self.roomState
-
-Returns the current state of room
-init - Inital State
-joined - User is in the meeting
-waitlisted - User is in the waitlist state
-rejected - User's was in the waiting room, but the entry was rejected
-kicked - A priveleged user removed the user from the meeting
-left - User left the meeting
-ended - The meeting was ended
-
-**Kind**: instance property of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.permissions
-
-Returns the current permission given to the user for the meeting.
-
-**Kind**: instance property of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.config
-
-Returns configuration for the meeting.
-
-**Kind**: instance property of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.roomJoined
-
-Returns true if the local participant has joined the meeting.
-
-**Kind**: instance property of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.isPinned
-
-Returns true if the current user is pinned.
-
-**Kind**: instance property of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.cleanupEvents()
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.setName(name)
-
-The name of the user can be set by calling this method.
-This will get reflected to other participants ONLY if
-this method is called before the room is joined.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-| Param | Description |
-| ----- | ----------------- |
-| name | Name of the user. |
-
-
-
-### meeting.self.setupTracks(options)
-
-Sets up the local media tracks.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-| Param | Description |
-| ------------- | ------------------------------------- |
-| options | The audio and video options. |
-| options.video | If true, the video stream is fetched. |
-| options.audio | If true, the audio stream is fetched. |
-
-
-
-### meeting.self.enableAudio()
-
-This method is used to unmute the local participant's audio.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.enableVideo()
-
-This method is used to start streaming the local participant's video
-to the meeting.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.updateVideoConstraints()
-
-This method is used to apply constraints to the current video
-stream.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.enableScreenShare()
-
-This method is used to start sharing the local participant's screen
-to the meeting.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.updateScreenshareConstraints()
-
-This method is used to apply constraints to the current screenshare
-stream.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.disableAudio()
-
-This method is used to mute the local participant's audio.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.disableVideo()
-
-This participant is used to disable the local participant's video.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.disableScreenShare()
-
-This method is used to stop sharing the local participant's screen.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.getAllDevices()
-
-Returns all media devices accessible by the local participant.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.setIsPinned()
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.pin()
-
-Returns `self.id` if user has permission
-to pin participants.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.unpin()
-
-Returns `self.id` if user has permission
-to unpin participants.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.hide()
-
-Hide's user's tile in the UI (locally)
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.show()
-
-Show's user's tile in the UI if hidden (locally)
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-
-### meeting.self.setDevice(device)
-
-Change the current media device that is being used by the local participant.
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
-
-| Param | Description |
-| ------ | ------------------------------------------------------------------------------------------------ |
-| device | The device that is to be used. A device of the same `kind` will be replaced. the primary stream. |
-
-
-
-### meeting.self.updateVideo()
-
-Internal method, do not use
-
-**Kind**: instance method of [DyteSelf](#module_DyteSelf)
diff --git a/docs/web-core/reference/DyteStage.md b/docs/web-core/reference/DyteStage.md
deleted file mode 100644
index 6740cff2dd..0000000000
--- a/docs/web-core/reference/DyteStage.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-sidebar_position: 11
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DyteStage module represents a class to mange the Stage of the meeting
-Stage refers to a virtual area, where participants stream are visible to other participants.
-When a participant is off stage, they are not producing media
-but only consuming media from participants who are on Stage
-
-- [DyteStage](#module_DyteStage)
- - [.getAccessRequests()](#module_DyteStage+getAccessRequests)
- - [.requestAccess()](#module_DyteStage+requestAccess)
- - [.cancelRequestAccess()](#module_DyteStage+cancelRequestAccess)
- - [.grantAccess()](#module_DyteStage+grantAccess)
- - [.denyAccess()](#module_DyteStage+denyAccess)
- - [.join()](#module_DyteStage+join)
- - [.leave()](#module_DyteStage+leave)
- - [.kick()](#module_DyteStage+kick)
-
-
-
-### meeting.stage.getAccessRequests()
-
-Method to fetch all Stage access requests from viewers
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
-
-
-### meeting.stage.requestAccess()
-
-Method to send a request to privileged users to join the stage
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
-
-
-### meeting.stage.cancelRequestAccess()
-
-Method to cancel a previous Stage join request
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
-
-
-### meeting.stage.grantAccess()
-
-Method to grant access to Stage.
-This can be in response to a Stage Join request but it can be called on other users as well
-
-`permissions.acceptStageRequests` privilege required
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
-
-
-### meeting.stage.denyAccess()
-
-Method to deny access to Stage.
-This should be called in response to a Stage Join request
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
-
-
-### meeting.stage.join()
-
-Method to join the stage
-Users either need to have the permission in the preset or must be accepted by a priveleged
-user to call this method
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
-
-
-### meeting.stage.leave()
-
-Method to leave the stage
-Users must either be on the stage already or be accepted to join the stage
-to call this method
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
-
-
-### meeting.stage.kick()
-
-Method to kick a user off the stage
-
-`permissions.acceptStageRequests` privilege required
-
-**Kind**: instance method of [DyteStage](#module_DyteStage)
diff --git a/docs/web-core/reference/DyteThemePreset.md b/docs/web-core/reference/DyteThemePreset.md
deleted file mode 100644
index abf08f99cf..0000000000
--- a/docs/web-core/reference/DyteThemePreset.md
+++ /dev/null
@@ -1,121 +0,0 @@
----
-sidebar_position: 15
-web_core_version: 2.4.1
----
-
-
-
-
-
-The DyteThemePreset class represents the meeting theme for the current participant
-
-- [DyteThemePreset](#module_DyteThemePreset)
- - _instance_
- - ~~[.setupScreen](#module_DyteThemePreset+setupScreen)~~
- - ~~[.waitingRoom](#module_DyteThemePreset+waitingRoom)~~
- - ~~[.controlBar](#module_DyteThemePreset+controlBar)~~
- - ~~[.header](#module_DyteThemePreset+header)~~
- - ~~[.pipMode](#module_DyteThemePreset+pipMode)~~
- - [.viewType](#module_DyteThemePreset+viewType)
- - [.livestreamViewerQualities](#module_DyteThemePreset+livestreamViewerQualities)
- - [.maxVideoStreams](#module_DyteThemePreset+maxVideoStreams)
- - [.maxScreenShareCount](#module_DyteThemePreset+maxScreenShareCount)
- - ~~[.plugins](#module_DyteThemePreset+plugins)~~
- - [.disabledPlugins](#module_DyteThemePreset+disabledPlugins)
- - _static_
- - [.fromResponse()](#module_DyteThemePreset.fromResponse)
- - [.default()](#module_DyteThemePreset.default)
-
-
-
-### ~~dyteThemePreset.setupScreen~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### ~~dyteThemePreset.waitingRoom~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### ~~dyteThemePreset.controlBar~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### ~~dyteThemePreset.header~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### ~~dyteThemePreset.pipMode~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### dyteThemePreset.viewType
-
-The `viewType` tells the type of the meeting
-possible values are: GROUP_CALL| LIVESTREAM | CHAT | AUDIO_ROOM
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### dyteThemePreset.livestreamViewerQualities
-
-The `livestreamViewerQualities` specifies the allowed qualities of a stream,
-that can be viewed by a livestream viewer
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### dyteThemePreset.maxVideoStreams
-
-The `maxVideoStreams` contains the maximum video
-streams for mobile and desktop
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### dyteThemePreset.maxScreenShareCount
-
-The `maxScreenShareCount` contains the maximum
-possible concurrent screen shares
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### ~~dyteThemePreset.plugins~~
-
-**_Deprecated_**
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### dyteThemePreset.disabledPlugins
-
-The `disabledPlugins` property returns id of all disabled plugins
-
-**Kind**: instance property of [DyteThemePreset](#module_DyteThemePreset)
-
-
-### DyteThemePreset.fromResponse()
-
-**Kind**: static method of [DyteThemePreset](#module_DyteThemePreset)
-**Deprecated.**: Use init()
-
-
-### DyteThemePreset.default()
-
-**Kind**: static method of [DyteThemePreset](#module_DyteThemePreset)
-**Deprecated.**: Use init()
diff --git a/docs/web-core/reference/_category_.json b/docs/web-core/reference/_category_.json
deleted file mode 100644
index 335a7ba7e5..0000000000
--- a/docs/web-core/reference/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 100,
- "label": "Reference",
- "collapsible": true,
- "className": "releaseSidebarHeading"
-}
diff --git a/docs/web-core/release-notes.mdx b/docs/web-core/release-notes.mdx
deleted file mode 100644
index c62f3de09e..0000000000
--- a/docs/web-core/release-notes.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-tags:
- - web-core
- - releasenotes
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-:::danger
-
-Dyte SDKs are now in maintenance mode and will not receive any new features or bug fixes. To migrate to Cloudflare RealtimeKit SDKs, see the [migration guide](/guides/realtimekit-migration/sdk-guide?framework=web-components).
-
-:::
-
-The release notes lists all new features, resolved issues, and known issues of Web Core in chronological order.
-
-
-
-
- Web Core Release Notes
-
diff --git a/docs/web-core/room-metadata.mdx b/docs/web-core/room-metadata.mdx
deleted file mode 100644
index 3d3312fac4..0000000000
--- a/docs/web-core/room-metadata.mdx
+++ /dev/null
@@ -1,84 +0,0 @@
----
-title: Meeting Metadata
-description: All metadata pertaining to a meeting.
-sidebar_position: 11
-tags:
- - web-core
- - room-metadata
----
-
-# Meeting Metadata
-
-All metadata pertaining to a meeting is stored in `meeting.meta`. This includes:
-
-- `viewType`: Indicates the type of the meeting, possible values are `WEBINAR`,
- `GROUP_CALL`.
-- `roomType`: Indicates the meeting is a group-call or a webinar.
-- `meetingTitle`: The title of the meeting.
-- `meetingStartedTimestamp`: The timestamp when the meeting started.
-- `mediaState`: Media Connection state
-- `socketState`: Socket Connection state
-
-For example, if you want to get the title of the meeting the current participant
-is connected to, you can do so by doing:
-
-
-
-```ts
-// Destructuring the metadata to get meetingTitle and joined
-const { meetingTitle } = meeting.meta;
-if (meeting.self.roomJoined) {
- console.log(
- `The local user has joined a meeting with title ${meetingTitle}.`,
- );
-}
-```
-
-
-```ts
-const [meetingTitle, roomJoined] = useDyteSelector((m) =>
- [m.meta.meetingTitle, m.self.roomJoined]
-);
-useEffect(() => {
- if (roomJoined) {
- console.log(
- `The local user has joined a meeting with title ${meetingTitle}.`,
- );
- }
-}, [roomJoined, meetingTitle])
-```
-
-
-
-**Events**
-
-The `meta` object also emits events for indicating the change in the connection
-state of the room.
-
-1. **Media Connection**
-
-Updates to Media connection (WebRTC connection used for the transfer of actual media) will be sent on `mediaConnectionUpdate` event with the payload
-
-```ts
-meeting.meta.on('mediaConnectionUpdate', ({ transport, state }) => {
- // transport - 'consuming' | 'producing'
- // state - 'new' | 'connecting' | 'connected' | 'disconnected' | 'reconnecting' | 'failed'
-});
-```
-
-2. **Socket Connection**
-
-Updates to Websocket connection (used for chat, polls and other basic signaling) will be sent on `socketConnectionUpdate` event
-
-```ts
-meeting.meta.on(
- 'socketConnectionUpdate',
- ({ state, reconnectionAttempt, reconnected }) => {
- // state - 'connected' | 'disconnected' | 'reconnecting' | 'failed'
- },
-);
-```
-
-
- Web Core Room Metadata
-
diff --git a/docs/web-core/stage.mdx b/docs/web-core/stage.mdx
deleted file mode 100644
index f0031b330a..0000000000
--- a/docs/web-core/stage.mdx
+++ /dev/null
@@ -1,108 +0,0 @@
----
-title: Stage Management
-sidebar_position: 9
----
-
-_Below documentation relevant for Interactive Livestream(LHLS) and Webinar(WebRTC) use cases_
-
-Instead of a traditional publish-subscribe model, where a user can publish their media and others can choose to subscribe, Dyte comes with an optional managed configuration.
-In this managed configuration, a less privileged can be configured with a default behavior to not publish media and the user can then request for permission to be allowed to publish their media, where then a privileged user can choose to grant or deny access.
-
-Using Dyte's stage management APIs a user can do actions such as leave and join stage, manage stage requests and permissions, kick participants and so on.
-
-## Access the stage APIs
-
-The stage module can be accessed under [`meeting.stage`](/react-web-core/reference/DyteStage) namespace.
-
-## Properties
-
-### Status
-
-`meeting.stage.status` returns the current stage status of the local user
-
-- **ON_STAGE**: This value indicates that the user is currently on the stage and participating in the live stream.
-- **OFF_STAGE**: This value means that the user is viewing the live stream but is not on the stage.
-- **REQUESTED_TO_JOIN_STAGE**: The user has a pending request to join livestream. If the user has made a request to join the stage, this value will be assigned to their status until the host accepts or rejects their request.
-- **ACCEPTED_TO_JOIN_STAGE**: The host has accepted user's request to join livestream. If the host accepts the user's request to join the stage, this value will be assigned to the user's status.
-
-A user with permission to join stage directly can only assume `ON_STAGE` and `ACCEPTED_TO_JOIN_STAGE` status values.
-
-## Host controls
-
-Dyte's stage management APIs allow hosts to receive and manage stage requests as well as leave and join the stage.
-
-### Join stage
-
-This method connects the user to the media room, enabling them to interact with other peers in the meeting.
-
-`await meeting.stage.join();`
-
-### Leave stage
-
-By employing this method, the user will be disconnected from the media room and subsequently unable to communicate with their peers. Additionally, their audio and video will no longer be visible to others in the room.
-
-`await meeting.stage.leave();`
-
-### Grant access
-
-A privileged user can grant access to stage for a set of users with `grantAccess` method.
-
-| **Parameters** | **Type** |
-| -------------- | -------- |
-| userIds | string[] |
-
-`await meeting.stage.grantAccess(userIds);`
-
-### Deny access
-
-A privileged user can deny access to stage for a set of users with `denyAccess` method.
-
-| **Parameters** | **Type** |
-| -------------- | -------- |
-| userIds | string[] |
-
-`await meeting.stage.denyAccess(userIds);`
-
-### Kick users
-
-A privileged user can remove a set of users from stage using the `kick` method
-
-| **Parameters** | **Type** |
-| -------------- | -------- |
-| userIds | string[] |
-
-`await meeting.stage.kick(userIds);`
-
-## Participant controls
-
-Dyte's stage management APIs allow participants to receive and manage stage requests as well as leave and join the stage.
-
-### Request access
-
-This method is used to create a new stage request which can be approved by the host. Each user (viewer or host) must call this method in order to join the stage.
-
-When the host calls this method, their status will be updated to `ACCEPTED_TO_JOIN_STAGE`.
-
-`await meeting.stage.requestAccess();`
-
-### Cancel access request
-
-You can call this method in order to cancel your stage request.
-
-`await meeting.stage.cancelRequestAccess();`
-
-## Events
-
-Here is a list of events that the `meeting.stage` module emits:
-
-| **Event** | **Description** |
-| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `stageAccessRequestUpdate` | Emitted to the users with the permission `acceptPresentRequests` set to true. When a new request is made or a request is cancelled, this event is triggered. It contains the updated list of stage requests in its payload. |
-| `stageStatusUpdate` | Emitted when the user's stage status changes. It contains the updated stage status in the payload. |
-| `newStageRequest` | Emitted to the users with the permission `acceptPresentRequests` set to true. This event is triggered when there are new stage requests. It contains the number of stage requests in its payload. For example, to show notifications. |
-| `stageRequestApproved` | Emitted when a user's request to join stage has been approved. |
-| `stageRequestRejected` | Emitted when a user's request to join stage has been rejected. |
-
-
- Web Core Stage Management
-
diff --git a/docs/web-core/upgrade.mdx b/docs/web-core/upgrade.mdx
deleted file mode 100644
index 2dde076e86..0000000000
--- a/docs/web-core/upgrade.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: 2.x Upgrade Guide
-sidebar_position: 1
----
-
-### Breaking changes
-
-With this major release we tried to reduce the number of breaking changes to the minimal amount.
-
-**1. Removal of V1 REST API terminology in favor of V2 REST API terminology**
-
-- meeting.self.`clientSpecificId` - > meeting.self.`customParticipantId`
-- meeting.meta.`roomName` → meeting.meta.`meetingId`
-- meeting.self.`suggestedTheme` → meeting.self.`config`
-- Dropped meeting.meta.`joined` (Duplicate of meeting.self.`joined`)
-
-**2. Event changes ️🔥 ️🔥 ️🔥**
-
-Network disconnects now trigger roomLeft event on meeting.self with a state indicating the cause of leaving the room. If you have redirection logic on `roomLeft`, please update it accordingly.
-
-```jsx
-meeting.self.on('roomLeft', ({ state }) => {
- if(state === 'ended' || state == "left" || state == "kicked"){
- // maybe redirect to another page
- }
-}
-```
-
-Possible state values are ‘kicked’ | 'ended' | 'left' | 'rejected' | 'connected-meeting' | 'disconnected' | 'failed';
-
-**3. Handling Reconnection / Disconnection**
-
-- `connected` `disconnected` `connectionError` `iceConnected` `iceDisconnected` `iceFailed` `iceReconnecting` `socketConnected` `socketDisconnected` `socketReconnecting` `socketReconnectAttempt` `socketReconnectFailure` `socketReconnected` `socketFailure`
-
- events on meeting.meta are **removed and replaced** with new simplified connection events and properties
-
- - Updates to Media connection (WebRTC connection used for the transfer of actual media) will be sent on `mediaConnectionUpdate` event with the payload
- You can also get the value of this payload by checking the `meeting.meta.mediaState` property
- - Updates to Websocket connection (used for chat, polls and other basic signaling) will be sent on `socketConnectionUpdate` event.
- You can also get the value of this payload by checking the `meeting.meta.socketState` property
-
- Read more on the [meeting metadata page](/web-core/room-metadata)
diff --git a/docsearch.config.json b/docsearch.config.json
deleted file mode 100644
index 09c7d08689..0000000000
--- a/docsearch.config.json
+++ /dev/null
@@ -1,311 +0,0 @@
-{
- "index_name": "docs",
- "sitemap_urls": ["https://docs.dyte.io/sitemap.xml"],
- "start_urls": [
- {
- "url": "https://docs.dyte.io/guides",
- "tags": "guides",
- "selectors_key": "guides"
- },
- {
- "url": "https://docs.dyte.io/cli",
- "tags": "cli",
- "selectors_key": "cli"
- },
- {
- "url": "https://docs.dyte.io/react-ui-kit",
- "tags": "react-ui-kit",
- "selectors_key": "react-ui-kit"
- },
- {
- "url": "https://docs.dyte.io/ui-kit",
- "tags": "ui-kit",
- "selectors_key": "ui-kit"
- },
- {
- "url": "https://docs.dyte.io/angular-ui-kit",
- "tags": "angular-ui-kit",
- "selectors_key": "angular-ui-kit"
- },
- {
- "url": "https://docs.dyte.io/vue-ui-kit",
- "tags": "vue-ui-kit",
- "selectors_key": "vue-ui-kit"
- },
- {
- "url": "https://docs.dyte.io/web-core",
- "tags": "web-core",
- "selectors_key": "web-core"
- },
- {
- "url": "https://docs.dyte.io/react-native",
- "tags": "react-native",
- "selectors_key": "react-native"
- },
- {
- "url": "https://docs.dyte.io/android",
- "tags": "android",
- "selectors_key": "android"
- },
- {
- "url": "https://docs.dyte.io/ios",
- "tags": "ios",
- "selectors_key": "ios"
- },
- {
- "url": "https://docs.dyte.io/ios-core",
- "tags": "ios-core",
- "selectors_key": "ios-core"
- },
- {
- "url": "https://docs.dyte.io/flutter",
- "tags": "flutter",
- "selectors_key": "flutter"
- },
- {
- "url": "https://docs.dyte.io/flutter-core",
- "tags": "flutter-core",
- "selectors_key": "flutter-core"
- },
- {
- "url": "https://docs.dyte.io/rn-core",
- "tags": "rn-core",
- "selectors_key": "rn-core"
- },
- {
- "url": "https://docs.dyte.io/android-core",
- "tags": "android-core",
- "selectors_key": "android-core"
- },
- "https://docs.dyte.io/"
- ],
- "stop_urls": [],
-
- "selectors": {
- "default": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Documentation"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "guides": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Guides"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "cli": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "CLI"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "react-ui-kit": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "React UI Kit"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "ui-kit": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "UI Kit"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "angular-ui-kit": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Angular UI Kit"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "web-core": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Web Core"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "react-native": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "React Native"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "android": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Android"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "ios": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "iOS"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "flutter": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Flutter"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "ios-core": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "iOS Core"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "rn-core": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "JavaScript SDK"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "flutter-core": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Flutter Core"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- },
- "android-core": {
- "lvl0": {
- "selector": "",
- "global": true,
- "default_value": "Android Core"
- },
- "lvl1": "article h1",
- "lvl2": "article h2",
- "lvl3": "article h3",
- "lvl4": "article h4",
- "lvl5": "article h5, article td:first-child",
- "lvl6": "article h6",
- "text": "article p, article li, article td:last-child"
- }
- },
-
- "strip_chars": " .,;:#",
- "custom_settings": {
- "separatorsToIndex": "_",
- "attributesForFaceting": ["language", "version", "type", "docusaurus_tag"],
- "attributesToRetrieve": [
- "hierarchy",
- "content",
- "anchor",
- "url",
- "url_without_anchor",
- "type"
- ]
- },
- "nb_hits": 2227
-}
diff --git a/docusaurus.config.js b/docusaurus.config.js
index cf2e53420a..48efd2bb0f 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -7,10 +7,10 @@ const code_themes = {
/** @type {import('@docusaurus/types').Config} */
const meta = {
- title: 'Dyte Docs',
+ title: 'OSPI Docs',
tagline:
- 'Explore comprehensive documentation for Dyte, including guides, references, and best practices.',
- url: 'https://docs.dyte.io',
+ 'Documentation for OSPI (Open Standard Product Identification) — the open standard and API platform for product identity, master data and cross-organization product data exchange.',
+ url: 'https://docs.ospi-standard.org',
baseUrl: '/',
favicon: '/favicon.ico',
i18n: {
@@ -22,172 +22,23 @@ const meta = {
/** @type {import('@docusaurus/plugin-content-docs').Options[]} */
const docs = [
{
- id: 'cli',
- path: 'docs/cli',
- routeBasePath: '/cli',
+ id: 'api-reference',
+ path: 'docs/api-reference',
+ routeBasePath: '/api-reference',
+ docItemComponent: '@theme/ApiItem',
+ sidebarPath: require.resolve('./sidebars-api-reference.ts'),
},
{
- id: 'plugin-sdk',
- path: 'docs/plugin-sdk',
- routeBasePath: '/plugin-sdk',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
- },
-
- // Community packages
- {
- id: 'community-packages',
- path: 'docs/community-packages',
- routeBasePath: '/community-packages',
- },
-
- // Web UI Kits
- {
- id: 'ui-kit',
- path: 'docs/ui-kit',
- routeBasePath: '/ui-kit',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
- },
- {
- id: 'react-ui-kit',
- path: 'docs/react-ui-kit',
- routeBasePath: '/react-ui-kit',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
- },
- {
- id: 'angular-ui-kit',
- path: 'docs/angular-ui-kit',
- routeBasePath: '/angular-ui-kit',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
- },
-
- // Web Core
- {
- id: 'web-core',
- path: 'docs/web-core',
- routeBasePath: '/web-core',
- versions: {
- current: {
- label: '2.x.x',
- },
- },
- },
- // React Web Core
- {
- id: 'react-web-core',
- path: 'docs/react-web-core',
- routeBasePath: '/react-web-core',
- versions: {
- current: {
- label: '2.x.x',
- },
- },
- },
-
- // Mobile Core
- {
- id: 'android-core',
- path: 'docs/android-core',
- routeBasePath: '/android-core',
- versions: {
- current: {
- label: '2.x.x',
- },
- },
- },
- {
- id: 'flutter-core',
- path: 'docs/flutter-core',
- routeBasePath: '/flutter-core',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
- },
- {
- id: 'ios-core',
- path: 'docs/ios-core',
- routeBasePath: '/ios-core',
- versions: {
- current: {
- label: '2.x.x',
- },
- },
- },
- {
- id: 'rn-core',
- path: 'docs/rn-core',
- routeBasePath: '/rn-core',
- versions: {
- current: {
- label: '0.x.x',
- },
- },
- },
-
- // Mobile UI Kits
- {
- id: 'android',
- path: 'docs/android',
- routeBasePath: '/android',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
- },
- {
- id: 'flutter',
- path: 'docs/flutter',
- routeBasePath: '/flutter',
- versions: {
- current: {
- label: '0.7.x',
- },
- },
- },
- {
- id: 'ios',
- path: 'docs/ios',
- routeBasePath: '/ios',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
- },
- {
- id: 'react-native',
- path: 'docs/rn-ui-kit',
- routeBasePath: '/react-native',
- versions: {
- current: {
- label: '1.x.x',
- },
- },
+ id: 'architecture',
+ path: 'docs/architecture',
+ routeBasePath: '/architecture',
},
];
/** @type {import('@docusaurus/plugin-content-docs').Options} */
const defaultSettings = {
breadcrumbs: true,
- editUrl: 'https://github.com/dyte-io/docs/tree/main/',
+ editUrl: 'https://github.com/BrickeVD/OSPI-APIdocs/tree/main/',
showLastUpdateTime: true,
sidebarCollapsible: true,
remarkPlugins: [
@@ -219,246 +70,53 @@ const { webpackPlugin } = require('./plugins/webpack-plugin.cjs');
const tailwindPlugin = require('./plugins/tailwind-plugin.cjs');
const docs_plugins = docs.map((doc) => create_doc_plugin(doc));
+// Generates the API Reference's /reference/* pages (with a live "Try it out"
+// console) directly from the real OpenAPI spec exported by the ospi-platform
+// backend (`ospi-platform/scripts/generate-openapi.ts` -> openapi/ospi-platform.json).
+// Run `npm run gen-api-docs` after refreshing that spec to regenerate the pages.
+const openapiPlugin = [
+ 'docusaurus-plugin-openapi-docs',
+ /** @type {import('docusaurus-plugin-openapi-docs').Options} */
+ ({
+ id: 'openapi',
+ docsPluginId: 'api-reference',
+ config: {
+ ospi: {
+ specPath: 'openapi/ospi-platform.json',
+ outputDir: 'docs/api-reference/reference',
+ sidebarOptions: {
+ groupPathsBy: 'tag',
+ categoryLinkSource: 'tag',
+ },
+ showSchemas: true,
+ },
+ },
+ }),
+];
+
const plugins = [
tailwindPlugin,
...docs_plugins,
+ openapiPlugin,
webpackPlugin,
- [
- '@docusaurus/plugin-client-redirects',
- {
- createRedirects(path) {
- if (path.startsWith('/guides/capabilities/chat/export-chat-dump')) {
- return ['/capabilities/export-chat-dump'];
- }
-
- if (path.startsWith('/guides/capabilities/misc/embed')) {
- return ['/guides/capabilities/embed'];
- }
-
- if (path.startsWith('/react-ui-kit/basics/integrate')) {
- return ['/react-ui-kit/basics/components-basics'];
- }
-
- if (
- path.startsWith(
- '/guides/capabilities/misc/livestreaming-other-platforms',
- )
- ) {
- return [
- '/guides/capabilities/livestreaming-other-platforms',
- '/guides/capabilities/recording/livestream-recording',
- ];
- }
-
- if (
- path.startsWith('/guides/capabilities/video/add-virtual-background')
- ) {
- return [
- '/guides/capabilities/middleware/add-virtual-background',
- '/guides/capabilities/customization/add-virtual-background',
- ];
- }
-
- if (path.startsWith('/guides/live-video/concepts')) {
- return ['/guides/live-video/concepts-live-video'];
- }
-
- if (path.startsWith('/guides/voice-conf/concepts')) {
- return ['/guides/voice-conf/concepts-voice-conf'];
- }
-
- if (path.startsWith('/guides/livestream/concepts')) {
- return ['/guides/livestream/concepts-ils'];
- }
-
- if (path.startsWith(''))
- if (path.startsWith('/web-core/livestreaming')) {
- return [
- path.replace(
- '/web-core/livestreaming',
- '/web-core/livestreaming/livestream-apis',
- ),
- ];
- }
- if (path.startsWith('/rn-core/livestreaming')) {
- return [
- path.replace(
- '/rn-core/livestreaming',
- '/rn-core/livestreaming/livestream-apis',
- ),
- ];
- }
- if (path.startsWith('/react-web-core/livestreaming')) {
- return [
- path.replace(
- '/react-web-core/livestreaming',
- '/react-web-core/livestreaming/livestream-apis',
- ),
- ];
- }
- if (path.startsWith('/web-core/stage')) {
- return [
- path.replace(
- '/web-core/stage',
- '/web-core/livestreaming/state-management-apis',
- ),
- ];
- }
- if (path.startsWith('/rn-core/stage')) {
- return [
- path.replace(
- '/rn-core/stage',
- '/rn-core/livestreaming/state-management-apis',
- ),
- ];
- }
- if (path.startsWith('/react-web-core/stage')) {
- return [
- path.replace(
- '/react-web-core/stage',
- '/react-web-core/livestreaming/state-management-apis',
- ),
- ];
- }
- if (path.startsWith('/guides/capabilities/webhooks')) {
- return [
- path.replace('/guides/capabilities/webhooks', '/guides/webhooks'),
- path.replace(
- '/guides/capabilities/webhooks',
- '/guides/features/webhooks',
- ),
- ];
- }
- if (path.startsWith('/guides/capabilities/recording')) {
- return [
- path.replace('/guides/capabilities/recording', '/guides/recording'),
- path.replace(
- '/guides/capabilities/recording',
- '/guides/features/recording',
- ),
- ];
- }
- if (path.startsWith('/guides/capabilities/recording')) {
- return [
- path.replace('/guides/capabilities/recording', '/guides/recording'),
- path.replace(
- '/guides/capabilities/recording',
- '/guides/features/recording',
- ),
- ];
- }
- if (path.startsWith('/guides/capabilities/embed')) {
- return [
- path.replace('/guides/capabilities/embed', '/guides/embed'),
- path.replace(
- '/guides/capabilities/embed',
- '/guides/features/embed',
- ),
- ];
- }
- if (path.startsWith('/guides/capabilities/export-chat-dump')) {
- return [
- path.replace(
- '/guides/capabilities/export-chat-dump',
- '/guides/export-chat-dump',
- ),
- path.replace(
- '/guides/capabilities/export-chat-dump',
- '/guides/features/export-chat-dump',
- ),
- ];
- }
- if (path.startsWith('/guides/capabilities/breakoutroom')) {
- return [
- path.replace(
- '/guides/capabilities/breakoutroom',
- '/guides/breakoutroom',
- ),
- path.replace(
- '/guides/capabilities/breakoutroom',
- '/guides/features/breakoutroom',
- ),
- ];
- }
- /* for everything else */
- if (path.startsWith('/guides/capabilities')) {
- return [path.replace('/guides/capabilities', '/guides/features')];
- }
- if (path === '/ui-kit') {
- return [
- '/javascript/advanced-usage',
- '/javascript/customize-meeting-ui',
- '/javascript/events',
- '/javascript/installation',
- '/javascript/quickstart',
- '/javascript/reference/chat-message',
- '/javascript/reference/connection-config',
- '/javascript/reference/dyte-client',
- '/javascript/reference/dyte-control-bar',
- '/javascript/reference/dyte-errors',
- '/javascript/reference/dyte-grid',
- '/javascript/reference/dyte-meeting-events',
- '/javascript/reference/dyte-plugin',
- '/javascript/reference/dyte-ui-config',
- '/javascript/reference/meeting',
- '/javascript/reference/participant',
- '/javascript/reference/self-participant',
- '/javascript/sample-app',
- '/javascript/usage',
- '/javascript/virtual-background',
- '/javascript/',
- ];
- }
- if (path === '/react-ui-kit') {
- return [
- '/react/advanced-usage',
- '/react/customize-meeting-ui',
- '/react/events',
- '/react/installation',
- '/react/quickstart',
- '/react/reference/chat-message',
- '/react/reference/connection-config',
- '/react/reference/dyte-client',
- '/react/reference/dyte-control-bar',
- '/react/reference/dyte-errors',
- '/react/reference/dyte-grid',
- '/react/reference/dyte-meeting-events',
- '/react/reference/dyte-plugin',
- '/react/reference/dyte-ui-config',
- '/react/reference/meeting',
- '/react/reference/participant',
- '/react/reference/self-participant',
- '/react/sample-app',
- '/react/usage',
- '/react/virtual-background',
- '/react/',
- ];
- }
- return undefined; // Return a falsy value: no redirect created
- },
- },
- ],
];
-const fs = require('fs');
-const sdksHTML = fs.readFileSync('./src/snippets/sdks.html', 'utf-8');
-const resourcesHTML = fs.readFileSync('./src/snippets/resources.html', 'utf-8');
-
/** @type {import('@docusaurus/types').Config} */
const config = {
...meta,
plugins,
future: {
- experimental_faster: true,
+ faster: {
+ ssgWorkerThreads: false,
+ },
},
trailingSlash: false,
- themes: ['@docusaurus/theme-live-codeblock', '@docusaurus/theme-mermaid'],
- clientModules: [
- require.resolve('./src/client/define-ui-kit.js'),
- require.resolve('./src/client/set-framework.js'),
+ themes: [
+ '@docusaurus/theme-live-codeblock',
+ '@docusaurus/theme-mermaid',
+ 'docusaurus-theme-openapi-docs',
],
- scripts: [{ src: 'https://cdn.statuspage.io/se-v2.js', async: true }],
markdown: {
mermaid: true,
},
@@ -481,10 +139,7 @@ const config = {
],
},
sitemap: {
- ignorePatterns: ['**/tags/**', '/api/*'],
- },
- googleTagManager: {
- containerId: 'GTM-5FDFFSS',
+ ignorePatterns: ['**/tags/**'],
},
}),
],
@@ -493,7 +148,7 @@ const config = {
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
- image: '/img/dyte-docs-card.png',
+ image: '/img/ospi-docs-card.png',
colorMode: {
defaultMode: 'light',
},
@@ -508,111 +163,66 @@ const config = {
href: '/',
src: '/logo/light.svg',
srcDark: '/logo/dark.svg',
- alt: 'Dyte Documentation | Dyte Docs',
- height: '40px',
- width: '101px',
+ alt: 'OSPI Documentation',
+ height: '32px',
+ width: '120px',
},
items: [
{
label: 'Guides',
- to: 'guides',
- className: 'guides-top-header',
- },
- {
- label: 'SDKs',
- type: 'dropdown',
- className: 'dyte-dropdown',
- items: [
- {
- type: 'html',
- value: sdksHTML,
- className: 'dyte-dropdown',
- },
- ],
- },
- {
- label: 'REST API',
- to: '/api/',
+ to: '/guides',
},
{
- label: 'Resources',
- type: 'dropdown',
- className: 'dyte-dropdown resources-dropdown',
- items: [
- {
- type: 'html',
- value: resourcesHTML,
- className: 'dyte-dropdown',
- },
- ],
+ label: 'API Reference',
+ to: '/api-reference',
},
{
- label: 'Support',
- to: 'https://dyte.io/contact?type=docs',
+ label: 'Architecture',
+ to: '/architecture',
},
-
{
- type: 'search',
+ label: 'GitHub',
+ href: 'https://github.com/BrickeVD/ospi-platform',
position: 'right',
},
- {
- label: 'Book a demo',
- href: 'https://dyte.io/schedule-demo',
- position: 'right',
- className: 'navbar-book-demo',
- },
- {
- label: 'Sign Up',
- href: 'https://dev.dyte.io/register',
- position: 'right',
- className: 'dev-portal-signup dev-portal-link',
- },
],
},
footer: {
+ style: 'dark',
logo: {
href: '/',
- src: '/logo/light.svg',
- srcDark: '/logo/dark.svg',
- alt: 'Dyte Documentation | Dyte Docs',
- height: '36px',
+ src: '/logo/dark.svg',
+ alt: 'OSPI Documentation',
+ height: '32px',
},
links: [
{
- title: 'Product',
+ title: 'Documentation',
items: [
{
- label: 'Demo',
- href: 'https://app.dyte.io',
+ label: 'Guides',
+ to: '/guides',
},
{
- label: 'Developer Portal',
- href: 'https://dev.dyte.io',
+ label: 'API Reference',
+ to: '/api-reference',
},
{
- label: 'Pricing',
- href: 'https://dyte.io/#pricing',
+ label: 'Architecture Decisions',
+ to: '/architecture',
},
],
},
{
- title: 'Company',
+ title: 'Standard',
items: [
{
- label: 'About Us',
- href: 'https://dyte.io',
+ label: 'OSPI Standard',
+ href: 'https://www.ospi-standard.org/',
},
{
- label: 'Join Us',
- href: 'https://dyte.freshteam.com/jobs',
- },
- {
- label: 'Privacy Policy',
- href: 'https://dyte.io/privacy-policy',
- },
- {
- label: 'Contact Us',
- href: 'https://dyte.io/contact',
+ label: 'Platform source (GitHub)',
+ href: 'https://github.com/BrickeVD/ospi-platform',
},
],
},
@@ -620,32 +230,22 @@ const config = {
title: 'Resources',
items: [
{
- label: 'Documentation',
+ label: 'Documentation home',
href: '/',
},
{
- label: 'Blog',
- href: 'https://dyte.io/blog',
+ label: 'Changelog',
+ href: 'https://github.com/BrickeVD/OSPI-APIdocs/blob/main/CHANGELOG.md',
},
],
},
],
- copyright: 'Copyright © Dyte since 2023. All rights reserved.',
+ copyright: `Copyright © ${new Date().getFullYear()} OSPI (Open Standard Product Identification). All rights reserved.`,
},
prism: {
theme: code_themes.light,
darkTheme: code_themes.dark,
- additionalLanguages: [
- 'dart',
- 'ruby',
- 'groovy',
- 'kotlin',
- 'java',
- 'swift',
- 'objectivec',
- 'json',
- 'bash',
- ],
+ additionalLanguages: ['json', 'bash', 'typescript', 'yaml'],
magicComments: [
{
className: 'theme-code-block-highlighted-line',
@@ -658,32 +258,7 @@ const config = {
},
],
},
- algolia: {
- appId: 'HL0HSV62RK',
- apiKey: '72ebf02146698733b7114c7b36da0945',
- indexName: 'docs',
- contextualSearch: true,
- searchParameters: {},
- },
}),
-
- // webpack: {
- // jsLoader: (isServer) => ({
- // loader: require.resolve('swc-loader'),
- // options: {
- // jsc: {
- // parser: {
- // syntax: 'typescript',
- // tsx: true,
- // },
- // target: 'es2017',
- // },
- // module: {
- // type: isServer ? 'commonjs' : 'es6',
- // },
- // },
- // }),
- // },
};
module.exports = config;
diff --git a/modules/dytesdk-react-web-core-1.36.4-stripped.1.tgz b/modules/dytesdk-react-web-core-1.36.4-stripped.1.tgz
deleted file mode 100644
index 59e6585af7..0000000000
Binary files a/modules/dytesdk-react-web-core-1.36.4-stripped.1.tgz and /dev/null differ
diff --git a/modules/dytesdk-web-core-1.31.0-stripped.1.tgz b/modules/dytesdk-web-core-1.31.0-stripped.1.tgz
deleted file mode 100644
index 43efe9aa00..0000000000
Binary files a/modules/dytesdk-web-core-1.31.0-stripped.1.tgz and /dev/null differ
diff --git a/openapi/ospi-platform.json b/openapi/ospi-platform.json
new file mode 100644
index 0000000000..e1db829126
--- /dev/null
+++ b/openapi/ospi-platform.json
@@ -0,0 +1,11230 @@
+{
+ "openapi": "3.0.0",
+ "paths": {
+ "/health": {
+ "get": {
+ "operationId": "HealthController_check",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Always 200 — check the body's `status`/`database` fields, this endpoint never itself errors."
+ }
+ },
+ "tags": [
+ "health"
+ ]
+ }
+ },
+ "/api/v1/auth/register": {
+ "post": {
+ "operationId": "AuthController_register",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RegisterDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ]
+ }
+ },
+ "/api/v1/auth/login": {
+ "post": {
+ "operationId": "AuthController_login",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LoginDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ]
+ }
+ },
+ "/api/v1/auth/refresh": {
+ "post": {
+ "operationId": "AuthController_refresh",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RefreshDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ]
+ }
+ },
+ "/api/v1/auth/logout": {
+ "post": {
+ "operationId": "AuthController_logout",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RefreshDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ]
+ }
+ },
+ "/api/v1/auth/logout-all": {
+ "post": {
+ "operationId": "AuthController_logoutAll",
+ "parameters": [],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/auth/sessions": {
+ "get": {
+ "operationId": "AuthController_listSessions",
+ "parameters": [],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/auth/sessions/{id}": {
+ "delete": {
+ "operationId": "AuthController_revokeSession",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/auth/api-clients": {
+ "post": {
+ "operationId": "AuthController_createApiClient",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateApiClientDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "auth"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/permissions": {
+ "get": {
+ "operationId": "RolesController_listPermissions",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "roles"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/roles": {
+ "post": {
+ "operationId": "RolesController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateRoleDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "roles"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "RolesController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "roles"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/users/{userId}/roles": {
+ "get": {
+ "operationId": "RolesController_listForUser",
+ "parameters": [
+ {
+ "name": "userId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "roles"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "post": {
+ "operationId": "RolesController_assign",
+ "parameters": [
+ {
+ "name": "userId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AssignRoleDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "roles"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/users/{userId}/roles/{roleId}": {
+ "delete": {
+ "operationId": "RolesController_revoke",
+ "parameters": [
+ {
+ "name": "userId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "roleId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "roles"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/organizations/me": {
+ "get": {
+ "operationId": "OrganizationsController_getOwn",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "organizations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/organizations/{id}": {
+ "patch": {
+ "operationId": "OrganizationsController_update",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateOrganizationDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "organizations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/organizations/me/legal-entities": {
+ "get": {
+ "operationId": "OrganizationsController_listLegalEntities",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "organizations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "post": {
+ "operationId": "OrganizationsController_addLegalEntity",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateLegalEntityDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "organizations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/organizations/me/users": {
+ "get": {
+ "operationId": "OrganizationsController_listUsers",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "organizations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "post": {
+ "operationId": "OrganizationsController_inviteUser",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/InviteUserDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "organizations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/organizations/me/roles": {
+ "get": {
+ "operationId": "OrganizationsController_listRoles",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "organizations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/producers": {
+ "post": {
+ "operationId": "IdentityController_createProducer",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateProducerDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "IdentityController_listProducers",
+ "parameters": [],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/producers/{producerId}/codes": {
+ "post": {
+ "operationId": "IdentityController_issueProducerCode",
+ "parameters": [
+ {
+ "name": "producerId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/IssueProducerCodeDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/ospi-identities": {
+ "post": {
+ "operationId": "IdentityController_issueOspiIdentity",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/IssueOspiIdentityDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/ospi-identities/validate": {
+ "post": {
+ "operationId": "IdentityController_validate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ValidateCodeDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ]
+ }
+ },
+ "/api/v1/ospi-identities/{code}": {
+ "get": {
+ "operationId": "IdentityController_lookup",
+ "parameters": [
+ {
+ "name": "code",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/ospi-identities/{id}/retire": {
+ "post": {
+ "operationId": "IdentityController_retire",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/ospi-identities/{id}/suspend": {
+ "post": {
+ "operationId": "IdentityController_suspend",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/ospi-identities/{id}/reactivate": {
+ "post": {
+ "operationId": "IdentityController_reactivate",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "identity"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products": {
+ "post": {
+ "operationId": "ProductsController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateProductDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ProductsController_list",
+ "parameters": [
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "default": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "pageSize",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "maximum": 100,
+ "default": 20,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortBy",
+ "required": false,
+ "in": "query",
+ "description": "Field to sort by",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "sortDir",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/bulk": {
+ "post": {
+ "operationId": "ProductsController_createBulk",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BulkCreateProductDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}": {
+ "get": {
+ "operationId": "ProductsController_findOne",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "locale",
+ "required": true,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "ProductsController_update",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateProductDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/validate": {
+ "post": {
+ "operationId": "ProductsController_validate",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/publish": {
+ "post": {
+ "operationId": "ProductsController_publish",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/unpublish": {
+ "post": {
+ "operationId": "ProductsController_unpublish",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/retire": {
+ "post": {
+ "operationId": "ProductsController_retire",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/recall": {
+ "post": {
+ "operationId": "ProductsController_recall",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/variants": {
+ "post": {
+ "operationId": "ProductsController_addVariant",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateVariantDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ProductsController_listVariants",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/serialized-units": {
+ "post": {
+ "operationId": "ProductsController_registerSerializedUnit",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RegisterSerializedUnitDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ProductsController_listSerializedUnits",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/serialized-units/bulk": {
+ "post": {
+ "operationId": "ProductsController_registerSerializedUnitsBulk",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BulkRegisterSerializedUnitDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/translations/{locale}": {
+ "put": {
+ "operationId": "ProductsController_setTranslation",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "locale",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetProductTranslationDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "delete": {
+ "operationId": "ProductsController_removeTranslation",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "locale",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/translations": {
+ "get": {
+ "operationId": "ProductsController_listTranslations",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/relationships": {
+ "post": {
+ "operationId": "ProductsController_createRelationship",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateProductRelationshipDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ProductsController_listRelationships",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{id}/relationships/{relationshipId}": {
+ "delete": {
+ "operationId": "ProductsController_removeRelationship",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "relationshipId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "products"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/categories": {
+ "post": {
+ "operationId": "CategoriesController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateCategoryDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "categories"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "CategoriesController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "categories"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/categories/pending": {
+ "get": {
+ "operationId": "CategoriesController_listPending",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "categories"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/categories/{id}/approve": {
+ "post": {
+ "operationId": "CategoriesController_approve",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "categories"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/categories/{id}/reject": {
+ "post": {
+ "operationId": "CategoriesController_reject",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RejectCategoryDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "categories"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/attribute-definitions": {
+ "post": {
+ "operationId": "ClassificationController_createAttributeDefinition",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateAttributeDefinitionDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ClassificationController_listAttributeDefinitions",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{productId}/attribute-values": {
+ "post": {
+ "operationId": "ClassificationController_setProductAttributeValue",
+ "parameters": [
+ {
+ "name": "productId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetAttributeValueDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/variants/{variantId}/attribute-values": {
+ "post": {
+ "operationId": "ClassificationController_setVariantAttributeValue",
+ "parameters": [
+ {
+ "name": "variantId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetAttributeValueDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/attribute-values/{id}/verify": {
+ "post": {
+ "operationId": "ClassificationController_verifyAttributeValue",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/classification-schemes": {
+ "post": {
+ "operationId": "ClassificationController_createScheme",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateClassificationSchemeDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ClassificationController_listSchemes",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/classification-schemes/{schemeId}/nodes": {
+ "post": {
+ "operationId": "ClassificationController_addNode",
+ "parameters": [
+ {
+ "name": "schemeId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateClassificationNodeDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ClassificationController_listNodes",
+ "parameters": [
+ {
+ "name": "schemeId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/classification-assignments": {
+ "post": {
+ "operationId": "ClassificationController_assign",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AssignClassificationDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/categories/{categoryId}/attribute-schema": {
+ "post": {
+ "operationId": "ClassificationController_setCategoryAttributeSchema",
+ "parameters": [
+ {
+ "name": "categoryId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetCategoryAttributeSchemaDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/categories/{categoryId}/attribute-schema/{attributeDefinitionId}": {
+ "delete": {
+ "operationId": "ClassificationController_removeCategoryAttributeSchema",
+ "parameters": [
+ {
+ "name": "categoryId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "attributeDefinitionId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/categories/{categoryId}/attributes": {
+ "get": {
+ "operationId": "ClassificationController_getEffectiveAttributeSchema",
+ "parameters": [
+ {
+ "name": "categoryId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "classification"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/documents": {
+ "post": {
+ "operationId": "DocumentsController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateDocumentDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "documents"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "DocumentsController_list",
+ "parameters": [
+ {
+ "name": "productId",
+ "required": true,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "documentType",
+ "required": true,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "documents"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/documents/upload": {
+ "post": {
+ "operationId": "DocumentsController_upload",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UploadDocumentDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "documents"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/documents/{id}": {
+ "get": {
+ "operationId": "DocumentsController_findOne",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "documents"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "DocumentsController_updateMetadata",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateDocumentMetadataDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "documents"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/documents/{id}/download-url": {
+ "get": {
+ "operationId": "DocumentsController_getDownloadUrl",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "documents"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/locations": {
+ "post": {
+ "operationId": "LocationsController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateLocationDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "locations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "LocationsController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "locations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/locations/{id}/inventory": {
+ "get": {
+ "operationId": "LocationsController_listInventory",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "locations"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{productId}/inventory": {
+ "put": {
+ "operationId": "InventoryController_upsert",
+ "parameters": [
+ {
+ "name": "productId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpsertInventoryDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "inventory"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "InventoryController_list",
+ "parameters": [
+ {
+ "name": "productId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "inventory"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/connections": {
+ "post": {
+ "operationId": "ConnectionsController_request",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RequestConnectionDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "connections"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "ConnectionsController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "connections"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/connections/{id}/accept": {
+ "post": {
+ "operationId": "ConnectionsController_accept",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "connections"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/connections/{id}/reject": {
+ "post": {
+ "operationId": "ConnectionsController_reject",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "connections"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/connections/{id}/suspend": {
+ "post": {
+ "operationId": "ConnectionsController_suspend",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "connections"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/connections/{id}/terminate": {
+ "post": {
+ "operationId": "ConnectionsController_terminate",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "connections"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/sharing-grants": {
+ "post": {
+ "operationId": "SharingController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateSharingGrantDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "sharing"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "SharingController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "sharing"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/sharing-grants/{id}": {
+ "delete": {
+ "operationId": "SharingController_revoke",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "sharing"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/partner/organizations/{organizationId}/products": {
+ "get": {
+ "operationId": "PartnerController_listProducts",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "partner"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/partner/organizations/{organizationId}/products/{productId}": {
+ "get": {
+ "operationId": "PartnerController_getProduct",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "productId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "partner"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/partner/organizations/{organizationId}/products/{productId}/inventory": {
+ "get": {
+ "operationId": "PartnerController_getInventory",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "productId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "partner"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/partner/organizations/{organizationId}/products/{productId}/documents": {
+ "get": {
+ "operationId": "PartnerController_listDocuments",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "productId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "partner"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/search/products": {
+ "get": {
+ "operationId": "SearchController_searchProducts",
+ "parameters": [
+ {
+ "name": "page",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "default": 1,
+ "type": "number"
+ }
+ },
+ {
+ "name": "pageSize",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "minimum": 1,
+ "maximum": 100,
+ "default": 20,
+ "type": "number"
+ }
+ },
+ {
+ "name": "sortBy",
+ "required": false,
+ "in": "query",
+ "description": "Field to sort by",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "sortDir",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "default": "asc",
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "q",
+ "required": false,
+ "in": "query",
+ "description": "Free-text search over product name + description",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "categoryId",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "status",
+ "required": false,
+ "in": "query",
+ "schema": {
+ "enum": [
+ "DRAFT",
+ "ACTIVE",
+ "DISCONTINUED",
+ "ARCHIVED"
+ ],
+ "type": "string"
+ }
+ },
+ {
+ "name": "scope",
+ "required": false,
+ "in": "query",
+ "description": "own (default): only the caller's own organization's products. network: also includes products from organizations that granted the caller an active PRODUCT_DATA sharing grant scoped ALL_PRODUCTS or PRODUCT_CATEGORY (ADR-012 follow-up). Individual PRODUCT-targeted grants are NOT included here — see SearchService.searchProducts.",
+ "schema": {
+ "default": "own",
+ "enum": [
+ "own",
+ "network"
+ ],
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "search"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/search/products/{id}/related": {
+ "get": {
+ "operationId": "SearchController_related",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "search"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/search/resolve/{code}": {
+ "get": {
+ "operationId": "SearchController_resolve",
+ "parameters": [
+ {
+ "name": "code",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "search"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/offers": {
+ "post": {
+ "operationId": "OffersController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateOfferDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "offers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "OffersController_listMine",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "offers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/products/{productId}/offers": {
+ "get": {
+ "operationId": "OffersController_listForProduct",
+ "parameters": [
+ {
+ "name": "productId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "offers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/offers/{id}": {
+ "delete": {
+ "operationId": "OffersController_withdraw",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "offers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/offers/{id}/buyer-minimums": {
+ "post": {
+ "operationId": "OffersController_setBuyerMinimum",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetOfferBuyerMinimumDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "offers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "OffersController_listBuyerMinimums",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "offers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/offers/{id}/buyer-minimums/{buyerOrganizationId}": {
+ "delete": {
+ "operationId": "OffersController_removeBuyerMinimum",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "buyerOrganizationId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "offers"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders": {
+ "post": {
+ "operationId": "OrdersController_createDraft",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateDraftOrderDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "OrdersController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders/{id}": {
+ "get": {
+ "operationId": "OrdersController_get",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders/{id}/lines": {
+ "post": {
+ "operationId": "OrdersController_addLine",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AddOrderLineDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders/{id}/lines/{lineId}": {
+ "delete": {
+ "operationId": "OrdersController_removeLine",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "lineId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders/{id}/submit": {
+ "post": {
+ "operationId": "OrdersController_submit",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders/{id}/groups/{groupId}/accept": {
+ "post": {
+ "operationId": "OrdersController_accept",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "groupId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders/{id}/groups/{groupId}/reject": {
+ "post": {
+ "operationId": "OrdersController_reject",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "groupId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/orders/{id}/groups/{groupId}/status": {
+ "put": {
+ "operationId": "OrdersController_updateStatus",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "groupId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateOrderGroupStatusDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "orders"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp-profiles": {
+ "post": {
+ "operationId": "DppController_createProfile",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateDppProfileDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "DppController_listProfiles",
+ "parameters": [],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp-records": {
+ "post": {
+ "operationId": "DppController_createRecord",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateDppRecordDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp-records/{id}/validate": {
+ "post": {
+ "operationId": "DppController_validate",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp-records/{id}/publish": {
+ "post": {
+ "operationId": "DppController_publish",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp-records/{id}/suspend": {
+ "post": {
+ "operationId": "DppController_suspend",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp-records/{id}/rotate-token": {
+ "post": {
+ "operationId": "DppController_rotateToken",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp-records/{id}": {
+ "get": {
+ "operationId": "DppController_getOwner",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/dpp/{accessToken}": {
+ "get": {
+ "operationId": "DppController_getPublic",
+ "parameters": [
+ {
+ "name": "accessToken",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "dpp"
+ ]
+ }
+ },
+ "/api/v1/webhooks": {
+ "post": {
+ "operationId": "WebhooksController_create",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateWebhookSubscriptionDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "webhooks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ },
+ "get": {
+ "operationId": "WebhooksController_list",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "webhooks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/webhooks/{id}": {
+ "delete": {
+ "operationId": "WebhooksController_remove",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "webhooks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/webhooks/{id}/deliveries": {
+ "get": {
+ "operationId": "WebhooksController_deliveries",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "webhooks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ },
+ "/api/v1/webhooks/deliveries/{deliveryId}/retry": {
+ "post": {
+ "operationId": "WebhooksController_retry",
+ "parameters": [
+ {
+ "name": "deliveryId",
+ "required": true,
+ "in": "path",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": ""
+ },
+ "400": {
+ "description": "Validation failed, or the request violates a business rule.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Missing, malformed, or expired credentials.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Authenticated, but missing the required permission (or its resource scope, ADR-023).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The requested resource does not exist, or is not visible to the caller.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "The request conflicts with existing state (e.g. a duplicate unique value).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ "webhooks"
+ ],
+ "security": [
+ {
+ "bearer": []
+ }
+ ]
+ }
+ }
+ },
+ "info": {
+ "title": "OSPI Platform API",
+ "description": "OSPI (Open Standard Product Identification) core platform. MVP scope per Project Constitution §43: Identity, Organizations, Auth, Producer Codes, OSPI Codes, Products, Variants, Categories, Attributes, Classification, Documents, Audit.",
+ "version": "0.1.0",
+ "contact": {}
+ },
+ "tags": [],
+ "servers": [],
+ "components": {
+ "securitySchemes": {
+ "bearer": {
+ "scheme": "bearer",
+ "bearerFormat": "JWT or ospi_ API key",
+ "type": "http"
+ }
+ },
+ "schemas": {
+ "RegisterDto": {
+ "type": "object",
+ "properties": {
+ "organizationName": {
+ "type": "string",
+ "description": "Name of the new organization"
+ },
+ "email": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string",
+ "minLength": 8
+ },
+ "firstName": {
+ "type": "string"
+ },
+ "lastName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "organizationName",
+ "email",
+ "password"
+ ]
+ },
+ "ErrorDetailDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "example": "BAD_REQUEST",
+ "description": "Stable machine-readable error code."
+ },
+ "message": {
+ "type": "string",
+ "example": "Validation failed for one or more fields."
+ },
+ "requestId": {
+ "type": "string",
+ "example": "d142b4dc-2f02-4860-b539-9f4f27f410b8",
+ "description": "Correlates this error with server-side logs."
+ }
+ },
+ "required": [
+ "code",
+ "message",
+ "requestId"
+ ]
+ },
+ "ErrorResponseDto": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "$ref": "#/components/schemas/ErrorDetailDto"
+ }
+ },
+ "required": [
+ "error"
+ ]
+ },
+ "LoginDto": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "email",
+ "password"
+ ]
+ },
+ "RefreshDto": {
+ "type": "object",
+ "properties": {
+ "refreshToken": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "refreshToken"
+ ]
+ },
+ "CreateApiClientDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "scopes": {
+ "type": "array",
+ "example": [
+ "products:write"
+ ],
+ "description": "Real, enforced permission codes — see src/auth/permissions.ts. '*' grants full org-wide access, same as the Owner role.",
+ "items": {
+ "type": "string",
+ "enum": [
+ "producers:write",
+ "products:write",
+ "orders:write",
+ "offers:write",
+ "connections:write",
+ "inventory:write",
+ "org:manage",
+ "dpp:manage",
+ "documents:write",
+ "attributes:write",
+ "classification:manage",
+ "sharing:write",
+ "roles:manage",
+ "webhooks:manage",
+ "categories:govern",
+ "*"
+ ]
+ }
+ }
+ },
+ "required": [
+ "name",
+ "scopes"
+ ]
+ },
+ "CreateRoleDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "array",
+ "description": "Real, enforced permission codes — see src/auth/permissions.ts. Use ['*'] via the default Owner role, not here, for full access.",
+ "items": {
+ "type": "string",
+ "enum": [
+ "producers:write",
+ "products:write",
+ "orders:write",
+ "offers:write",
+ "connections:write",
+ "inventory:write",
+ "org:manage",
+ "dpp:manage",
+ "documents:write",
+ "attributes:write",
+ "classification:manage",
+ "sharing:write",
+ "roles:manage",
+ "webhooks:manage",
+ "categories:govern"
+ ]
+ }
+ },
+ "resourceType": {
+ "type": "string",
+ "enum": [
+ "CATEGORY",
+ "LOCATION"
+ ],
+ "description": "Scopes this role to a single Category or Location (ADR-023) instead of the whole organization. Requires resourceId. Only meaningfully enforced for the one permission each type covers (CATEGORY -> products:write, LOCATION -> inventory:write) — see src/auth/scope.util.ts."
+ },
+ "resourceId": {
+ "type": "string",
+ "description": "The Category or Location id this role is scoped to. Required if resourceType is set."
+ }
+ },
+ "required": [
+ "name",
+ "permissions"
+ ]
+ },
+ "AssignRoleDto": {
+ "type": "object",
+ "properties": {
+ "roleId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "roleId"
+ ]
+ },
+ "UpdateOrganizationDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "PENDING",
+ "ACTIVE",
+ "SUSPENDED",
+ "ARCHIVED",
+ "DELETED"
+ ]
+ }
+ }
+ },
+ "CreateLegalEntityDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "country": {
+ "type": "string",
+ "description": "ISO 3166-1 alpha-2 country code"
+ },
+ "vatNumber": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "country"
+ ]
+ },
+ "InviteUserDto": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ },
+ "firstName": {
+ "type": "string"
+ },
+ "lastName": {
+ "type": "string"
+ },
+ "roleIds": {
+ "description": "Role IDs to assign — at least one is required.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "email",
+ "roleIds"
+ ]
+ },
+ "CreateProducerDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "IssueProducerCodeDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "description": "Desired producer code, A-Z0-9, max 12 characters",
+ "example": "ACME"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ "IssueOspiIdentityDto": {
+ "type": "object",
+ "properties": {
+ "producerCodeId": {
+ "type": "string"
+ },
+ "categoryCode": {
+ "type": "string",
+ "example": "123456"
+ },
+ "companyProductId": {
+ "type": "string",
+ "description": "Producer-supplied product identifier (Deel 4 §14)",
+ "example": "00012345"
+ },
+ "variantCode": {
+ "type": "string",
+ "example": "0001"
+ },
+ "serialBatch": {
+ "type": "string",
+ "example": "00000001"
+ },
+ "version": {
+ "type": "number",
+ "minimum": 1,
+ "maximum": 9,
+ "default": 1
+ },
+ "reserved": {
+ "type": "boolean",
+ "description": "Reserve this identity (ADR-024, Deel 4 §37) instead of registering it outright — useful for ERP sync/bulk imports/manufacturing workflows that need to hold a code before the product is fully created. Attaching it to a Product/Variant later still works directly — it does not need a separate \"un-reserve\" step first — and moves it straight to ACTIVE."
+ },
+ "reservedUntil": {
+ "type": "string",
+ "description": "Only meaningful with reserved: true — when the reservation lapses."
+ }
+ },
+ "required": [
+ "producerCodeId",
+ "categoryCode",
+ "companyProductId"
+ ]
+ },
+ "ValidateCodeDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code"
+ ]
+ },
+ "CreateProductDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "categoryId": {
+ "type": "string"
+ },
+ "gtin": {
+ "type": "string",
+ "description": "GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."
+ },
+ "identity": {
+ "description": "Segments used to mint the OSPI identity for this product (Deel 4). Not required if you already issued an identity via POST /ospi-identities and pass ospiIdentityId instead.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/IssueOspiIdentityDto"
+ }
+ ]
+ },
+ "ospiIdentityId": {
+ "type": "string",
+ "description": "An already-issued, unattached OSPI identity ID"
+ }
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "BulkCreateProductDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CreateProductDto"
+ }
+ }
+ },
+ "required": [
+ "items"
+ ]
+ },
+ "UpdateProductDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "categoryId": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "DRAFT",
+ "ACTIVE",
+ "PUBLISHED",
+ "RECALLED",
+ "DISCONTINUED",
+ "ARCHIVED"
+ ]
+ },
+ "publicationState": {
+ "type": "string",
+ "enum": [
+ "PRIVATE",
+ "PARTNER_ONLY",
+ "PUBLIC",
+ "SCHEDULED"
+ ],
+ "description": "Audience dimension, independent of `status` (ADR-024, Deel 7 §68-69). Not yet wired into any cross-org visibility check — see ADR-024 consequences."
+ },
+ "gtin": {
+ "type": "string",
+ "description": "GTIN-8/12/13/14 (ADR-005) — checksum-validated, not confirmed against GS1's registry."
+ },
+ "expectedVersion": {
+ "type": "number",
+ "description": "Optimistic concurrency (ADR-024, Deel 22 §110-111). Optional — omit for the previous last-write-wins behavior; supply the version you last read to get a real 409 VERSION_CONFLICT if someone else updated the product first."
+ }
+ }
+ },
+ "CreateVariantDto": {
+ "type": "object",
+ "properties": {
+ "sku": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "identity": {
+ "description": "Segments to mint a distinct OSPI identity (own full code) for this variant. Every variant now requires its own identity (product owner decision, ADR-015 amendment, 2026-08-17) — provide either this or ospiIdentityId, exactly one, not neither.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/IssueOspiIdentityDto"
+ }
+ ]
+ },
+ "ospiIdentityId": {
+ "type": "string",
+ "description": "An already-issued, unattached OSPI identity ID for this variant. Provide either this or `identity`, exactly one."
+ }
+ },
+ "required": [
+ "sku"
+ ]
+ },
+ "RegisterSerializedUnitDto": {
+ "type": "object",
+ "properties": {
+ "variantId": {
+ "type": "string",
+ "description": "Optional — registers the unit under a specific variant rather than the base product."
+ },
+ "serialBatch": {
+ "type": "string",
+ "description": "The real per-unit/per-batch value (Deel 4 segment [EEEEEEEE]) — not the \"00000000\" placeholder.",
+ "example": "00000001"
+ }
+ },
+ "required": [
+ "serialBatch"
+ ]
+ },
+ "BulkRegisterSerializedUnitDto": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/RegisterSerializedUnitDto"
+ }
+ }
+ },
+ "required": [
+ "items"
+ ]
+ },
+ "SetProductTranslationDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ }
+ },
+ "CreateProductRelationshipDto": {
+ "type": "object",
+ "properties": {
+ "targetProductId": {
+ "type": "string"
+ },
+ "relationshipType": {
+ "type": "string",
+ "enum": [
+ "REPLACEMENT_FOR",
+ "ACCESSORY_FOR",
+ "COMPATIBLE_WITH",
+ "PART_OF",
+ "CONTAINS",
+ "VARIANT_OF",
+ "SUPERSEDES",
+ "REQUIRES"
+ ]
+ },
+ "visibility": {
+ "type": "string",
+ "enum": [
+ "PRIVATE",
+ "PUBLIC"
+ ],
+ "description": "Default PRIVATE (Deel 7 §42) — an internal/ERP relationship is not automatically public."
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "validFrom": {
+ "type": "string"
+ },
+ "validUntil": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "targetProductId",
+ "relationshipType"
+ ]
+ },
+ "CreateCategoryDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "parentId": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string",
+ "description": "'organization' (default): private to your org, usable immediately, no review. 'global': a PROPOSAL for the shared cross-org registry (ADR-020) — created PENDING, only usable once a `categories:govern` holder approves it via POST /categories/:id/approve.",
+ "enum": [
+ "organization",
+ "global"
+ ]
+ }
+ },
+ "required": [
+ "code",
+ "name"
+ ]
+ },
+ "RejectCategoryDto": {
+ "type": "object",
+ "properties": {
+ "reason": {
+ "type": "string"
+ }
+ }
+ },
+ "CreateAttributeDefinitionDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "dataType": {
+ "type": "string",
+ "enum": [
+ "STRING",
+ "TEXT",
+ "INTEGER",
+ "DECIMAL",
+ "BOOLEAN",
+ "DATE",
+ "DATETIME",
+ "ENUM",
+ "MEASUREMENT",
+ "REFERENCE",
+ "URL",
+ "EMAIL"
+ ]
+ },
+ "enumValues": {
+ "description": "Required when dataType = ENUM",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "unitCode": {
+ "type": "string",
+ "description": "Default unit code, used when dataType = MEASUREMENT"
+ }
+ },
+ "required": [
+ "code",
+ "name",
+ "dataType"
+ ]
+ },
+ "SetAttributeValueDto": {
+ "type": "object",
+ "properties": {
+ "attributeDefinitionId": {
+ "type": "string"
+ },
+ "value": {
+ "type": "object",
+ "description": "Value shape depends on the attribute's dataType"
+ },
+ "source": {
+ "type": "string",
+ "enum": [
+ "MANUFACTURER",
+ "SUPPLIER",
+ "IMPORT",
+ "USER",
+ "API",
+ "CALCULATED",
+ "INFERRED"
+ ]
+ },
+ "sourceOrganizationId": {
+ "type": "string",
+ "description": "Which organization supplied this value (field-level federation, Deel 11 §75). Defaults to the caller's own organization."
+ },
+ "sourceReference": {
+ "type": "string",
+ "description": "A document id/URL/system name to look up more detail — e.g. a certificate or ERP record."
+ },
+ "confidence": {
+ "type": "number",
+ "description": "0..1"
+ },
+ "forceOverride": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "attributeDefinitionId",
+ "value"
+ ]
+ },
+ "CreateClassificationSchemeDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "name"
+ ]
+ },
+ "CreateClassificationNodeDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "parentId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "name"
+ ]
+ },
+ "AssignClassificationDto": {
+ "type": "object",
+ "properties": {
+ "productId": {
+ "type": "string"
+ },
+ "classificationNodeId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "productId",
+ "classificationNodeId"
+ ]
+ },
+ "SetCategoryAttributeSchemaDto": {
+ "type": "object",
+ "properties": {
+ "attributeDefinitionId": {
+ "type": "string"
+ },
+ "requirement": {
+ "type": "string",
+ "enum": [
+ "REQUIRED",
+ "RECOMMENDED",
+ "OPTIONAL",
+ "FORBIDDEN"
+ ]
+ },
+ "conditionOnAttributeDefinitionId": {
+ "type": "string",
+ "description": "Deel 11 §32: this rule only applies when the product's value for this OTHER attribute equals conditionOnValue."
+ },
+ "conditionOnValue": {
+ "type": "object",
+ "description": "Required together with conditionOnAttributeDefinitionId."
+ }
+ },
+ "required": [
+ "attributeDefinitionId",
+ "requirement"
+ ]
+ },
+ "CreateDocumentDto": {
+ "type": "object",
+ "properties": {
+ "documentType": {
+ "type": "string",
+ "enum": [
+ "PRIMARY_IMAGE",
+ "GALLERY_IMAGE",
+ "TECHNICAL_DRAWING",
+ "DATASHEET",
+ "MANUAL",
+ "CERTIFICATE",
+ "DECLARATION",
+ "SAFETY_DOCUMENT",
+ "INSTALLATION_GUIDE",
+ "VIDEO",
+ "OTHER"
+ ],
+ "default": "OTHER"
+ },
+ "validFrom": {
+ "type": "string",
+ "description": "Deel 7 §52 — essential for certificates, meaningful for any document type."
+ },
+ "validUntil": {
+ "type": "string"
+ },
+ "sortOrder": {
+ "type": "number"
+ },
+ "certificateMetadata": {
+ "type": "object",
+ "description": "Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."
+ },
+ "name": {
+ "type": "string"
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "storageRef": {
+ "type": "string",
+ "description": "Opaque reference to the actual file in object storage."
+ },
+ "productId": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "string",
+ "enum": [
+ "PUBLIC",
+ "RESTRICTED",
+ "PRIVATE"
+ ],
+ "default": "PRIVATE"
+ },
+ "checksum": {
+ "type": "string",
+ "description": "SHA-256 hex, if known — this endpoint has no bytes to compute one from itself."
+ }
+ },
+ "required": [
+ "name",
+ "mimeType",
+ "storageRef"
+ ]
+ },
+ "UploadDocumentDto": {
+ "type": "object",
+ "properties": {
+ "documentType": {
+ "type": "string",
+ "enum": [
+ "PRIMARY_IMAGE",
+ "GALLERY_IMAGE",
+ "TECHNICAL_DRAWING",
+ "DATASHEET",
+ "MANUAL",
+ "CERTIFICATE",
+ "DECLARATION",
+ "SAFETY_DOCUMENT",
+ "INSTALLATION_GUIDE",
+ "VIDEO",
+ "OTHER"
+ ],
+ "default": "OTHER"
+ },
+ "validFrom": {
+ "type": "string",
+ "description": "Deel 7 §52 — essential for certificates, meaningful for any document type."
+ },
+ "validUntil": {
+ "type": "string"
+ },
+ "sortOrder": {
+ "type": "number"
+ },
+ "certificateMetadata": {
+ "type": "object",
+ "description": "Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."
+ },
+ "name": {
+ "type": "string"
+ },
+ "filename": {
+ "type": "string",
+ "description": "Original filename — used only to derive a file extension; never used as the on-disk name."
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "contentBase64": {
+ "type": "string",
+ "description": "File content, base64-encoded."
+ },
+ "productId": {
+ "type": "string"
+ },
+ "visibility": {
+ "type": "string",
+ "enum": [
+ "PUBLIC",
+ "RESTRICTED",
+ "PRIVATE"
+ ],
+ "default": "PRIVATE"
+ }
+ },
+ "required": [
+ "name",
+ "filename",
+ "mimeType",
+ "contentBase64"
+ ]
+ },
+ "UpdateDocumentMetadataDto": {
+ "type": "object",
+ "properties": {
+ "documentType": {
+ "type": "string",
+ "enum": [
+ "PRIMARY_IMAGE",
+ "GALLERY_IMAGE",
+ "TECHNICAL_DRAWING",
+ "DATASHEET",
+ "MANUAL",
+ "CERTIFICATE",
+ "DECLARATION",
+ "SAFETY_DOCUMENT",
+ "INSTALLATION_GUIDE",
+ "VIDEO",
+ "OTHER"
+ ],
+ "default": "OTHER"
+ },
+ "validFrom": {
+ "type": "string",
+ "description": "Deel 7 §52 — essential for certificates, meaningful for any document type."
+ },
+ "validUntil": {
+ "type": "string"
+ },
+ "sortOrder": {
+ "type": "number"
+ },
+ "certificateMetadata": {
+ "type": "object",
+ "description": "Deel 13 §27-28 — {certificateNumber?, issuer?, issuerOrganizationId?, issuedAt?, scope?}. Only meaningful when documentType is CERTIFICATE."
+ },
+ "lifecycleStatus": {
+ "type": "string",
+ "enum": [
+ "ACTIVE",
+ "SUPERSEDED",
+ "ARCHIVED"
+ ]
+ }
+ }
+ },
+ "CreateLocationDto": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "WAREHOUSE",
+ "STORE",
+ "DISTRIBUTION_CENTER",
+ "FACTORY",
+ "SERVICE_CENTER",
+ "PICKUP_POINT",
+ "OFFICE"
+ ]
+ },
+ "country": {
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "postalCode": {
+ "type": "string"
+ },
+ "city": {
+ "type": "string"
+ },
+ "address": {
+ "type": "string"
+ },
+ "latitude": {
+ "type": "number"
+ },
+ "longitude": {
+ "type": "number"
+ },
+ "timezone": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "type"
+ ]
+ },
+ "UpsertInventoryDto": {
+ "type": "object",
+ "properties": {
+ "locationId": {
+ "type": "string"
+ },
+ "onHand": {
+ "type": "number",
+ "default": 0
+ },
+ "reserved": {
+ "type": "number",
+ "default": 0
+ },
+ "allocated": {
+ "type": "number",
+ "default": 0
+ },
+ "quarantined": {
+ "type": "number",
+ "default": 0
+ },
+ "damaged": {
+ "type": "number",
+ "default": 0
+ },
+ "inTransit": {
+ "type": "number",
+ "default": 0
+ },
+ "unit": {
+ "type": "string",
+ "default": "EA"
+ },
+ "lowStockThreshold": {
+ "type": "number"
+ },
+ "manualOverride": {
+ "type": "string",
+ "enum": [
+ "PRE_ORDER",
+ "BACKORDER",
+ "DISCONTINUED"
+ ]
+ },
+ "visibility": {
+ "type": "string",
+ "enum": [
+ "PUBLIC",
+ "PARTNER_ONLY",
+ "PRIVATE"
+ ],
+ "default": "PRIVATE"
+ },
+ "quantityDisplayMode": {
+ "type": "string",
+ "enum": [
+ "EXACT",
+ "RANGE",
+ "BOOLEAN",
+ "HIDDEN"
+ ],
+ "default": "EXACT"
+ }
+ },
+ "required": [
+ "locationId"
+ ]
+ },
+ "RequestConnectionDto": {
+ "type": "object",
+ "properties": {
+ "targetOrganizationId": {
+ "type": "string",
+ "description": "Organization ID to connect with"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "BUSINESS",
+ "DATA",
+ "API",
+ "SUPPLY",
+ "DISTRIBUTION",
+ "SERVICE",
+ "ORDERING",
+ "INTEGRATION"
+ ]
+ },
+ "capabilities": {
+ "example": [
+ "product.read",
+ "inventory.read",
+ "order.create"
+ ],
+ "description": "Capabilities requested (Deel 15 §10). Each side authorizes independently.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "targetOrganizationId",
+ "type"
+ ]
+ },
+ "SharingRuleDto": {
+ "type": "object",
+ "properties": {
+ "attributeCode": {
+ "type": "string",
+ "description": "Code of an AttributeDefinition visible to your organization (global or your own)."
+ },
+ "operator": {
+ "type": "string",
+ "enum": [
+ "eq",
+ "neq",
+ "in",
+ "contains"
+ ]
+ },
+ "value": {
+ "type": "object",
+ "description": "Value to compare against. Must be an array when operator is \"in\"."
+ }
+ },
+ "required": [
+ "attributeCode",
+ "operator",
+ "value"
+ ]
+ },
+ "CreateSharingGrantDto": {
+ "type": "object",
+ "properties": {
+ "connectionId": {
+ "type": "string",
+ "description": "Must be an ACTIVE Connection the caller's organization is part of"
+ },
+ "targetType": {
+ "type": "string",
+ "enum": [
+ "PRODUCT",
+ "PRODUCT_CATEGORY",
+ "ALL_PRODUCTS"
+ ]
+ },
+ "targetId": {
+ "type": "string",
+ "description": "productId or categoryId, depending on targetType. Omit for ALL_PRODUCTS."
+ },
+ "dataCategories": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "PRODUCT_DATA",
+ "CONTENT",
+ "DPP",
+ "INVENTORY",
+ "ORDERING"
+ ]
+ }
+ },
+ "expiresAt": {
+ "type": "string"
+ },
+ "ruleFilter": {
+ "description": "Rule-based/dynamic scoping (ADR-022), e.g. [{ attributeCode: \"region\", operator: \"eq\", value: \"EU\" }]. ANDed with each other and with targetType — a product must also match every rule to be in scope. Omit for no extra filtering.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SharingRuleDto"
+ }
+ }
+ },
+ "required": [
+ "connectionId",
+ "targetType",
+ "dataCategories"
+ ]
+ },
+ "CreateOfferDto": {
+ "type": "object",
+ "properties": {
+ "productId": {
+ "type": "string"
+ },
+ "variantId": {
+ "type": "string",
+ "description": "Prices a specific variant instead of the base product (ADR-015) — e.g. different sizes/colors with different prices. Never a serial/batch: pricing is always at product/variant (SKU) level, never per physical unit."
+ },
+ "price": {
+ "type": "number"
+ },
+ "currency": {
+ "type": "string",
+ "example": "EUR"
+ },
+ "minimumQuantity": {
+ "type": "number",
+ "default": 1,
+ "description": "Decimal, not just whole units (ADR-024, Deel 17 §29) — e.g. 4.5 kg."
+ },
+ "salesUnit": {
+ "type": "string",
+ "default": "EA"
+ },
+ "validFrom": {
+ "type": "string"
+ },
+ "validUntil": {
+ "type": "string"
+ },
+ "conditions": {
+ "type": "object"
+ }
+ },
+ "required": [
+ "productId",
+ "price",
+ "currency"
+ ]
+ },
+ "SetOfferBuyerMinimumDto": {
+ "type": "object",
+ "properties": {
+ "buyerOrganizationId": {
+ "type": "string"
+ },
+ "minimumQuantity": {
+ "type": "number",
+ "description": "Overrides Offer.minimumQuantity for this buyer only. Decimal (ADR-024, Deel 17 §29)."
+ }
+ },
+ "required": [
+ "buyerOrganizationId",
+ "minimumQuantity"
+ ]
+ },
+ "CreateDraftOrderDto": {
+ "type": "object",
+ "properties": {
+ "shippingAddress": {
+ "type": "object"
+ },
+ "notes": {
+ "type": "string"
+ }
+ }
+ },
+ "AddOrderLineDto": {
+ "type": "object",
+ "properties": {
+ "offerId": {
+ "type": "string"
+ },
+ "quantity": {
+ "type": "number",
+ "description": "Decimal, not just whole units (ADR-024, Deel 17 §29) — e.g. 4.5 kg, 10.75 m."
+ }
+ },
+ "required": [
+ "offerId",
+ "quantity"
+ ]
+ },
+ "UpdateOrderGroupStatusDto": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "enum": [
+ "PROCESSING",
+ "FULFILLED",
+ "PARTIALLY_FULFILLED",
+ "COMPLETED",
+ "CANCELLED"
+ ]
+ }
+ },
+ "required": [
+ "status"
+ ]
+ },
+ "CreateDppProfileDto": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string",
+ "example": "1.0"
+ },
+ "description": {
+ "type": "string"
+ },
+ "requiredAttributeCodes": {
+ "description": "AttributeDefinition codes required for VALID status",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "code",
+ "name",
+ "version",
+ "requiredAttributeCodes"
+ ]
+ },
+ "CreateDppRecordDto": {
+ "type": "object",
+ "properties": {
+ "productId": {
+ "type": "string"
+ },
+ "profileId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "productId",
+ "profileId"
+ ]
+ },
+ "CreateWebhookSubscriptionDto": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "example": "https://example.com/ospi/webhook"
+ },
+ "eventTypes": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "identity.registered",
+ "identity.activated",
+ "identity.suspended",
+ "identity.reactivated",
+ "identity.retired",
+ "product.created",
+ "product.published",
+ "product.unpublished",
+ "product.recalled",
+ "product.archived",
+ "order.created",
+ "order.updated"
+ ]
+ }
+ }
+ },
+ "required": [
+ "url",
+ "eventTypes"
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index eafca76dc8..f7cf19554e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,37 +1,30 @@
{
- "name": "dyte-docs",
- "version": "1.20.0",
+ "name": "ospi-docs",
+ "version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "dyte-docs",
- "version": "1.20.0",
- "hasInstallScript": true,
+ "name": "ospi-docs",
+ "version": "0.1.0",
"dependencies": {
- "@codesandbox/sandpack-react": "^2.13.5",
- "@codesandbox/sandpack-themes": "^2.0.21",
- "@docsly/react": "^1.8.6",
- "@docusaurus/core": "^3.7.0",
- "@docusaurus/faster": "^3.7.0",
- "@docusaurus/module-type-aliases": "^3.7.0",
- "@docusaurus/plugin-client-redirects": "^3.7.0",
- "@docusaurus/preset-classic": "^3.7.0",
- "@docusaurus/remark-plugin-npm2yarn": "^3.7.0",
- "@docusaurus/theme-live-codeblock": "^3.7.0",
- "@docusaurus/theme-mermaid": "3.7.0",
- "@dytesdk/docs-ai-react": "^2.0.1",
- "@dytesdk/react-ui-kit": "^1.66.0",
- "@dytesdk/react-web-core": "file:modules/dytesdk-react-web-core-1.36.4-stripped.1.tgz",
- "@dytesdk/web-core": "file:modules/dytesdk-web-core-1.31.0-stripped.1.tgz",
+ "@docusaurus/core": "^3.10.0",
+ "@docusaurus/faster": "^3.10.0",
+ "@docusaurus/module-type-aliases": "^3.10.0",
+ "@docusaurus/plugin-client-redirects": "^3.10.0",
+ "@docusaurus/preset-classic": "^3.10.0",
+ "@docusaurus/remark-plugin-npm2yarn": "^3.10.0",
+ "@docusaurus/theme-live-codeblock": "^3.10.0",
+ "@docusaurus/theme-mermaid": "3.10.2",
"@fluentui/react-icons": "^2.0.271",
"@headlessui/react": "^1.7.14",
"@radix-ui/react-select": "^2.1.5",
- "@stoplight/elements": "^8.0.2",
"clsx": "^2.1.1",
+ "docusaurus-plugin-openapi-docs": "^5.2.0",
+ "docusaurus-plugin-sass": "^0.2.5",
+ "docusaurus-theme-openapi-docs": "^5.2.0",
"nanoid": "^5.0.6",
"param-case": "^3.0.4",
- "patch-package": "^6.5.1",
"prism-react-renderer": "^2.1.0",
"raw-loader": "^4.0.2",
"react": "^18.2.0",
@@ -41,7 +34,7 @@
"zustand": "^4.5.2"
},
"devDependencies": {
- "@docusaurus/tsconfig": "3.7.0",
+ "@docusaurus/tsconfig": "3.10.2",
"@styled-icons/boxicons-logos": "^10.47.0",
"@swc/core": "^1.10.11",
"@typescript-eslint/eslint-plugin": "^5.56.0",
@@ -73,45 +66,62 @@
"node": ">=18.0"
}
},
- "node_modules/@algolia/autocomplete-core": {
- "version": "1.17.9",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz",
- "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==",
+ "node_modules/@11ty/gray-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@11ty/gray-matter/-/gray-matter-1.0.0.tgz",
+ "integrity": "sha512-7mJJl+wf1AByoT0PknQiQfOPnVNT4fevGrUBVWO4HXsnYn1aQPyRyrELYrNUFleUBM++KzMKN6QaxHPk0t/6/g==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-plugin-algolia-insights": "1.17.9",
- "@algolia/autocomplete-shared": "1.17.9"
+ "js-yaml": "^4.1.0",
+ "kind-of": "^6.0.3",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=11"
}
},
- "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
- "version": "1.17.9",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz",
- "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==",
+ "node_modules/@algolia/abtesting": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.23.0.tgz",
+ "integrity": "sha512-j45MBISstltys9QyQ4xf6quRiN1g7vMuwQL9VM4dx8YuRZvCQ173b9royZAx6iAbRX3IB1VnG1z//NuwyQ8jpQ==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-shared": "1.17.9"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
- "peerDependencies": {
- "search-insights": ">= 1 < 3"
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/autocomplete-core": {
+ "version": "1.19.9",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.9.tgz",
+ "integrity": "sha512-4U2JKLMWlDu0CotYyUkWakDxr8AIav3QtIUXXRpfavYN29aVWfzlwJp9T0rPKEf/dO2QCPAUc0Kq1Tj1GJxo2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-plugin-algolia-insights": "1.19.9",
+ "@algolia/autocomplete-shared": "1.19.9"
}
},
- "node_modules/@algolia/autocomplete-preset-algolia": {
- "version": "1.17.9",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz",
- "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==",
+ "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
+ "version": "1.19.9",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.9.tgz",
+ "integrity": "sha512-6mExC6X7762s2SV3eJy3QOkB8bdMmnUhQ2agvGVDuzwoGyr3PquGSY/0vPQXCfiAiCaXUz1rXn+lwghgSi0l0w==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-shared": "1.17.9"
+ "@algolia/autocomplete-shared": "1.19.9"
},
"peerDependencies": {
- "@algolia/client-search": ">= 4.9.1 < 6",
- "algoliasearch": ">= 4.9.1 < 6"
+ "search-insights": ">= 1 < 3"
}
},
"node_modules/@algolia/autocomplete-shared": {
- "version": "1.17.9",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz",
- "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==",
+ "version": "1.19.9",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.9.tgz",
+ "integrity": "sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A==",
"license": "MIT",
"peerDependencies": {
"@algolia/client-search": ">= 4.9.1 < 6",
@@ -119,99 +129,99 @@
}
},
"node_modules/@algolia/client-abtesting": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.20.0.tgz",
- "integrity": "sha512-YaEoNc1Xf2Yk6oCfXXkZ4+dIPLulCx8Ivqj0OsdkHWnsI3aOJChY5qsfyHhDBNSOhqn2ilgHWxSfyZrjxBcAww==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.57.0.tgz",
+ "integrity": "sha512-JVFFujiZUCguk5tz3LZr4fTQxqpIrj4/Jw3SI7kMljSqtfLxYn/s/TWH0J2s4iNfsDpxPhgFGMotCpmDI4kZ8w==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-analytics": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.20.0.tgz",
- "integrity": "sha512-CIT9ni0+5sYwqehw+t5cesjho3ugKQjPVy/iPiJvtJX4g8Cdb6je6SPt2uX72cf2ISiXCAX9U3cY0nN0efnRDw==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.57.0.tgz",
+ "integrity": "sha512-6KqECK4ED3JJQEoDrQWnGPQzElA828xAD4qK5ceawNNyP/LcSvzAoLHjFkoTPksZ/kxj6VUtCRH+IHZesLltng==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-common": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.0.tgz",
- "integrity": "sha512-iSTFT3IU8KNpbAHcBUJw2HUrPnMXeXLyGajmCL7gIzWOsYM4GabZDHXOFx93WGiXMti1dymz8k8R+bfHv1YZmA==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.57.0.tgz",
+ "integrity": "sha512-uqpGF3oXYsoCbQq5d7BzNrNTfIfuvJyGP1CKvSW27T9boUg7KOwyxsAw1AX0a3jSW2HrYEJ/NN+Z4MiGivbpeQ==",
"license": "MIT",
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-insights": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.0.tgz",
- "integrity": "sha512-w9RIojD45z1csvW1vZmAko82fqE/Dm+Ovsy2ElTsjFDB0HMAiLh2FO86hMHbEXDPz6GhHKgGNmBRiRP8dDPgJg==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.57.0.tgz",
+ "integrity": "sha512-u5NboJVJXDEFplvNnqqX4CxkXPYysjJRj47hOSh9329H8kG5gFLKJBIiS5utMQ+GZm8xQl3Te7NInDk6elEADQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-personalization": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.20.0.tgz",
- "integrity": "sha512-p/hftHhrbiHaEcxubYOzqVV4gUqYWLpTwK+nl2xN3eTrSW9SNuFlAvUBFqPXSVBqc6J5XL9dNKn3y8OA1KElSQ==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.57.0.tgz",
+ "integrity": "sha512-uzc0b2LmHAK9/QID4xeo35OG84AkZl4YewkCqawqAOGLjT2eZpM/OZx45ESygMHG30Ws+ZTSdluPtMJcUnrbWQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-query-suggestions": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.0.tgz",
- "integrity": "sha512-m4aAuis5vZi7P4gTfiEs6YPrk/9hNTESj3gEmGFgfJw3hO2ubdS4jSId1URd6dGdt0ax2QuapXufcrN58hPUcw==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.57.0.tgz",
+ "integrity": "sha512-dIAhnM6ue/ssa5PjgNfu4g8A4yTojl9ZOUzZU3wIaIKRerL2R/3Emuf9n/D6ICXXP167KC6XCeC7nliSw7cuSw==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-search": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.0.tgz",
- "integrity": "sha512-KL1zWTzrlN4MSiaK1ea560iCA/UewMbS4ZsLQRPoDTWyrbDKVbztkPwwv764LAqgXk0fvkNZvJ3IelcK7DqhjQ==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.57.0.tgz",
+ "integrity": "sha512-2TTPTTKSJmCptvhCm4Xf3bBYMqZni+Pgc2hVdqc4l9wsBpSJNVTVIKpnd10OubUgkGcmppVDj1XQqYaf6EnPSQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
@@ -224,81 +234,81 @@
"license": "MIT"
},
"node_modules/@algolia/ingestion": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.20.0.tgz",
- "integrity": "sha512-shj2lTdzl9un4XJblrgqg54DoK6JeKFO8K8qInMu4XhE2JuB8De6PUuXAQwiRigZupbI0xq8aM0LKdc9+qiLQA==",
+ "version": "1.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.57.0.tgz",
+ "integrity": "sha512-W4JseHKt+pzOxlFV+T3MWEG0h4Z2Se5zjoXUD0ewlw8aOWMG/yjRdopUdLQsXULepB/My2tDuZjkwk2sMfsUrQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/monitoring": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.20.0.tgz",
- "integrity": "sha512-aF9blPwOhKtWvkjyyXh9P5peqmhCA1XxLBRgItT+K6pbT0q4hBDQrCid+pQZJYy4HFUKjB/NDDwyzFhj/rwKhw==",
+ "version": "1.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.57.0.tgz",
+ "integrity": "sha512-BrxJVE0/eLinEPICCD7BKN/2xnt0nkjge70u8zzE2ISP3fuB3tjLgcwpanUycvlHBFLI4gK0l5ol54p6IYuR/Q==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/recommend": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.20.0.tgz",
- "integrity": "sha512-T6B/WPdZR3b89/F9Vvk6QCbt/wrLAtrGoL8z4qPXDFApQ8MuTFWbleN/4rHn6APWO3ps+BUePIEbue2rY5MlRw==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.57.0.tgz",
+ "integrity": "sha512-Gc29jkeiLKlVfHvyrIgyUHHE+aYTdXEeLfK42rjr5/1TTVsYwUJz0XkvoIBIqfMjcDg6gXeHb1jTUZ0H+SYIlQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "@algolia/client-common": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-browser-xhr": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.0.tgz",
- "integrity": "sha512-t6//lXsq8E85JMenHrI6mhViipUT5riNhEfCcvtRsTV+KIBpC6Od18eK864dmBhoc5MubM0f+sGpKOqJIlBSCg==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.57.0.tgz",
+ "integrity": "sha512-PIPnPN7MP3fp2VAi01BVXhCWmD366ZB2Hkq5TlYKtThd4KxUtMmaaNDpFgVCTXtSIqWVZLJntOHRvxg/sIPd8Q==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0"
+ "@algolia/client-common": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-fetch": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.0.tgz",
- "integrity": "sha512-FHxYGqRY+6bgjKsK4aUsTAg6xMs2S21elPe4Y50GB0Y041ihvw41Vlwy2QS6K9ldoftX4JvXodbKTcmuQxywdQ==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.57.0.tgz",
+ "integrity": "sha512-AX3RlOudXMdTwtwUqdAf5hAVLvXfOZZH1FZh6ALDdrhVLT0TtAIe48N6nYcWcTnwoTxK/wDIQqZ19IMjK8zJAA==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0"
+ "@algolia/client-common": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-node-http": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.0.tgz",
- "integrity": "sha512-kmtQClq/w3vtPteDSPvaW9SPZL/xrIgMrxZyAgsFwrJk0vJxqyC5/hwHmrCraDnStnGSADnLpBf4SpZnwnkwWw==",
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.57.0.tgz",
+ "integrity": "sha512-cWZc1dKb7wy9/wPpwMtL1y89gK2G7y2A47Coa7zwf1ydtIeJm4+S+XxoQ2b/ZRiQnrC1YHavLjYUPDCdnT7Khg==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.20.0"
+ "@algolia/client-common": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
@@ -329,24 +339,75 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@antfu/install-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz",
+ "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==",
+ "license": "MIT",
+ "dependencies": {
+ "package-manager-detector": "^1.3.0",
+ "tinyexec": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@apidevtools/json-schema-ref-parser": {
+ "version": "15.5.2",
+ "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.5.2.tgz",
+ "integrity": "sha512-B+C9Ok0DF/rjANIUHgwcV5/d4C72MB7f2IbKFL8jDGcGq2qn3yr893s8vAn2kbhmyaelAin0JK8EKF9P1+y7aQ==",
+ "license": "MIT",
+ "dependencies": {
+ "js-yaml": "^5.2.2",
+ "undici": "^6.28.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "peerDependencies": {
+ "@types/json-schema": "^7.0.15"
+ }
+ },
+ "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.3.0.tgz",
+ "integrity": "sha512-muutsYr+e2+d3rTgUGslq5rxbBlUy3cJ61IsHag2QNDQV+7zXWjkUpmALIajhrlLlrgRUiymj6U3zUr/TMK84Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.mjs"
+ }
+ },
"node_modules/@babel/code-frame": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
- "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.29.7",
"js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
+ "picocolors": "^1.1.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz",
- "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -391,15 +452,15 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
- "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
+ "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.26.5",
- "@babel/types": "^7.26.5",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
+ "@babel/parser": "^7.29.8",
+ "@babel/types": "^7.29.8",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
},
"engines": {
@@ -407,39 +468,35 @@
}
},
"node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
- "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"license": "MIT",
"dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
- "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz",
+ "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.25.9"
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
- "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.26.5",
- "@babel/helper-validator-option": "^7.25.9",
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -470,17 +527,17 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
- "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz",
+ "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "@babel/helper-member-expression-to-functions": "^7.25.9",
- "@babel/helper-optimise-call-expression": "^7.25.9",
- "@babel/helper-replace-supers": "^7.25.9",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
- "@babel/traverse": "^7.25.9",
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-member-expression-to-functions": "^7.29.7",
+ "@babel/helper-optimise-call-expression": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
"semver": "^6.3.1"
},
"engines": {
@@ -500,13 +557,13 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz",
- "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz",
+ "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "regexpu-core": "^6.2.0",
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "regexpu-core": "^6.3.1",
"semver": "^6.3.1"
},
"engines": {
@@ -526,56 +583,65 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
- "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz",
+ "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "debug": "^4.4.3",
"lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
+ "resolve": "^1.22.11"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
+ "node_modules/@babel/helper-globals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
- "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz",
+ "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
- "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
- "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -585,35 +651,35 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
- "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz",
+ "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.25.9"
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
- "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
+ "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
- "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz",
+ "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "@babel/helper-wrap-function": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-wrap-function": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -623,14 +689,14 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
- "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz",
+ "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.25.9",
- "@babel/helper-optimise-call-expression": "^7.25.9",
- "@babel/traverse": "^7.26.5"
+ "@babel/helper-member-expression-to-functions": "^7.29.7",
+ "@babel/helper-optimise-call-expression": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -640,54 +706,54 @@
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
- "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz",
+ "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
- "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
- "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz",
+ "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==",
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.25.9",
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/template": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -707,12 +773,12 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
- "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.26.7"
+ "@babel/types": "^7.29.8"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -722,13 +788,13 @@
}
},
"node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
- "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz",
+ "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -738,12 +804,12 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
- "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz",
+ "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -753,12 +819,28 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
- "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz",
+ "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz",
+ "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -768,14 +850,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
- "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz",
+ "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
- "@babel/plugin-transform-optional-chaining": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/plugin-transform-optional-chaining": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -785,13 +867,13 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
- "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz",
+ "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -825,12 +907,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
- "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz",
+ "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -840,12 +922,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
- "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz",
+ "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -855,12 +937,12 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
- "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz",
+ "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -870,12 +952,12 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
- "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz",
+ "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -901,12 +983,12 @@
}
},
"node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
- "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz",
+ "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -916,14 +998,14 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
- "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz",
+ "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-remap-async-to-generator": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-remap-async-to-generator": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -933,14 +1015,14 @@
}
},
"node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
- "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz",
+ "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-remap-async-to-generator": "^7.25.9"
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-remap-async-to-generator": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -950,12 +1032,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz",
- "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz",
+ "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.26.5"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -965,12 +1047,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
- "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz",
+ "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -980,13 +1062,13 @@
}
},
"node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
- "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz",
+ "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -996,13 +1078,13 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
- "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz",
+ "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1012,17 +1094,17 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
- "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz",
+ "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "@babel/helper-compilation-targets": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-replace-supers": "^7.25.9",
- "@babel/traverse": "^7.25.9",
- "globals": "^11.1.0"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1032,13 +1114,13 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
- "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz",
+ "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/template": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/template": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1048,12 +1130,13 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
- "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz",
+ "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1063,13 +1146,13 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
- "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz",
+ "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1079,12 +1162,12 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
- "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz",
+ "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1094,13 +1177,13 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
- "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz",
+ "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1110,12 +1193,28 @@
}
},
"node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
- "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz",
+ "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-explicit-resource-management": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz",
+ "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/plugin-transform-destructuring": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1125,12 +1224,12 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
- "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz",
+ "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1140,12 +1239,12 @@
}
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
- "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz",
+ "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1155,13 +1254,13 @@
}
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
- "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz",
+ "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1171,14 +1270,14 @@
}
},
"node_modules/@babel/plugin-transform-function-name": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
- "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz",
+ "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1188,12 +1287,12 @@
}
},
"node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
- "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz",
+ "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1203,12 +1302,12 @@
}
},
"node_modules/@babel/plugin-transform-literals": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
- "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz",
+ "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1218,12 +1317,12 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
- "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz",
+ "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1233,12 +1332,12 @@
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
- "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz",
+ "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1248,13 +1347,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
- "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz",
+ "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1264,13 +1363,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
- "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz",
+ "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.26.0",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1280,15 +1379,15 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
- "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz",
+ "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9",
- "@babel/traverse": "^7.25.9"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.8"
},
"engines": {
"node": ">=6.9.0"
@@ -1298,13 +1397,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
- "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz",
+ "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1314,13 +1413,13 @@
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
- "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz",
+ "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1330,12 +1429,12 @@
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
- "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz",
+ "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1345,12 +1444,12 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.26.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz",
- "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz",
+ "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.26.5"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1360,12 +1459,12 @@
}
},
"node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
- "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz",
+ "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1375,14 +1474,16 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
- "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz",
+ "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/plugin-transform-parameters": "^7.25.9"
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/plugin-transform-destructuring": "^7.29.7",
+ "@babel/plugin-transform-parameters": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1392,13 +1493,13 @@
}
},
"node_modules/@babel/plugin-transform-object-super": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
- "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz",
+ "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-replace-supers": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1408,12 +1509,12 @@
}
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
- "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz",
+ "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1423,13 +1524,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
- "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz",
+ "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1439,12 +1540,12 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
- "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz",
+ "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1454,13 +1555,13 @@
}
},
"node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
- "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz",
+ "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1470,14 +1571,14 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
- "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz",
+ "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "@babel/helper-create-class-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1487,12 +1588,12 @@
}
},
"node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
- "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz",
+ "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1502,12 +1603,12 @@
}
},
"node_modules/@babel/plugin-transform-react-constant-elements": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz",
- "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.29.7.tgz",
+ "integrity": "sha512-J0wGhKan+rIiE2OhfhRptySLrJ6SjQYM6b6N1FMlhyhCcw1Mig8vQjWchyB+bgHGDvaWo6Diu6CLRMra2uMtmg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1517,12 +1618,12 @@
}
},
"node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
- "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz",
+ "integrity": "sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1532,16 +1633,16 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
- "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz",
+ "integrity": "sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "@babel/helper-module-imports": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/plugin-syntax-jsx": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/plugin-syntax-jsx": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1551,12 +1652,12 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
- "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz",
+ "integrity": "sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==",
"license": "MIT",
"dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.25.9"
+ "@babel/plugin-transform-react-jsx": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1566,13 +1667,13 @@
}
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz",
- "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz",
+ "integrity": "sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1582,13 +1683,12 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
- "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz",
+ "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "regenerator-transform": "^0.15.2"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1598,13 +1698,13 @@
}
},
"node_modules/@babel/plugin-transform-regexp-modifiers": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
- "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz",
+ "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1614,12 +1714,12 @@
}
},
"node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
- "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz",
+ "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1629,16 +1729,16 @@
}
},
"node_modules/@babel/plugin-transform-runtime": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz",
- "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz",
+ "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "babel-plugin-polyfill-corejs2": "^0.4.14",
+ "babel-plugin-polyfill-corejs3": "^0.13.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.5",
"semver": "^6.3.1"
},
"engines": {
@@ -1658,12 +1758,12 @@
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
- "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz",
+ "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1673,13 +1773,13 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
- "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz",
+ "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1689,12 +1789,12 @@
}
},
"node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
- "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz",
+ "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1704,12 +1804,12 @@
}
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
- "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz",
+ "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1719,12 +1819,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz",
- "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz",
+ "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.26.5"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1734,16 +1834,16 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.7.tgz",
- "integrity": "sha512-5cJurntg+AT+cgelGP9Bt788DKiAw9gIMSMU2NJrLAilnj0m8WZWUNZPSLOmadYsujHutpgElO+50foX+ib/Wg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz",
+ "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.25.9",
- "@babel/helper-create-class-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.26.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
- "@babel/plugin-syntax-typescript": "^7.25.9"
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/plugin-syntax-typescript": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1753,12 +1853,12 @@
}
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
- "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz",
+ "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1768,13 +1868,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
- "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz",
+ "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1784,13 +1884,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
- "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz",
+ "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1800,13 +1900,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
- "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz",
+ "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1816,79 +1916,81 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz",
- "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==",
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.26.5",
- "@babel/helper-compilation-targets": "^7.26.5",
- "@babel/helper-plugin-utils": "^7.26.5",
- "@babel/helper-validator-option": "^7.25.9",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz",
+ "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7",
+ "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-import-assertions": "^7.26.0",
- "@babel/plugin-syntax-import-attributes": "^7.26.0",
+ "@babel/plugin-syntax-import-assertions": "^7.29.7",
+ "@babel/plugin-syntax-import-attributes": "^7.29.7",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.25.9",
- "@babel/plugin-transform-async-generator-functions": "^7.25.9",
- "@babel/plugin-transform-async-to-generator": "^7.25.9",
- "@babel/plugin-transform-block-scoped-functions": "^7.26.5",
- "@babel/plugin-transform-block-scoping": "^7.25.9",
- "@babel/plugin-transform-class-properties": "^7.25.9",
- "@babel/plugin-transform-class-static-block": "^7.26.0",
- "@babel/plugin-transform-classes": "^7.25.9",
- "@babel/plugin-transform-computed-properties": "^7.25.9",
- "@babel/plugin-transform-destructuring": "^7.25.9",
- "@babel/plugin-transform-dotall-regex": "^7.25.9",
- "@babel/plugin-transform-duplicate-keys": "^7.25.9",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
- "@babel/plugin-transform-dynamic-import": "^7.25.9",
- "@babel/plugin-transform-exponentiation-operator": "^7.26.3",
- "@babel/plugin-transform-export-namespace-from": "^7.25.9",
- "@babel/plugin-transform-for-of": "^7.25.9",
- "@babel/plugin-transform-function-name": "^7.25.9",
- "@babel/plugin-transform-json-strings": "^7.25.9",
- "@babel/plugin-transform-literals": "^7.25.9",
- "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
- "@babel/plugin-transform-member-expression-literals": "^7.25.9",
- "@babel/plugin-transform-modules-amd": "^7.25.9",
- "@babel/plugin-transform-modules-commonjs": "^7.26.3",
- "@babel/plugin-transform-modules-systemjs": "^7.25.9",
- "@babel/plugin-transform-modules-umd": "^7.25.9",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
- "@babel/plugin-transform-new-target": "^7.25.9",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6",
- "@babel/plugin-transform-numeric-separator": "^7.25.9",
- "@babel/plugin-transform-object-rest-spread": "^7.25.9",
- "@babel/plugin-transform-object-super": "^7.25.9",
- "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
- "@babel/plugin-transform-optional-chaining": "^7.25.9",
- "@babel/plugin-transform-parameters": "^7.25.9",
- "@babel/plugin-transform-private-methods": "^7.25.9",
- "@babel/plugin-transform-private-property-in-object": "^7.25.9",
- "@babel/plugin-transform-property-literals": "^7.25.9",
- "@babel/plugin-transform-regenerator": "^7.25.9",
- "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
- "@babel/plugin-transform-reserved-words": "^7.25.9",
- "@babel/plugin-transform-shorthand-properties": "^7.25.9",
- "@babel/plugin-transform-spread": "^7.25.9",
- "@babel/plugin-transform-sticky-regex": "^7.25.9",
- "@babel/plugin-transform-template-literals": "^7.25.9",
- "@babel/plugin-transform-typeof-symbol": "^7.26.7",
- "@babel/plugin-transform-unicode-escapes": "^7.25.9",
- "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
- "@babel/plugin-transform-unicode-regex": "^7.25.9",
- "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
+ "@babel/plugin-transform-arrow-functions": "^7.29.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.29.7",
+ "@babel/plugin-transform-async-to-generator": "^7.29.7",
+ "@babel/plugin-transform-block-scoped-functions": "^7.29.7",
+ "@babel/plugin-transform-block-scoping": "^7.29.7",
+ "@babel/plugin-transform-class-properties": "^7.29.7",
+ "@babel/plugin-transform-class-static-block": "^7.29.7",
+ "@babel/plugin-transform-classes": "^7.29.7",
+ "@babel/plugin-transform-computed-properties": "^7.29.7",
+ "@babel/plugin-transform-destructuring": "^7.29.7",
+ "@babel/plugin-transform-dotall-regex": "^7.29.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.29.7",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7",
+ "@babel/plugin-transform-dynamic-import": "^7.29.7",
+ "@babel/plugin-transform-explicit-resource-management": "^7.29.7",
+ "@babel/plugin-transform-exponentiation-operator": "^7.29.7",
+ "@babel/plugin-transform-export-namespace-from": "^7.29.7",
+ "@babel/plugin-transform-for-of": "^7.29.7",
+ "@babel/plugin-transform-function-name": "^7.29.7",
+ "@babel/plugin-transform-json-strings": "^7.29.7",
+ "@babel/plugin-transform-literals": "^7.29.7",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.29.7",
+ "@babel/plugin-transform-member-expression-literals": "^7.29.7",
+ "@babel/plugin-transform-modules-amd": "^7.29.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.29.7",
+ "@babel/plugin-transform-modules-systemjs": "^7.29.7",
+ "@babel/plugin-transform-modules-umd": "^7.29.7",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7",
+ "@babel/plugin-transform-new-target": "^7.29.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7",
+ "@babel/plugin-transform-numeric-separator": "^7.29.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.29.7",
+ "@babel/plugin-transform-object-super": "^7.29.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.29.7",
+ "@babel/plugin-transform-optional-chaining": "^7.29.7",
+ "@babel/plugin-transform-parameters": "^7.29.7",
+ "@babel/plugin-transform-private-methods": "^7.29.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.29.7",
+ "@babel/plugin-transform-property-literals": "^7.29.7",
+ "@babel/plugin-transform-regenerator": "^7.29.7",
+ "@babel/plugin-transform-regexp-modifiers": "^7.29.7",
+ "@babel/plugin-transform-reserved-words": "^7.29.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.29.7",
+ "@babel/plugin-transform-spread": "^7.29.7",
+ "@babel/plugin-transform-sticky-regex": "^7.29.7",
+ "@babel/plugin-transform-template-literals": "^7.29.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.29.7",
+ "@babel/plugin-transform-unicode-escapes": "^7.29.7",
+ "@babel/plugin-transform-unicode-property-regex": "^7.29.7",
+ "@babel/plugin-transform-unicode-regex": "^7.29.7",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.29.7",
"@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.38.1",
+ "babel-plugin-polyfill-corejs2": "^0.4.15",
+ "babel-plugin-polyfill-corejs3": "^0.14.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.6",
+ "core-js-compat": "^3.48.0",
"semver": "^6.3.1"
},
"engines": {
@@ -1898,6 +2000,19 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz",
+ "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.8",
+ "core-js-compat": "^3.48.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
"node_modules/@babel/preset-env/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@@ -1922,17 +2037,17 @@
}
},
"node_modules/@babel/preset-react": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz",
- "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.29.7.tgz",
+ "integrity": "sha512-C+PV1TFUPTmBQGoPBL8j2QmLpZ117YTCwxIZeJOM96GbYMFSc7/pOXU5lVykwnZxyTqQxRsvoRk6f2FktZgGHA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-validator-option": "^7.25.9",
- "@babel/plugin-transform-react-display-name": "^7.25.9",
- "@babel/plugin-transform-react-jsx": "^7.25.9",
- "@babel/plugin-transform-react-jsx-development": "^7.25.9",
- "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "@babel/plugin-transform-react-display-name": "^7.29.7",
+ "@babel/plugin-transform-react-jsx": "^7.29.7",
+ "@babel/plugin-transform-react-jsx-development": "^7.29.7",
+ "@babel/plugin-transform-react-pure-annotations": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1942,16 +2057,16 @@
}
},
"node_modules/@babel/preset-typescript": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz",
- "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz",
+ "integrity": "sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9",
- "@babel/helper-validator-option": "^7.25.9",
- "@babel/plugin-syntax-jsx": "^7.25.9",
- "@babel/plugin-transform-modules-commonjs": "^7.25.9",
- "@babel/plugin-transform-typescript": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "@babel/plugin-syntax-jsx": "^7.29.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.29.7",
+ "@babel/plugin-transform-typescript": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1972,237 +2087,62 @@
"node": ">=6.9.0"
}
},
- "node_modules/@babel/runtime-corejs3": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.7.tgz",
- "integrity": "sha512-55gRV8vGrCIYZnaQHQrD92Lo/hYE3Sj5tmbuf0hhHR7sj2CWhEhHU89hbq+UVDXvFG1zUVXJhUkEq1eAfqXtFw==",
- "license": "MIT",
- "dependencies": {
- "core-js-pure": "^3.30.2",
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/template": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
- "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.25.9",
- "@babel/parser": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz",
- "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz",
+ "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.5",
- "@babel/parser": "^7.26.7",
- "@babel/template": "^7.25.9",
- "@babel/types": "^7.26.7",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.8",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.8",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.8",
+ "debug": "^4.3.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
- "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@braintree/sanitize-url": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
- "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
- },
- "node_modules/@codemirror/autocomplete": {
- "version": "6.15.0",
- "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.15.0.tgz",
- "integrity": "sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0"
- },
- "peerDependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@codemirror/commands": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz",
- "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.4.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.1.0"
- }
- },
- "node_modules/@codemirror/lang-css": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz",
- "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.0.2",
- "@lezer/css": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-html": {
- "version": "6.4.8",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz",
- "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/lang-css": "^6.0.0",
- "@codemirror/lang-javascript": "^6.0.0",
- "@codemirror/language": "^6.4.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0",
- "@lezer/css": "^1.1.0",
- "@lezer/html": "^1.3.0"
- }
- },
- "node_modules/@codemirror/lang-javascript": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz",
- "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.6.0",
- "@codemirror/lint": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0",
- "@lezer/javascript": "^1.0.0"
- }
- },
- "node_modules/@codemirror/language": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz",
- "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.23.0",
- "@lezer/common": "^1.1.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0",
- "style-mod": "^4.0.0"
- }
- },
- "node_modules/@codemirror/lint": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz",
- "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "crelt": "^1.0.5"
- }
- },
- "node_modules/@codemirror/state": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz",
- "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A=="
- },
- "node_modules/@codemirror/view": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.0.tgz",
- "integrity": "sha512-nSSmzONpqsNzshPOxiKhK203R6BvABepugAe34QfQDbNDslyjkqBuKgrK5ZBvqNXpfxz5iLrlGTmEfhbQyH46A==",
- "dependencies": {
- "@codemirror/state": "^6.4.0",
- "style-mod": "^4.1.0",
- "w3c-keyname": "^2.2.4"
- }
- },
- "node_modules/@codesandbox/nodebox": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/@codesandbox/nodebox/-/nodebox-0.1.8.tgz",
- "integrity": "sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg==",
- "dependencies": {
- "outvariant": "^1.4.0",
- "strict-event-emitter": "^0.4.3"
- }
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz",
+ "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==",
+ "license": "MIT"
},
- "node_modules/@codesandbox/sandpack-client": {
- "version": "2.13.2",
- "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-client/-/sandpack-client-2.13.2.tgz",
- "integrity": "sha512-uAuxQOF7p8y4m7H0ojedDcWRf62xVK7UIYIJoX5LkhcV0SW1BTXcRkVNuR0/MSCSv+Og1dBeV8+Xpye9PX0quA==",
- "dependencies": {
- "@codesandbox/nodebox": "0.1.8",
- "buffer": "^6.0.3",
- "dequal": "^2.0.2",
- "outvariant": "1.4.0",
- "static-browser-server": "1.0.3"
- }
- },
- "node_modules/@codesandbox/sandpack-react": {
- "version": "2.13.5",
- "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-react/-/sandpack-react-2.13.5.tgz",
- "integrity": "sha512-MWzh2P/Asck0JSCKY3y7WecdUBBEqB0NFi4p+ohoZMTYqHWTaYfd7nbPlNmGIE1xcGppSZEqPVDjOpAfeQ0zFw==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.4.0",
- "@codemirror/commands": "^6.1.3",
- "@codemirror/lang-css": "^6.0.1",
- "@codemirror/lang-html": "^6.4.0",
- "@codemirror/lang-javascript": "^6.1.2",
- "@codemirror/language": "^6.3.2",
- "@codemirror/state": "^6.2.0",
- "@codemirror/view": "^6.7.1",
- "@codesandbox/sandpack-client": "^2.13.2",
- "@lezer/highlight": "^1.1.3",
- "@react-hook/intersection-observer": "^3.1.1",
- "@stitches/core": "^1.2.6",
- "anser": "^2.1.1",
- "clean-set": "^1.1.2",
- "dequal": "^2.0.2",
- "escape-carriage": "^1.3.1",
- "lz-string": "^1.4.4",
- "react-devtools-inline": "4.4.0",
- "react-is": "^17.0.2"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17 || ^18",
- "react-dom": "^16.8.0 || ^17 || ^18"
- }
- },
- "node_modules/@codesandbox/sandpack-react/node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
- },
- "node_modules/@codesandbox/sandpack-themes": {
- "version": "2.0.21",
- "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-themes/-/sandpack-themes-2.0.21.tgz",
- "integrity": "sha512-CMH/MO/dh6foPYb/3eSn2Cu/J3+1+/81Fsaj7VggICkCrmRk0qG5dmgjGAearPTnRkOGORIPHuRqwNXgw0E6YQ=="
+ "node_modules/@chevrotain/types": {
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz",
+ "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==",
+ "license": "Apache-2.0"
},
"node_modules/@colors/colors": {
"version": "1.5.0",
@@ -2214,9 +2154,9 @@
}
},
"node_modules/@csstools/cascade-layer-name-parser": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.4.tgz",
- "integrity": "sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz",
+ "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==",
"funding": [
{
"type": "github",
@@ -2232,14 +2172,14 @@
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
"node_modules/@csstools/color-helpers": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz",
- "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
+ "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
"funding": [
{
"type": "github",
@@ -2256,9 +2196,9 @@
}
},
"node_modules/@csstools/css-calc": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz",
- "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+ "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
"funding": [
{
"type": "github",
@@ -2274,14 +2214,14 @@
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
"node_modules/@csstools/css-color-parser": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz",
- "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
+ "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
"funding": [
{
"type": "github",
@@ -2294,21 +2234,21 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/color-helpers": "^5.0.1",
- "@csstools/css-calc": "^2.1.1"
+ "@csstools/color-helpers": "^5.1.0",
+ "@csstools/css-calc": "^2.1.4"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
"node_modules/@csstools/css-parser-algorithms": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz",
- "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+ "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
"funding": [
{
"type": "github",
@@ -2324,13 +2264,13 @@
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
"node_modules/@csstools/css-tokenizer": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz",
- "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+ "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
"funding": [
{
"type": "github",
@@ -2347,9 +2287,9 @@
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz",
- "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz",
+ "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==",
"funding": [
{
"type": "github",
@@ -2365,14 +2305,43 @@
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/postcss-alpha-function": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz",
+ "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
"node_modules/@csstools/postcss-cascade-layers": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.1.tgz",
- "integrity": "sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz",
+ "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==",
"funding": [
{
"type": "github",
@@ -2418,9 +2387,9 @@
}
},
"node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -2431,9 +2400,9 @@
}
},
"node_modules/@csstools/postcss-color-function": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.7.tgz",
- "integrity": "sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz",
+ "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==",
"funding": [
{
"type": "github",
@@ -2446,10 +2415,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -2459,10 +2428,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-color-mix-function": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.7.tgz",
- "integrity": "sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==",
+ "node_modules/@csstools/postcss-color-function-display-p3-linear": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz",
+ "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==",
"funding": [
{
"type": "github",
@@ -2475,10 +2444,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -2488,10 +2457,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-content-alt-text": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.4.tgz",
- "integrity": "sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==",
+ "node_modules/@csstools/postcss-color-mix-function": {
+ "version": "3.0.12",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz",
+ "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==",
"funding": [
{
"type": "github",
@@ -2504,9 +2473,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -2516,10 +2486,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-exponential-functions": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.6.tgz",
- "integrity": "sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==",
+ "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz",
+ "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==",
"funding": [
{
"type": "github",
@@ -2532,9 +2502,11 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
"node": ">=18"
@@ -2543,10 +2515,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-font-format-keywords": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz",
- "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==",
+ "node_modules/@csstools/postcss-content-alt-text": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz",
+ "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==",
"funding": [
{
"type": "github",
@@ -2559,8 +2531,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/utilities": "^2.0.0",
- "postcss-value-parser": "^4.2.0"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
"node": ">=18"
@@ -2569,10 +2543,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-gamut-mapping": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.7.tgz",
- "integrity": "sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==",
+ "node_modules/@csstools/postcss-contrast-color-function": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz",
+ "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==",
"funding": [
{
"type": "github",
@@ -2585,9 +2559,11 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
"node": ">=18"
@@ -2596,10 +2572,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-gradients-interpolation-method": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.7.tgz",
- "integrity": "sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==",
+ "node_modules/@csstools/postcss-exponential-functions": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz",
+ "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==",
"funding": [
{
"type": "github",
@@ -2612,11 +2588,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
},
"engines": {
"node": ">=18"
@@ -2625,10 +2599,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-hwb-function": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.7.tgz",
- "integrity": "sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==",
+ "node_modules/@csstools/postcss-font-format-keywords": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz",
+ "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==",
"funding": [
{
"type": "github",
@@ -2641,11 +2615,8 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
"node": ">=18"
@@ -2654,10 +2625,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-ic-unit": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.0.tgz",
- "integrity": "sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==",
+ "node_modules/@csstools/postcss-gamut-mapping": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz",
+ "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==",
"funding": [
{
"type": "github",
@@ -2670,9 +2641,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0",
- "postcss-value-parser": "^4.2.0"
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
},
"engines": {
"node": ">=18"
@@ -2681,10 +2652,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-initial": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.0.tgz",
- "integrity": "sha512-dv2lNUKR+JV+OOhZm9paWzYBXOCi+rJPqJ2cJuhh9xd8USVrd0cBEPczla81HNOyThMQWeCcdln3gZkQV2kYxA==",
+ "node_modules/@csstools/postcss-gradients-interpolation-method": {
+ "version": "5.0.12",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz",
+ "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==",
"funding": [
{
"type": "github",
@@ -2696,6 +2667,13 @@
}
],
"license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/utilities": "^2.0.0"
+ },
"engines": {
"node": ">=18"
},
@@ -2703,10 +2681,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-is-pseudo-class": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.1.tgz",
- "integrity": "sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==",
+ "node_modules/@csstools/postcss-hwb-function": {
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz",
+ "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==",
"funding": [
{
"type": "github",
@@ -2719,8 +2697,11 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/selector-specificity": "^5.0.0",
- "postcss-selector-parser": "^7.0.0"
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
"node": ">=18"
@@ -2729,10 +2710,85 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
- "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "node_modules/@csstools/postcss-ic-unit": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz",
+ "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-initial": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz",
+ "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz",
+ "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
"funding": [
{
"type": "github",
@@ -2752,9 +2808,9 @@
}
},
"node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -2765,9 +2821,9 @@
}
},
"node_modules/@csstools/postcss-light-dark-function": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.7.tgz",
- "integrity": "sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==",
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz",
+ "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==",
"funding": [
{
"type": "github",
@@ -2780,9 +2836,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -2884,9 +2940,9 @@
}
},
"node_modules/@csstools/postcss-logical-viewport-units": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.3.tgz",
- "integrity": "sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz",
+ "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==",
"funding": [
{
"type": "github",
@@ -2899,7 +2955,7 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/css-tokenizer": "^3.0.4",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -2910,9 +2966,9 @@
}
},
"node_modules/@csstools/postcss-media-minmax": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.6.tgz",
- "integrity": "sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz",
+ "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==",
"funding": [
{
"type": "github",
@@ -2925,10 +2981,10 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/media-query-list-parser": "^4.0.2"
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3"
},
"engines": {
"node": ">=18"
@@ -2938,9 +2994,9 @@
}
},
"node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.4.tgz",
- "integrity": "sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz",
+ "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==",
"funding": [
{
"type": "github",
@@ -2953,9 +3009,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/media-query-list-parser": "^4.0.2"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3"
},
"engines": {
"node": ">=18"
@@ -2991,9 +3047,9 @@
}
},
"node_modules/@csstools/postcss-normalize-display-values": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz",
- "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz",
+ "integrity": "sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==",
"funding": [
{
"type": "github",
@@ -3016,9 +3072,9 @@
}
},
"node_modules/@csstools/postcss-oklab-function": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.7.tgz",
- "integrity": "sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz",
+ "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==",
"funding": [
{
"type": "github",
@@ -3031,10 +3087,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -3044,10 +3100,32 @@
"postcss": "^8.4"
}
},
+ "node_modules/@csstools/postcss-position-area-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz",
+ "integrity": "sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
"node_modules/@csstools/postcss-progressive-custom-properties": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.0.0.tgz",
- "integrity": "sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz",
+ "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==",
"funding": [
{
"type": "github",
@@ -3069,10 +3147,36 @@
"postcss": "^8.4"
}
},
+ "node_modules/@csstools/postcss-property-rule-prelude-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz",
+ "integrity": "sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
"node_modules/@csstools/postcss-random-function": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.2.tgz",
- "integrity": "sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz",
+ "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==",
"funding": [
{
"type": "github",
@@ -3085,9 +3189,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
},
"engines": {
"node": ">=18"
@@ -3097,9 +3201,9 @@
}
},
"node_modules/@csstools/postcss-relative-color-syntax": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.7.tgz",
- "integrity": "sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==",
+ "version": "3.0.12",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz",
+ "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==",
"funding": [
{
"type": "github",
@@ -3112,10 +3216,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -3151,9 +3255,9 @@
}
},
"node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -3164,9 +3268,9 @@
}
},
"node_modules/@csstools/postcss-sign-functions": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.1.tgz",
- "integrity": "sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz",
+ "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==",
"funding": [
{
"type": "github",
@@ -3179,9 +3283,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
},
"engines": {
"node": ">=18"
@@ -3191,9 +3295,61 @@
}
},
"node_modules/@csstools/postcss-stepped-value-functions": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.6.tgz",
- "integrity": "sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==",
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz",
+ "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-syntax-descriptor-syntax-production": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz",
+ "integrity": "sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-system-ui-font-family": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz",
+ "integrity": "sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==",
"funding": [
{
"type": "github",
@@ -3206,9 +3362,8 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
},
"engines": {
"node": ">=18"
@@ -3218,9 +3373,9 @@
}
},
"node_modules/@csstools/postcss-text-decoration-shorthand": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.1.tgz",
- "integrity": "sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz",
+ "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==",
"funding": [
{
"type": "github",
@@ -3233,7 +3388,7 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/color-helpers": "^5.0.1",
+ "@csstools/color-helpers": "^5.1.0",
"postcss-value-parser": "^4.2.0"
},
"engines": {
@@ -3244,9 +3399,9 @@
}
},
"node_modules/@csstools/postcss-trigonometric-functions": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.6.tgz",
- "integrity": "sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==",
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz",
+ "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==",
"funding": [
{
"type": "github",
@@ -3259,9 +3414,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
},
"engines": {
"node": ">=18"
@@ -3323,27 +3478,48 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@docsearch/core": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.7.0.tgz",
+ "integrity": "sha512-p/9xVKmPDj3FPvMfPf5naVO3Ej8SCbcUugGvx1+8GgkuBNbqxqN2Irx3WLBv8VY0jH7XpRwKWdlmjXLZsmTLsg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": ">= 16.8.0 < 20.0.0",
+ "react": ">= 16.8.0 < 20.0.0",
+ "react-dom": ">= 16.8.0 < 20.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@docsearch/css": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.3.tgz",
- "integrity": "sha512-1nELpMV40JDLJ6rpVVFX48R1jsBFIQ6RnEQDsLFGmzOjPWTOMlZqUcXcvRx8VmYV/TqnS1l784Ofz+ZEb+wEOQ==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.7.0.tgz",
+ "integrity": "sha512-Sk5xkdRFeE7PeWjG9l4AfTwdvMfr9wHiwNNCpHXT4v4SNyNMKdHGvEILc31BgaVFGDDNbv5u/a73tofRiwbEZw==",
"license": "MIT"
},
"node_modules/@docsearch/react": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.3.tgz",
- "integrity": "sha512-6UNrg88K7lJWmuS6zFPL/xgL+n326qXqZ7Ybyy4E8P/6Rcblk3GE8RXxeol4Pd5pFpKMhOhBhzABKKwHtbJCIg==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.7.0.tgz",
+ "integrity": "sha512-x6oedjJ8O8/pIDBsMo5Orca3/6cQCz616/CwthVe68l43mqnj2lrJ9kFQITBqy8hMsS3nWeBWFoVO5dJ1DCFKA==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-core": "1.17.9",
- "@algolia/autocomplete-preset-algolia": "1.17.9",
- "@docsearch/css": "3.8.3",
- "algoliasearch": "^5.14.2"
+ "@algolia/autocomplete-core": "1.19.2",
+ "@docsearch/core": "4.7.0",
+ "@docsearch/css": "4.7.0"
},
"peerDependencies": {
- "@types/react": ">= 16.8.0 < 19.0.0",
- "react": ">= 16.8.0 < 19.0.0",
- "react-dom": ">= 16.8.0 < 19.0.0",
+ "@types/react": ">= 16.8.0 < 20.0.0",
+ "react": ">= 16.8.0 < 20.0.0",
+ "react-dom": ">= 16.8.0 < 20.0.0",
"search-insights": ">= 1 < 3"
},
"peerDependenciesMeta": {
@@ -3361,36 +3537,42 @@
}
}
},
- "node_modules/@docsly/react": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/@docsly/react/-/react-1.8.6.tgz",
- "integrity": "sha512-FwcVeTYsZnOMIFYgW0R9/0xaWKWfzvW4eKA9QjJApXKbfGFHgzm0tWEmVf9TyZgsA3qoI+0qaUuJ3JlQrdONXg==",
+ "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-core": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz",
+ "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==",
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-plugin-algolia-insights": "1.19.2",
+ "@algolia/autocomplete-shared": "1.19.2"
+ }
+ },
+ "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-plugin-algolia-insights": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz",
+ "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==",
+ "license": "MIT",
"dependencies": {
- "@heroicons/react": "^2.0.18",
- "clsx": "^1.2.1",
- "dayjs": "^1.11.7",
- "react-error-boundary": "^3.1.4",
- "react-hot-toast": "^2.4.0",
- "swr": "^2.1.0"
+ "@algolia/autocomplete-shared": "1.19.2"
},
"peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
+ "search-insights": ">= 1 < 3"
}
},
- "node_modules/@docsly/react/node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-shared": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz",
+ "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==",
"license": "MIT",
- "engines": {
- "node": ">=6"
+ "peerDependencies": {
+ "@algolia/client-search": ">= 4.9.1 < 6",
+ "algoliasearch": ">= 4.9.1 < 6"
}
},
"node_modules/@docusaurus/babel": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.7.0.tgz",
- "integrity": "sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.10.2.tgz",
+ "integrity": "sha512-aJ1hpGyvfkte3dDAfNbWM4biW4yWZBVz7TIGLZP+v+tWOBgxX3e0N5ZIXHIvmfNNXTI77pcHUx3KmtOk05Ze3Q==",
"license": "MIT",
"dependencies": {
"@babel/core": "^7.25.9",
@@ -3401,52 +3583,50 @@
"@babel/preset-react": "^7.25.9",
"@babel/preset-typescript": "^7.25.9",
"@babel/runtime": "^7.25.9",
- "@babel/runtime-corejs3": "^7.25.9",
"@babel/traverse": "^7.25.9",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/utils": "3.7.0",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
"babel-plugin-dynamic-import-node": "^2.3.3",
"fs-extra": "^11.1.1",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
}
},
"node_modules/@docusaurus/bundler": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.7.0.tgz",
- "integrity": "sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.10.2.tgz",
+ "integrity": "sha512-i0ZNcy0f0WhaOlYVgzLsWhIoEXO9kS3HRoKPtgE6vQtZUq7arKZaYdNBudr3mqCmd+TyOkwtwfHgs1ENj07r5g==",
"license": "MIT",
"dependencies": {
"@babel/core": "^7.25.9",
- "@docusaurus/babel": "3.7.0",
- "@docusaurus/cssnano-preset": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
+ "@docusaurus/babel": "3.10.2",
+ "@docusaurus/cssnano-preset": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
"babel-loader": "^9.2.1",
- "clean-css": "^5.3.2",
+ "clean-css": "^5.3.3",
"copy-webpack-plugin": "^11.0.0",
- "css-loader": "^6.8.1",
+ "css-loader": "^6.11.0",
"css-minimizer-webpack-plugin": "^5.0.1",
"cssnano": "^6.1.2",
"file-loader": "^6.2.0",
"html-minifier-terser": "^7.2.0",
- "mini-css-extract-plugin": "^2.9.1",
+ "mini-css-extract-plugin": "^2.9.2",
"null-loader": "^4.0.1",
- "postcss": "^8.4.26",
- "postcss-loader": "^7.3.3",
- "postcss-preset-env": "^10.1.0",
- "react-dev-utils": "^12.0.1",
+ "postcss": "^8.5.4",
+ "postcss-loader": "^7.3.4",
+ "postcss-preset-env": "^10.2.1",
"terser-webpack-plugin": "^5.3.9",
"tslib": "^2.6.0",
"url-loader": "^4.1.1",
"webpack": "^5.95.0",
- "webpackbar": "^6.0.1"
+ "webpackbar": "^7.0.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"@docusaurus/faster": "*"
@@ -3458,18 +3638,18 @@
}
},
"node_modules/@docusaurus/core": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.7.0.tgz",
- "integrity": "sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/babel": "3.7.0",
- "@docusaurus/bundler": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/mdx-loader": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.10.2.tgz",
+ "integrity": "sha512-EYByj6nk+aD9KeVxV6Hmo2/nAAT79P21Y82ycTBOBtrmqilloIbIEhgL2/8Xpt2Jz/pgNqHAwyusOGwmbKeJmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/babel": "3.10.2",
+ "@docusaurus/bundler": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/mdx-loader": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"boxen": "^6.2.1",
"chalk": "^4.1.2",
"chokidar": "^3.5.3",
@@ -3477,45 +3657,51 @@
"combine-promises": "^1.1.0",
"commander": "^5.1.0",
"core-js": "^3.31.1",
- "del": "^6.1.1",
- "detect-port": "^1.5.1",
+ "detect-port": "^2.1.0",
"escape-html": "^1.0.3",
"eta": "^2.2.0",
"eval": "^0.1.8",
+ "execa": "^5.1.1",
"fs-extra": "^11.1.1",
"html-tags": "^3.3.1",
"html-webpack-plugin": "^5.6.0",
"leven": "^3.1.0",
"lodash": "^4.17.21",
+ "open": "^8.4.0",
"p-map": "^4.0.0",
"prompts": "^2.4.2",
- "react-dev-utils": "^12.0.1",
"react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
"react-loadable": "npm:@docusaurus/react-loadable@6.0.0",
- "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+ "react-loadable-ssr-addon-v5-slorber": "^1.0.3",
"react-router": "^5.3.4",
"react-router-config": "^5.1.1",
"react-router-dom": "^5.3.4",
"semver": "^7.5.4",
- "serve-handler": "^6.1.6",
- "shelljs": "^0.8.5",
+ "serve-handler": "^6.1.7",
+ "tinypool": "^1.0.2",
"tslib": "^2.6.0",
"update-notifier": "^6.0.2",
"webpack": "^5.95.0",
"webpack-bundle-analyzer": "^4.10.2",
- "webpack-dev-server": "^4.15.2",
+ "webpack-dev-server": "^5.2.2",
"webpack-merge": "^6.0.1"
},
"bin": {
"docusaurus": "bin/docusaurus.mjs"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
+ "@docusaurus/faster": "*",
"@mdx-js/react": "^3.0.0",
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@docusaurus/faster": {
+ "optional": true
+ }
}
},
"node_modules/@docusaurus/core/node_modules/webpack-merge": {
@@ -3533,303 +3719,108 @@
}
},
"node_modules/@docusaurus/cssnano-preset": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.7.0.tgz",
- "integrity": "sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.2.tgz",
+ "integrity": "sha512-4gCnHRbJLTloiwfvFAa92tgb2gI4KYhvjfQVYnEaiMO/EgvWfCo1LwytHXen+1oZAN0VAlS0JAPxp3MsvKDa3A==",
"license": "MIT",
"dependencies": {
"cssnano-preset-advanced": "^6.1.2",
- "postcss": "^8.4.38",
+ "postcss": "^8.5.4",
"postcss-sort-media-queries": "^5.2.0",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
}
},
"node_modules/@docusaurus/faster": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.7.0.tgz",
- "integrity": "sha512-d+7uyOEs3SBk38i2TL79N6mFaP7J4knc5lPX/W9od+jplXZhnDdl5ZMh2u2Lg7JxGV/l33Bd7h/xwv4mr21zag==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.10.2.tgz",
+ "integrity": "sha512-p/5E5/RyHv+QWusJMPN5i3OMJTqTgkhuwzVbB1AReDWTUHXQCmf5mlTFzGiDrWeQWIDOKsuOPn1jJh0s9LUOHA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/types": "3.7.0",
- "@rspack/core": "1.2.0-alpha.0",
- "@swc/core": "^1.7.39",
- "@swc/html": "^1.7.39",
+ "@docusaurus/types": "3.10.2",
+ "@rspack/core": "^1.7.10",
+ "@swc/core": "^1.15.40",
+ "@swc/html": "^1.15.40",
"browserslist": "^4.24.2",
"lightningcss": "^1.27.0",
+ "semver": "^7.5.4",
"swc-loader": "^0.2.6",
"tslib": "^2.6.0",
"webpack": "^5.95.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"@docusaurus/types": "*"
}
},
- "node_modules/@docusaurus/faster/node_modules/@module-federation/runtime": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.4.tgz",
- "integrity": "sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==",
+ "node_modules/@docusaurus/logger": {
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.10.2.tgz",
+ "integrity": "sha512-gSEwqtPfCAnC3ZSJY6xL7tcIfgg0vFD39jbv93eakuweyvO2864xR0K+kmKwBhkTCtWRNjuGGnb5rdmkD/ndqw==",
"license": "MIT",
"dependencies": {
- "@module-federation/error-codes": "0.8.4",
- "@module-federation/sdk": "0.8.4"
+ "chalk": "^4.1.2",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=20.0"
}
},
- "node_modules/@docusaurus/faster/node_modules/@module-federation/runtime-tools": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.4.tgz",
- "integrity": "sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==",
+ "node_modules/@docusaurus/mdx-loader": {
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.10.2.tgz",
+ "integrity": "sha512-9Fd4V/SFjfrVQ0JH5EN0+iPWyFunvTeQE3gfyFeetqPaXMP0OylIjOw16dCuXG4NZJrYdBqwzjh18/h3gRi47w==",
"license": "MIT",
"dependencies": {
- "@module-federation/runtime": "0.8.4",
- "@module-federation/webpack-bundler-runtime": "0.8.4"
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
+ "@mdx-js/mdx": "^3.0.0",
+ "@slorber/remark-comment": "^1.0.0",
+ "escape-html": "^1.0.3",
+ "estree-util-value-to-estree": "^3.0.1",
+ "file-loader": "^6.2.0",
+ "fs-extra": "^11.1.1",
+ "image-size": "^2.0.2",
+ "mdast-util-mdx": "^3.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "rehype-raw": "^7.0.0",
+ "remark-directive": "^3.0.0",
+ "remark-emoji": "^4.0.0",
+ "remark-frontmatter": "^5.0.0",
+ "remark-gfm": "^4.0.0",
+ "stringify-object": "^3.3.0",
+ "tslib": "^2.6.0",
+ "unified": "^11.0.3",
+ "unist-util-visit": "^5.0.0",
+ "url-loader": "^4.1.1",
+ "vfile": "^6.0.1",
+ "webpack": "^5.88.1"
+ },
+ "engines": {
+ "node": ">=20.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
- "node_modules/@docusaurus/faster/node_modules/@module-federation/sdk": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.4.tgz",
- "integrity": "sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==",
+ "node_modules/@docusaurus/module-type-aliases": {
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.2.tgz",
+ "integrity": "sha512-h/I5e4jaAhDHW4vaLENi1i2hnOEnXY1t9R+nnRTbgUl7ymVRzN/HF7dDfj8rKYGj8gfIge+Ef+iYRAMtbGvsrQ==",
"license": "MIT",
"dependencies": {
- "isomorphic-rslog": "0.0.6"
- }
- },
- "node_modules/@docusaurus/faster/node_modules/@module-federation/webpack-bundler-runtime": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.4.tgz",
- "integrity": "sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==",
- "license": "MIT",
- "dependencies": {
- "@module-federation/runtime": "0.8.4",
- "@module-federation/sdk": "0.8.4"
- }
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.2.0-alpha.0.tgz",
- "integrity": "sha512-rtmDScjtGUxv1zA1m3jXecuX2LsgNp4aWaAjOowHasoO1YqfHK0fMyprCiPowTjoHtpZ7Xt/tnMhii0GlGIITQ==",
- "license": "MIT",
- "optionalDependencies": {
- "@rspack/binding-darwin-arm64": "1.2.0-alpha.0",
- "@rspack/binding-darwin-x64": "1.2.0-alpha.0",
- "@rspack/binding-linux-arm64-gnu": "1.2.0-alpha.0",
- "@rspack/binding-linux-arm64-musl": "1.2.0-alpha.0",
- "@rspack/binding-linux-x64-gnu": "1.2.0-alpha.0",
- "@rspack/binding-linux-x64-musl": "1.2.0-alpha.0",
- "@rspack/binding-win32-arm64-msvc": "1.2.0-alpha.0",
- "@rspack/binding-win32-ia32-msvc": "1.2.0-alpha.0",
- "@rspack/binding-win32-x64-msvc": "1.2.0-alpha.0"
- }
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-darwin-arm64": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.2.0-alpha.0.tgz",
- "integrity": "sha512-EPprIe6BrkJ9XuWL5HBXJFaH4vvt5C2kBTvyu+t5E3wacyH9A0gIDaMOEmH30Kt3zl4B07OCBC1nCiJ1sTtimw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-darwin-x64": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.2.0-alpha.0.tgz",
- "integrity": "sha512-ACwdgWg0V9j0o3gs1wvhqRJ4xui82L+Fii9Fa74az7P974iWO0ZHw4QIUaO5r434+v9OWMqpyBRN1M7cBrx3GA==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-linux-arm64-gnu": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.0-alpha.0.tgz",
- "integrity": "sha512-Ex9SviDikz9E36R4I5si/626FsYOJ35l1Lb+DCRUijjjsvoq4k8Shi8csyBfubR+JZ1M0uOXjJftu1Gm5z8Q0Q==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-linux-arm64-musl": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.0-alpha.0.tgz",
- "integrity": "sha512-U320xZmTcTwQ0BR8yIzE1L4olMCqzYkT3VFjXPR6iok/Mj0xjfk/SiKhLoZml473qQrHSGaFJ321cp02zgTFJg==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-linux-x64-gnu": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.0-alpha.0.tgz",
- "integrity": "sha512-GNur7VXJ29NtJhY8PYgv3Fv1Zxbx0XZhDUj/+7Wp40CAXRFsLgXScZIRh2U30TECYaihboZ7BD+xugv8MQPDoA==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-linux-x64-musl": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.0-alpha.0.tgz",
- "integrity": "sha512-0IdswzpG9+sgxvGu7KTwSeqfV0hvciaHMoZvGklfZa2txpcUqAg4ASp7uxrNaUo+G2a1fTUMOtP9351Cnl8DBg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-win32-arm64-msvc": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.0-alpha.0.tgz",
- "integrity": "sha512-FcFgoWGjSrCfJwDZY5bDA2aO02l5BP7qdyW6ehjwBiMxNZyeSbGvKz3jXl5TtTHR1IgdLzi9kEJkTPYLLMiE1A==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-win32-ia32-msvc": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.2.0-alpha.0.tgz",
- "integrity": "sha512-cZYFJw6DKCaPPz9VDJPndZ9KSp+/eedgt11Mv8OTpq+MJTUjB2HjtcjqJh8xxVcp3IuwvSMndTkC69WWt/4feA==",
- "cpu": [
- "ia32"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/binding-win32-x64-msvc": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.0-alpha.0.tgz",
- "integrity": "sha512-gfOqb/rq5716NV+Vbk5MteBhV4VhJeSoh2+dRQjdy4EN1wPZ+Uebs9ORVrT9uRjY3JrPn/5PkAHJXtgaOA9Uyg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@docusaurus/faster/node_modules/@rspack/core": {
- "version": "1.2.0-alpha.0",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.2.0-alpha.0.tgz",
- "integrity": "sha512-YiD0vFDj+PfHs3ZqJwPNhTYyVTb4xR6FpOI5WJ4jJHV4lgdErS+RChTCPhf1xeqxfuTSSnFA7UeqosLhBuNSqQ==",
- "license": "MIT",
- "dependencies": {
- "@module-federation/runtime-tools": "0.8.4",
- "@rspack/binding": "1.2.0-alpha.0",
- "@rspack/lite-tapable": "1.0.1",
- "caniuse-lite": "^1.0.30001616"
- },
- "engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "@swc/helpers": ">=0.5.1"
- },
- "peerDependenciesMeta": {
- "@swc/helpers": {
- "optional": true
- }
- }
- },
- "node_modules/@docusaurus/logger": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.7.0.tgz",
- "integrity": "sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA==",
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.2",
- "tslib": "^2.6.0"
- },
- "engines": {
- "node": ">=18.0"
- }
- },
- "node_modules/@docusaurus/mdx-loader": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.7.0.tgz",
- "integrity": "sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
- "@mdx-js/mdx": "^3.0.0",
- "@slorber/remark-comment": "^1.0.0",
- "escape-html": "^1.0.3",
- "estree-util-value-to-estree": "^3.0.1",
- "file-loader": "^6.2.0",
- "fs-extra": "^11.1.1",
- "image-size": "^1.0.2",
- "mdast-util-mdx": "^3.0.0",
- "mdast-util-to-string": "^4.0.0",
- "rehype-raw": "^7.0.0",
- "remark-directive": "^3.0.0",
- "remark-emoji": "^4.0.0",
- "remark-frontmatter": "^5.0.0",
- "remark-gfm": "^4.0.0",
- "stringify-object": "^3.3.0",
- "tslib": "^2.6.0",
- "unified": "^11.0.3",
- "unist-util-visit": "^5.0.0",
- "url-loader": "^4.1.1",
- "vfile": "^6.0.1",
- "webpack": "^5.88.1"
- },
- "engines": {
- "node": ">=18.0"
- },
- "peerDependencies": {
- "react": "^18.0.0 || ^19.0.0",
- "react-dom": "^18.0.0 || ^19.0.0"
- }
- },
- "node_modules/@docusaurus/module-type-aliases": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.7.0.tgz",
- "integrity": "sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/types": "3.7.0",
+ "@docusaurus/types": "3.10.2",
"@types/history": "^4.7.11",
"@types/react": "*",
"@types/react-router-config": "*",
"@types/react-router-dom": "*",
- "react-helmet-async": "npm:@slorber/react-helmet-async@*",
+ "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
"react-loadable": "npm:@docusaurus/react-loadable@6.0.0"
},
"peerDependencies": {
@@ -3838,23 +3829,23 @@
}
},
"node_modules/@docusaurus/plugin-client-redirects": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.7.0.tgz",
- "integrity": "sha512-6B4XAtE5ZVKOyhPgpgMkb7LwCkN+Hgd4vOnlbwR8nCdTQhLjz8MHbGlwwvZ/cay2SPNRX5KssqKAlcHVZP2m8g==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.10.2.tgz",
+ "integrity": "sha512-z5I5ttCXw+8y2gHVZvqAMmUw4Rb0ZzKA5eCPk87SfM/jCKOTvE24yDpPAwwipvug96ij7mOwEHXWw8G4LlWdGA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"eta": "^2.2.0",
"fs-extra": "^11.1.1",
"lodash": "^4.17.21",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -3862,24 +3853,25 @@
}
},
"node_modules/@docusaurus/plugin-content-blog": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz",
- "integrity": "sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/mdx-loader": "3.7.0",
- "@docusaurus/theme-common": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.10.2.tgz",
+ "integrity": "sha512-0cbEnNKf0InmLkhj/+nVRmqEnWEoOE8Mh+2x1qOXI0qYpCnphq4RXknVJ8BvybKRXqYVvbmdMfiJSup+k4tm5w==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/mdx-loader": "3.10.2",
+ "@docusaurus/theme-common": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"cheerio": "1.0.0-rc.12",
+ "combine-promises": "^1.1.0",
"feed": "^4.2.2",
"fs-extra": "^11.1.1",
"lodash": "^4.17.21",
- "reading-time": "^1.5.0",
+ "schema-dts": "^1.1.2",
"srcset": "^4.0.0",
"tslib": "^2.6.0",
"unist-util-visit": "^5.0.0",
@@ -3887,7 +3879,7 @@
"webpack": "^5.88.1"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"@docusaurus/plugin-content-docs": "*",
@@ -3896,31 +3888,32 @@
}
},
"node_modules/@docusaurus/plugin-content-docs": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz",
- "integrity": "sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/mdx-loader": "3.7.0",
- "@docusaurus/module-type-aliases": "3.7.0",
- "@docusaurus/theme-common": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.2.tgz",
+ "integrity": "sha512-Sqwl4FPoZBDrlY8I2VU2H8O0M91CHp9T8ToMSkTZmjvHCif+1laqfXi6sTk8IfyVS/trN5yNjcWd1bFsGB6W5Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/mdx-loader": "3.10.2",
+ "@docusaurus/module-type-aliases": "3.10.2",
+ "@docusaurus/theme-common": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"@types/react-router-config": "^5.0.7",
"combine-promises": "^1.1.0",
"fs-extra": "^11.1.1",
"js-yaml": "^4.1.0",
"lodash": "^4.17.21",
+ "schema-dts": "^1.1.2",
"tslib": "^2.6.0",
"utility-types": "^3.10.0",
"webpack": "^5.88.1"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -3928,43 +3921,59 @@
}
},
"node_modules/@docusaurus/plugin-content-pages": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.7.0.tgz",
- "integrity": "sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.2.tgz",
+ "integrity": "sha512-h5R12sZ/vV9EPiVjvIl9YFCOwkpwXes7dQMYt3EvP6Pphu4amHxxTqWxf08Fl5DR8h+oZMbWpFTNw5vKEYfvzQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/mdx-loader": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/mdx-loader": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"fs-extra": "^11.1.1",
"tslib": "^2.6.0",
"webpack": "^5.88.1"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0"
}
},
+ "node_modules/@docusaurus/plugin-css-cascade-layers": {
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.2.tgz",
+ "integrity": "sha512-UkdvQby5OQUKWrw3lLnSTJXQ6VETaUVTuPQX9AABtmFm5h+ifEBx1OQ+LN726Q4byuwBf2ElHkf4qU4hTxdvRg==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=20.0"
+ }
+ },
"node_modules/@docusaurus/plugin-debug": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.7.0.tgz",
- "integrity": "sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.10.2.tgz",
+ "integrity": "sha512-8vbZNOSCpnsT57EY6CgN7sgRVmx3KTYwO8Uvo2pbxOyb8tbqAwtT9SslqaQ41HbA1v1hpn5RP7u5s2KvRwAFpQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
"fs-extra": "^11.1.1",
- "react-json-view-lite": "^1.2.0",
+ "react-json-view-lite": "^2.3.0",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -3972,18 +3981,18 @@
}
},
"node_modules/@docusaurus/plugin-google-analytics": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.7.0.tgz",
- "integrity": "sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.2.tgz",
+ "integrity": "sha512-kMHMBK9j4VAtgd5owwrRLRIi0EjkrpXlX7ePj1+y68XfVZV9I1T4S+koPDm+Hfw2TtnyHvh0uNrDvjz+DjQGVA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -3991,19 +4000,18 @@
}
},
"node_modules/@docusaurus/plugin-google-gtag": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.7.0.tgz",
- "integrity": "sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.2.tgz",
+ "integrity": "sha512-Vt90nNFhtAChRe9+it1hcHFgFvETdSnOkL5Bma+p6E/yU2tAYrvvyk+gv+LJGM2ZUkyKuKXLRsZ2Lb0bO7+Vog==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
- "@types/gtag.js": "^0.0.12",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4011,18 +4019,18 @@
}
},
"node_modules/@docusaurus/plugin-google-tag-manager": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.7.0.tgz",
- "integrity": "sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.2.tgz",
+ "integrity": "sha512-MLCffCldysi/R0nzJQP7ZWd0xAoGNnSTiVOo6TTR6mKVGFhE+/XArGe67ZcaZv1uytgQXoXs92VJrgVDrz80rQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4030,23 +4038,23 @@
}
},
"node_modules/@docusaurus/plugin-sitemap": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.7.0.tgz",
- "integrity": "sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.2.tgz",
+ "integrity": "sha512-PODkwg5XetLML3hU/3xpCKJUZ9cqExLaBnD/Fzzwj2VHogLeqnDisLIujae87zuze7T4mCm2A6KEqZkyiz07EQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"fs-extra": "^11.1.1",
"sitemap": "^7.1.1",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4054,22 +4062,22 @@
}
},
"node_modules/@docusaurus/plugin-svgr": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.7.0.tgz",
- "integrity": "sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.2.tgz",
+ "integrity": "sha512-JgfT3jWM0TJ8Uw0cEcqxHpybngQY1vlBYpuuNO+gEh5iPh5Ar+vxq/u9CFrYsWeXy48BN7Db76Pzp2edNXUQ8A==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"@svgr/core": "8.1.0",
"@svgr/webpack": "^8.1.0",
"tslib": "^2.6.0",
"webpack": "^5.88.1"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4077,28 +4085,29 @@
}
},
"node_modules/@docusaurus/preset-classic": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.7.0.tgz",
- "integrity": "sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/plugin-content-blog": "3.7.0",
- "@docusaurus/plugin-content-docs": "3.7.0",
- "@docusaurus/plugin-content-pages": "3.7.0",
- "@docusaurus/plugin-debug": "3.7.0",
- "@docusaurus/plugin-google-analytics": "3.7.0",
- "@docusaurus/plugin-google-gtag": "3.7.0",
- "@docusaurus/plugin-google-tag-manager": "3.7.0",
- "@docusaurus/plugin-sitemap": "3.7.0",
- "@docusaurus/plugin-svgr": "3.7.0",
- "@docusaurus/theme-classic": "3.7.0",
- "@docusaurus/theme-common": "3.7.0",
- "@docusaurus/theme-search-algolia": "3.7.0",
- "@docusaurus/types": "3.7.0"
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.10.2.tgz",
+ "integrity": "sha512-a4B3VczmDl99zK0EufDQYomdJ186WDingjmDXxhN2PNPS9Ty/Y2M5CLFX1KQMRKqRTLiRDKfutzG5IY1FC/ceg==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/plugin-content-blog": "3.10.2",
+ "@docusaurus/plugin-content-docs": "3.10.2",
+ "@docusaurus/plugin-content-pages": "3.10.2",
+ "@docusaurus/plugin-css-cascade-layers": "3.10.2",
+ "@docusaurus/plugin-debug": "3.10.2",
+ "@docusaurus/plugin-google-analytics": "3.10.2",
+ "@docusaurus/plugin-google-gtag": "3.10.2",
+ "@docusaurus/plugin-google-tag-manager": "3.10.2",
+ "@docusaurus/plugin-sitemap": "3.10.2",
+ "@docusaurus/plugin-svgr": "3.10.2",
+ "@docusaurus/theme-classic": "3.10.2",
+ "@docusaurus/theme-common": "3.10.2",
+ "@docusaurus/theme-search-algolia": "3.10.2",
+ "@docusaurus/types": "3.10.2"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4106,9 +4115,9 @@
}
},
"node_modules/@docusaurus/remark-plugin-npm2yarn": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-3.7.0.tgz",
- "integrity": "sha512-2QkZh75vZzPefW5Ljt8gwc1i0ERuS0MRZTEwHsSXSi6vc2NpLVbcmfIuHhwR8o0PcGVTxmBEhQRP0NN1vHdOAA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-3.10.2.tgz",
+ "integrity": "sha512-kZOKG/77nHNJOcMUvb4KaI+fnVk95xeiyLjpO8D7N2fk+BlRPq98L/EAHzojNWVs/7Vquh+dT91WKvXJDMkEJA==",
"license": "MIT",
"dependencies": {
"mdast-util-mdx": "^3.0.0",
@@ -4118,35 +4127,35 @@
"unist-util-visit": "^5.0.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
}
},
"node_modules/@docusaurus/theme-classic": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.7.0.tgz",
- "integrity": "sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ==",
- "license": "MIT",
- "dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/mdx-loader": "3.7.0",
- "@docusaurus/module-type-aliases": "3.7.0",
- "@docusaurus/plugin-content-blog": "3.7.0",
- "@docusaurus/plugin-content-docs": "3.7.0",
- "@docusaurus/plugin-content-pages": "3.7.0",
- "@docusaurus/theme-common": "3.7.0",
- "@docusaurus/theme-translations": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.10.2.tgz",
+ "integrity": "sha512-JqTSLQmqmA9uKWZsD5iwBGJ4JyKB4/yTw6PsSXVPRJG/6GAm/u+add9Iip+hvwP12/AnPNztrdxsI14NJW4KeA==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/mdx-loader": "3.10.2",
+ "@docusaurus/module-type-aliases": "3.10.2",
+ "@docusaurus/plugin-content-blog": "3.10.2",
+ "@docusaurus/plugin-content-docs": "3.10.2",
+ "@docusaurus/plugin-content-pages": "3.10.2",
+ "@docusaurus/theme-common": "3.10.2",
+ "@docusaurus/theme-translations": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"copy-text-to-clipboard": "^3.2.0",
"infima": "0.2.0-alpha.45",
"lodash": "^4.17.21",
"nprogress": "^0.2.0",
- "postcss": "^8.4.26",
+ "postcss": "^8.5.4",
"prism-react-renderer": "^2.3.0",
"prismjs": "^1.29.0",
"react-router-dom": "^5.3.4",
@@ -4155,7 +4164,7 @@
"utility-types": "^3.10.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4163,15 +4172,15 @@
}
},
"node_modules/@docusaurus/theme-common": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.7.0.tgz",
- "integrity": "sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.10.2.tgz",
+ "integrity": "sha512-R9b/vMpK1yye6hNZTA6x/ivRv+at6GhxnXcxkpzCGzO1R1RwiquqiFg2wMFh6aqlJTpWRFKpFD2TzCDQcyOU0A==",
"license": "MIT",
"dependencies": {
- "@docusaurus/mdx-loader": "3.7.0",
- "@docusaurus/module-type-aliases": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
+ "@docusaurus/mdx-loader": "3.10.2",
+ "@docusaurus/module-type-aliases": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
"@types/history": "^4.7.11",
"@types/react": "*",
"@types/react-router-config": "*",
@@ -4182,7 +4191,7 @@
"utility-types": "^3.10.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"@docusaurus/plugin-content-docs": "*",
@@ -4191,15 +4200,15 @@
}
},
"node_modules/@docusaurus/theme-live-codeblock": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-3.7.0.tgz",
- "integrity": "sha512-peLs77sk+TuHjAnhyhT8IH3Qsr/zewpwHg5A4EOe/8K4Lj2T8fhro1/Dj66FS8784wwAoxhy5A9Ux9Rsp8h87w==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-3.10.2.tgz",
+ "integrity": "sha512-rBWmjCFaInkWENi4EjHX4lgwN6uBfVurN8SdK0evZ5LwjIiAdVRTRkmnWNPswiud3UfdSeNalaLQl62Ks9d+pA==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/theme-common": "3.7.0",
- "@docusaurus/theme-translations": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/theme-common": "3.10.2",
+ "@docusaurus/theme-translations": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
"@philpl/buble": "^0.19.7",
"clsx": "^2.0.0",
"fs-extra": "^11.1.1",
@@ -4207,7 +4216,7 @@
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4215,43 +4224,50 @@
}
},
"node_modules/@docusaurus/theme-mermaid": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.7.0.tgz",
- "integrity": "sha512-7kNDvL7hm+tshjxSxIqYMtsLUPsEBYnkevej/ext6ru9xyLgCed+zkvTfGzTWNeq8rJIEe2YSS8/OV5gCVaPCw==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.10.2.tgz",
+ "integrity": "sha512-Stssh5MYQJ+EdYugUXf+ZcpeJFQPKXf0KCd/SWp10o3CmXNaOoh5IEgVjVqY1e1XhQf3on4+Y4BnrMiD95E2SQ==",
"license": "MIT",
"dependencies": {
- "@docusaurus/core": "3.7.0",
- "@docusaurus/module-type-aliases": "3.7.0",
- "@docusaurus/theme-common": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
- "mermaid": ">=10.4",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/module-type-aliases": "3.10.2",
+ "@docusaurus/theme-common": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
+ "mermaid": ">=11.6.0",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
+ "@mermaid-js/layout-elk": "^0.1.9",
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@mermaid-js/layout-elk": {
+ "optional": true
+ }
}
},
"node_modules/@docusaurus/theme-search-algolia": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.7.0.tgz",
- "integrity": "sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g==",
- "license": "MIT",
- "dependencies": {
- "@docsearch/react": "^3.8.1",
- "@docusaurus/core": "3.7.0",
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/plugin-content-docs": "3.7.0",
- "@docusaurus/theme-common": "3.7.0",
- "@docusaurus/theme-translations": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-validation": "3.7.0",
- "algoliasearch": "^5.17.1",
- "algoliasearch-helper": "^3.22.6",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.2.tgz",
+ "integrity": "sha512-1msxllyhi/5m77JukXtp5UFnUAriwZIC1oJ7MTnpQpCwLTbclJi5BK5n28CTZuSXpQN2ewbbnqRgAhMM6c6ihg==",
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-core": "^1.19.2",
+ "@docsearch/react": "^3.9.0 || ^4.3.2",
+ "@docusaurus/core": "3.10.2",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/plugin-content-docs": "3.10.2",
+ "@docusaurus/theme-common": "3.10.2",
+ "@docusaurus/theme-translations": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-validation": "3.10.2",
+ "algoliasearch": "^5.37.0",
+ "algoliasearch-helper": "^3.26.0",
"clsx": "^2.0.0",
"eta": "^2.2.0",
"fs-extra": "^11.1.1",
@@ -4260,7 +4276,7 @@
"utility-types": "^3.10.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
@@ -4268,33 +4284,34 @@
}
},
"node_modules/@docusaurus/theme-translations": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.7.0.tgz",
- "integrity": "sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.10.2.tgz",
+ "integrity": "sha512-iv20wrxnyXkY89LM3TzRlzGlt5fIGO5UnaR6UL1ZVfB9RRFjxQFQ6awDrwAc6Km8Y5gD8pInuwYPF+6/TiCxXA==",
"license": "MIT",
"dependencies": {
"fs-extra": "^11.1.1",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
}
},
"node_modules/@docusaurus/tsconfig": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.7.0.tgz",
- "integrity": "sha512-vRsyj3yUZCjscgfgcFYjIsTcAru/4h4YH2/XAE8Rs7wWdnng98PgWKvP5ovVc4rmRpRg2WChVW0uOy2xHDvDBQ==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.10.2.tgz",
+ "integrity": "sha512-5GiB7h/nFsMFPO9mCqcRNE1yA5TSXXNCshNIgHPL6fCPOjcTDixs6qjQBu8ddkgPcicwCvOA7n3jeK2rGdJk6g==",
"dev": true,
"license": "MIT"
},
"node_modules/@docusaurus/types": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz",
- "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.2.tgz",
+ "integrity": "sha512-B6rvfwIFSapUqUJjMriZswX13K8l5Z7AcmVE6uTEJpYddQieSTR12DsGaFtcZAIDsQd4p+0WTl0Vc6jmZK0Trw==",
"license": "MIT",
"dependencies": {
"@mdx-js/mdx": "^3.0.0",
"@types/history": "^4.7.11",
+ "@types/mdast": "^4.0.2",
"@types/react": "*",
"commander": "^5.1.0",
"joi": "^17.9.2",
@@ -4308,59 +4325,69 @@
"react-dom": "^18.0.0 || ^19.0.0"
}
},
+ "node_modules/@docusaurus/types/node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
"node_modules/@docusaurus/utils": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.7.0.tgz",
- "integrity": "sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.10.2.tgz",
+ "integrity": "sha512-xx0W3eav2uW1NRIpuHJWNwLTC15xPNjU4Uxi9NSnd3swYC96BE3vFiT93SD8s24kmAAWNwgZwfZ2fghGZ01Lcw==",
"license": "MIT",
"dependencies": {
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/types": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
+ "@11ty/gray-matter": "^1.0.0",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/types": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
"escape-string-regexp": "^4.0.0",
+ "execa": "^5.1.1",
"file-loader": "^6.2.0",
"fs-extra": "^11.1.1",
"github-slugger": "^1.5.0",
"globby": "^11.1.0",
- "gray-matter": "^4.0.3",
"jiti": "^1.20.0",
"js-yaml": "^4.1.0",
"lodash": "^4.17.21",
"micromatch": "^4.0.5",
+ "p-queue": "^6.6.2",
"prompts": "^2.4.2",
"resolve-pathname": "^3.0.0",
- "shelljs": "^0.8.5",
"tslib": "^2.6.0",
"url-loader": "^4.1.1",
"utility-types": "^3.10.0",
"webpack": "^5.88.1"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
}
},
"node_modules/@docusaurus/utils-common": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.7.0.tgz",
- "integrity": "sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.10.2.tgz",
+ "integrity": "sha512-x3Dz6jv6iQKBNjBmVTu8p57abMp/VNTUgKBMgRVXJc5444orBTsArv0+cdfrXTiz/VMmHfDRVkPbL7GH2B7T7w==",
"license": "MIT",
"dependencies": {
- "@docusaurus/types": "3.7.0",
+ "@docusaurus/types": "3.10.2",
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
}
},
"node_modules/@docusaurus/utils-validation": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.7.0.tgz",
- "integrity": "sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA==",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.10.2.tgz",
+ "integrity": "sha512-sn8unbDfUL585NtR3cwHefPicOyaHvPaX7VD0aOg/siIxUBoKyKKaGEqzJZDS64mM43TnxurkYDtmB1wsJlZsw==",
"license": "MIT",
"dependencies": {
- "@docusaurus/logger": "3.7.0",
- "@docusaurus/utils": "3.7.0",
- "@docusaurus/utils-common": "3.7.0",
+ "@docusaurus/logger": "3.10.2",
+ "@docusaurus/utils": "3.10.2",
+ "@docusaurus/utils-common": "3.10.2",
"fs-extra": "^11.2.0",
"joi": "^17.9.2",
"js-yaml": "^4.1.0",
@@ -4368,4281 +4395,2771 @@
"tslib": "^2.6.0"
},
"engines": {
- "node": ">=18.0"
+ "node": ">=20.0"
}
},
- "node_modules/@dyteinternals/awaitqueue": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@dyteinternals/awaitqueue/-/awaitqueue-3.0.1.tgz",
- "integrity": "sha512-KooI+0lfAu13gUMuVtYlW//ti6MEvhqU8PP3jCXFqU2FSETOKHdtpBfHmBCE/Ass6+EStsDiVKLyh5XHNh+hsg==",
+ "node_modules/@emnapi/core": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz",
+ "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">=14"
+ "@emnapi/wasi-threads": "1.2.3",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@dyteinternals/mediasoup-client": {
- "version": "3.6.89",
- "resolved": "https://registry.npmjs.org/@dyteinternals/mediasoup-client/-/mediasoup-client-3.6.89.tgz",
- "integrity": "sha512-T9tKCr3u9W2k7zqUTR9TeJalHm9SAzTRoDXGku/oj1apHUcjdALRKd8VhY03DrtoLQKjT8/L8cwV4Q0J3ViJUw==",
+ "node_modules/@emnapi/runtime": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
+ "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@dyteinternals/awaitqueue": "^3.0.1",
- "@types/debug": "^4.1.7",
- "bowser": "^2.11.0",
- "debug": "^4.3.4",
- "events": "^3.3.0",
- "h264-profile-level-id": "^1.0.1",
- "queue-microtask": "^1.2.3",
- "sdp-transform": "^2.14.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mediasoup"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@dyteinternals/utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@dyteinternals/utils/-/utils-2.1.0.tgz",
- "integrity": "sha512-oa05pVL82AZkElM4AxIT8ub+6Gzq+gqtE+PLUsulZLOCiIpQ6GYNwE/p721DpsAvTwSnHeqvBGE5Y2vrTKatJA==",
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz",
+ "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "axios": "^0.25.0",
- "lodash-es": "^4.17.21"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@dytesdk/docs-ai-react": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@dytesdk/docs-ai-react/-/docs-ai-react-2.0.1.tgz",
- "integrity": "sha512-0OAIrHKNmhbh8DYjaLMHGNSxf11JrkHRyBVxESRPOBV3alJPXsEJmLGIlWEcV/IwrzwIGdiz08/vwAjtqRNkKw==",
- "dependencies": {
- "@headlessui/react": "^1.7.14",
- "react-markdown": "^8.0.7",
- "remark-gfm": "^3.0.1"
- },
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-dom": ">=16.8.6"
- }
+ "node_modules/@emotion/hash": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/escape-string-regexp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+ "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-find-and-replace": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz",
- "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==",
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
"dependencies": {
- "@types/mdast": "^3.0.0",
- "escape-string-regexp": "^5.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.0.0"
+ "eslint-visitor-keys": "^3.3.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-from-markdown": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
- "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "mdast-util-to-string": "^3.1.0",
- "micromark": "^3.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.1.tgz",
+ "integrity": "sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-gfm": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz",
- "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==",
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz",
+ "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==",
+ "dev": true,
"dependencies": {
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-gfm-autolink-literal": "^1.0.0",
- "mdast-util-gfm-footnote": "^1.0.0",
- "mdast-util-gfm-strikethrough": "^1.0.0",
- "mdast-util-gfm-table": "^1.0.0",
- "mdast-util-gfm-task-list-item": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.5.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-gfm-autolink-literal": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz",
- "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==",
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "dev": true,
"dependencies": {
- "@types/mdast": "^3.0.0",
- "ccount": "^2.0.0",
- "mdast-util-find-and-replace": "^2.0.0",
- "micromark-util-character": "^1.0.0"
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-gfm-strikethrough": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz",
- "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0"
+ "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-gfm-table": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz",
- "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==",
+ "node_modules/@eslint/js": {
+ "version": "8.36.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz",
+ "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@exodus/schemasafe": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz",
+ "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==",
+ "license": "MIT"
+ },
+ "node_modules/@faker-js/faker": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz",
+ "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==",
+ "deprecated": "Please update to a newer version.",
+ "license": "MIT"
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz",
+ "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "markdown-table": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-to-markdown": "^1.3.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@floating-ui/utils": "^0.2.9"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-gfm-task-list-item": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz",
- "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==",
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.13",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz",
+ "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.9"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-to-markdown": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz",
- "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==",
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
+ "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^3.0.0",
- "mdast-util-to-string": "^3.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "unist-util-visit": "^4.0.0",
- "zwitch": "^2.0.0"
+ "@floating-ui/dom": "^1.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz",
+ "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==",
+ "license": "MIT"
+ },
+ "node_modules/@fluentui/react-icons": {
+ "version": "2.0.271",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.271.tgz",
+ "integrity": "sha512-I5rFvmZTzf1OQduU5Lal8yNMFcjCsfLnFDEwYjpwTdcyAPoIY2MTZMb4hCbGoohAreQL4cbItkWugxZc7N1wdw==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0"
+ "@griffel/react": "^1.0.0",
+ "tslib": "^2.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "react": ">=16.8.0 <19.0.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/micromark": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
- "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
+ "node_modules/@griffel/core": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.12.2.tgz",
+ "integrity": "sha512-+bvOWh0cCtB0S92a5VD4C00DBjx8qB+5ZBTb4WTj9ZhUP10wVLjLaoLdBPw7vdqnnaT1VzLZV4e9ye8OQjHKLA==",
"dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "micromark-core-commonmark": "^1.0.1",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
+ "@emotion/hash": "^0.9.0",
+ "csstype": "^3.1.2",
+ "rtl-css-js": "^1.16.1",
+ "stylis": "^4.2.0",
+ "tslib": "^2.1.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/micromark-extension-gfm": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz",
- "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==",
- "dependencies": {
- "micromark-extension-gfm-autolink-literal": "^1.0.0",
- "micromark-extension-gfm-footnote": "^1.0.0",
- "micromark-extension-gfm-strikethrough": "^1.0.0",
- "micromark-extension-gfm-table": "^1.0.0",
- "micromark-extension-gfm-tagfilter": "^1.0.0",
- "micromark-extension-gfm-task-list-item": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-types": "^1.0.0"
+ "node_modules/@griffel/react": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.10.tgz",
+ "integrity": "sha512-3V8PUCapgifoGqwbTBs/PR0MHgCt+PkfDmTTv4Ctfg0Pxrj8wSRWMourvlwLHJqqd9NPNxiklZlrDG+ELS6Zxg==",
+ "dependencies": {
+ "@griffel/core": "^1.12.2",
+ "tslib": "^2.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "react": ">=16.8.0 <19.0.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/micromark-extension-gfm-autolink-literal": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz",
- "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==",
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
+ "node_modules/@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
+ "license": "BSD-3-Clause"
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/micromark-extension-gfm-strikethrough": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz",
- "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==",
+ "node_modules/@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-classify-character": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@hapi/hoek": "^9.0.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/micromark-extension-gfm-table": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz",
- "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==",
+ "node_modules/@headlessui/react": {
+ "version": "1.7.18",
+ "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.18.tgz",
+ "integrity": "sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==",
"dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
+ "@tanstack/react-virtual": "^3.0.0-beta.60",
+ "client-only": "^0.0.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@dytesdk/docs-ai-react/node_modules/micromark-extension-gfm-tagfilter": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz",
- "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==",
- "dependencies": {
- "micromark-util-types": "^1.0.0"
+ "engines": {
+ "node": ">=10"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "react": "^16 || ^17 || ^18",
+ "react-dom": "^16 || ^17 || ^18"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/micromark-extension-gfm-task-list-item": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz",
- "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==",
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "node_modules/@hookform/error-message": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@hookform/error-message/-/error-message-2.0.1.tgz",
+ "integrity": "sha512-U410sAr92xgxT1idlu9WWOVjndxLdgPUHEB8Schr27C9eh7/xUnITWpCMF93s+lGiG++D4JnbSnrb5A21AdSNg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0",
+ "react-hook-form": "^7.0.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/remark-gfm": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz",
- "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==",
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.8",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
+ "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
+ "dev": true,
"dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-gfm": "^2.0.0",
- "micromark-extension-gfm": "^2.0.0",
- "unified": "^10.0.0"
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=10.10.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "node_modules/@iconify/types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
+ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
+ "license": "MIT"
+ },
+ "node_modules/@iconify/utils": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.4.tgz",
+ "integrity": "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@antfu/install-pkg": "^1.1.0",
+ "@iconify/types": "^2.0.0",
+ "import-meta-resolve": "^4.2.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "engines": {
+ "node": ">=12"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/vfile": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
+ "@sinclair/typebox": "^0.27.8"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@dytesdk/docs-ai-react/node_modules/vfile-message": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@dytesdk/react-ui-kit": {
- "version": "1.66.0",
- "resolved": "https://registry.npmjs.org/@dytesdk/react-ui-kit/-/react-ui-kit-1.66.0.tgz",
- "integrity": "sha512-MGHXLq9yI+DKk/vVJDXw+sMSZIpbYuc0l0N6MRTLNM4Qr+PdrDsy473N0iKccV4UXbfdQybAzPaDx5gy6JdxdA==",
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
"dependencies": {
- "@dytesdk/ui-kit": "1.66.0"
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
},
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-dom": ">=16.8.6"
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@dytesdk/react-web-core": {
- "version": "1.36.4-stripped.1",
- "resolved": "file:modules/dytesdk-react-web-core-1.36.4-stripped.1.tgz",
- "integrity": "sha512-E7J43YDUAb4NrTRb3qKmOGrvTzO84UgiwUWBsjW9IUBr5ccnePD+s+B/mqPJIYYwQuu33n1pcxsIZa5Fh4hNgA==",
- "license": "UNLICENSED",
- "peerDependencies": {
- "@dytesdk/web-core": "*",
- "react": ">=16.8.6"
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@dytesdk/ui-kit": {
- "version": "1.66.0",
- "resolved": "https://registry.npmjs.org/@dytesdk/ui-kit/-/ui-kit-1.66.0.tgz",
- "integrity": "sha512-wRG2oyMmGeowMoCw4pcQzexfb7fJ6sLLQKpXxvQLW2TRqAE2Uv3QckObE7Axw6qQVy/IhO31BWpj4bD4AW+WgA=="
- },
- "node_modules/@dytesdk/web-core": {
- "version": "1.31.0-stripped.1",
- "resolved": "file:modules/dytesdk-web-core-1.31.0-stripped.1.tgz",
- "integrity": "sha512-7+0jV5kVJbyHZH9zyBjBEf+aXjlrHYhw5xvj/2aP4nb4bjWHVVpaUBNKPkqGXTI3DLCY5UH7A1S/rdEW/2+WHA==",
- "license": "UNLICENSED",
- "dependencies": {
- "@dyteinternals/mediasoup-client": "^3.6.89",
- "@dyteinternals/utils": "^2.1.0",
- "@faker-js/faker": "^8.4.1",
- "axios": "^0.25.0",
- "bowser": "^2.11.0",
- "events": "^3.3.0",
- "lodash-es": "^4.17.21",
- "socket.io-client": "^4.7.5",
- "uuid": "^8.3.2",
- "worker-timers": "7.0.60"
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@emotion/hash": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
- "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
},
- "node_modules/@emotion/is-prop-valid": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
- "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@emotion/memoize": "^0.8.1"
- }
- },
- "node_modules/@emotion/memoize": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
- "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@emotion/stylis": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
- "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@emotion/unitless": {
- "version": "0.7.5",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
- "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
- "dev": true,
- "peer": true
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "devOptional": true,
+ "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/@eslint-community/regexpp": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.1.tgz",
- "integrity": "sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==",
- "devOptional": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
},
- "node_modules/@eslint/eslintrc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz",
- "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==",
- "devOptional": true,
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
"dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
- "devOptional": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
+ "node_modules/@jsonjoy.com/base64": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz",
+ "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==",
+ "license": "Apache-2.0",
"engines": {
- "node": ">=8"
+ "node": ">=10.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@eslint/eslintrc/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "devOptional": true,
+ "node_modules/@jsonjoy.com/buffers": {
+ "version": "17.67.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz",
+ "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==",
+ "license": "Apache-2.0",
"engines": {
- "node": ">=10"
+ "node": ">=10.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz",
- "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==",
- "devOptional": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@faker-js/faker": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz",
- "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fakerjs"
- }
- ],
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0",
- "npm": ">=6.14.13"
- }
- },
- "node_modules/@floating-ui/core": {
- "version": "1.6.9",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz",
- "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/utils": "^0.2.9"
- }
- },
- "node_modules/@floating-ui/dom": {
- "version": "1.6.13",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz",
- "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/core": "^1.6.0",
- "@floating-ui/utils": "^0.2.9"
- }
- },
- "node_modules/@floating-ui/react-dom": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
- "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/dom": "^1.0.0"
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
+ "tslib": "2"
}
},
- "node_modules/@floating-ui/utils": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz",
- "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==",
- "license": "MIT"
- },
- "node_modules/@fluentui/react-icons": {
- "version": "2.0.271",
- "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.271.tgz",
- "integrity": "sha512-I5rFvmZTzf1OQduU5Lal8yNMFcjCsfLnFDEwYjpwTdcyAPoIY2MTZMb4hCbGoohAreQL4cbItkWugxZc7N1wdw==",
- "license": "MIT",
- "dependencies": {
- "@griffel/react": "^1.0.0",
- "tslib": "^2.1.0"
+ "node_modules/@jsonjoy.com/codegen": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz",
+ "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
- "react": ">=16.8.0 <19.0.0"
+ "tslib": "2"
}
},
- "node_modules/@fortawesome/fontawesome-common-types": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz",
- "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==",
- "hasInstallScript": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@fortawesome/fontawesome-svg-core": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.1.tgz",
- "integrity": "sha512-MfRCYlQPXoLlpem+egxjfkEuP9UQswTrlCOsknus/NcMoblTH2g0jPrapbcIb04KGA7E2GZxbAccGZfWoYgsrQ==",
- "hasInstallScript": true,
+ "node_modules/@jsonjoy.com/fs-core": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.68.1.tgz",
+ "integrity": "sha512-V5oZ4Gt9WJKyQef0n9cAd0N9qjSkIBm3E4MYsgNIWBk5aINCDPKxMPo1i29rBxqiT4Ixf1epklqV9VJMKIxwlw==",
+ "license": "Apache-2.0",
"dependencies": {
- "@fortawesome/fontawesome-common-types": "6.5.1"
+ "@jsonjoy.com/fs-node-builtins": "4.68.1",
+ "@jsonjoy.com/fs-node-utils": "4.68.1",
+ "thingies": "^2.5.0"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/@fortawesome/react-fontawesome": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz",
- "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==",
- "dependencies": {
- "prop-types": "^15.8.1"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
- "@fortawesome/fontawesome-svg-core": "~1 || ~6",
- "react": ">=16.3"
- }
- },
- "node_modules/@griffel/core": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.12.2.tgz",
- "integrity": "sha512-+bvOWh0cCtB0S92a5VD4C00DBjx8qB+5ZBTb4WTj9ZhUP10wVLjLaoLdBPw7vdqnnaT1VzLZV4e9ye8OQjHKLA==",
- "dependencies": {
- "@emotion/hash": "^0.9.0",
- "csstype": "^3.1.2",
- "rtl-css-js": "^1.16.1",
- "stylis": "^4.2.0",
- "tslib": "^2.1.0"
+ "tslib": "2"
}
},
- "node_modules/@griffel/react": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.10.tgz",
- "integrity": "sha512-3V8PUCapgifoGqwbTBs/PR0MHgCt+PkfDmTTv4Ctfg0Pxrj8wSRWMourvlwLHJqqd9NPNxiklZlrDG+ELS6Zxg==",
+ "node_modules/@jsonjoy.com/fs-fsa": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.68.1.tgz",
+ "integrity": "sha512-HCG72UioncuO7Gw09XNVG+S85e3cq2hrUC/mexBrsWsa3mI7eePkkqWie3uVYbtsb64OR9YGQs5SqaufDRYBcg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@griffel/core": "^1.12.2",
- "tslib": "^2.1.0"
+ "@jsonjoy.com/fs-core": "4.68.1",
+ "@jsonjoy.com/fs-node-builtins": "4.68.1",
+ "@jsonjoy.com/fs-node-utils": "4.68.1",
+ "thingies": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
- "react": ">=16.8.0 <19.0.0"
- }
- },
- "node_modules/@hapi/hoek": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
- "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@hapi/topo": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
- "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
+ "tslib": "2"
}
},
- "node_modules/@headlessui/react": {
- "version": "1.7.18",
- "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.18.tgz",
- "integrity": "sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==",
+ "node_modules/@jsonjoy.com/fs-node": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.68.1.tgz",
+ "integrity": "sha512-R5D9mWtqdURzcOWj1vdXr3APCwX0xchtFT+kmW7fXLNDifWdDrnh26jSID8pdnUfFBxTyfHtFtTL/NWKzIH7kQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@tanstack/react-virtual": "^3.0.0-beta.60",
- "client-only": "^0.0.1"
+ "@jsonjoy.com/fs-core": "4.68.1",
+ "@jsonjoy.com/fs-node-builtins": "4.68.1",
+ "@jsonjoy.com/fs-node-utils": "4.68.1",
+ "@jsonjoy.com/fs-print": "4.68.1",
+ "@jsonjoy.com/fs-snapshot": "4.68.1",
+ "glob-to-regex.js": "^1.0.0",
+ "thingies": "^2.5.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
- "react": "^16 || ^17 || ^18",
- "react-dom": "^16 || ^17 || ^18"
- }
- },
- "node_modules/@heroicons/react": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.18.tgz",
- "integrity": "sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==",
- "peerDependencies": {
- "react": ">= 16"
+ "tslib": "2"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
- "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
- "devOptional": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "devOptional": true,
+ "node_modules/@jsonjoy.com/fs-node-builtins": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.68.1.tgz",
+ "integrity": "sha512-HK1BTksysokNZxNspqDH0yPaqN9YgR/AYIlYiIaU2Ys4BOk5CdybI7r6BgiZuiiPiV8n4sK/kZdice7Znpy2Kw==",
+ "license": "Apache-2.0",
"engines": {
- "node": ">=12.22"
+ "node": ">=10.0"
},
"funding": {
"type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "devOptional": true
- },
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/@jest/schemas": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
- "license": "MIT",
- "dependencies": {
- "@sinclair/typebox": "^0.27.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/types": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dependencies": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25"
- }
- },
- "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@jsdevtools/ono": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
- "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
- },
- "node_modules/@juggle/resize-observer": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
- "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA=="
- },
- "node_modules/@leichtgewicht/ip-codec": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
- "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
- "license": "MIT"
- },
- "node_modules/@lezer/common": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz",
- "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ=="
- },
- "node_modules/@lezer/css": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz",
- "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/highlight": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz",
- "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==",
- "dependencies": {
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@lezer/html": {
- "version": "1.3.9",
- "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.9.tgz",
- "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/javascript": {
- "version": "1.4.13",
- "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.13.tgz",
- "integrity": "sha512-5IBr8LIO3xJdJH1e9aj/ZNLE4LSbdsx25wFmGRAZsj2zSmwAYjx26JyU/BYOCpRQlu1jcv1z3vy4NB9+UkfRow==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.1.3",
- "@lezer/lr": "^1.3.0"
- }
- },
- "node_modules/@lezer/lr": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz",
- "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==",
- "dependencies": {
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@mdx-js/mdx": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz",
- "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdx": "^2.0.0",
- "collapse-white-space": "^2.0.0",
- "devlop": "^1.0.0",
- "estree-util-is-identifier-name": "^3.0.0",
- "estree-util-scope": "^1.0.0",
- "estree-walker": "^3.0.0",
- "hast-util-to-jsx-runtime": "^2.0.0",
- "markdown-extensions": "^2.0.0",
- "recma-build-jsx": "^1.0.0",
- "recma-jsx": "^1.0.0",
- "recma-stringify": "^1.0.0",
- "rehype-recma": "^1.0.0",
- "remark-mdx": "^3.0.0",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.0.0",
- "source-map": "^0.7.0",
- "unified": "^11.0.0",
- "unist-util-position-from-estree": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "license": "MIT"
- },
- "node_modules/@mdx-js/mdx/node_modules/mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
+ "url": "https://github.com/sponsors/streamich"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/micromark-util-encode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/@mdx-js/mdx/node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/micromark-util-symbol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/@mdx-js/mdx/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/@mdx-js/mdx/node_modules/remark-parse": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/remark-rehype": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz",
- "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "unified": "^11.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@mdx-js/mdx/node_modules/unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@mdx-js/react": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz",
- "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==",
- "dependencies": {
- "@types/mdx": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- },
- "peerDependencies": {
- "@types/react": ">=16",
- "react": ">=16"
- }
- },
- "node_modules/@module-federation/error-codes": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.4.tgz",
- "integrity": "sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==",
- "license": "MIT"
- },
- "node_modules/@module-federation/runtime": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.5.1.tgz",
- "integrity": "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@module-federation/sdk": "0.5.1"
- }
- },
- "node_modules/@module-federation/runtime-tools": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz",
- "integrity": "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@module-federation/runtime": "0.5.1",
- "@module-federation/webpack-bundler-runtime": "0.5.1"
- }
- },
- "node_modules/@module-federation/sdk": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.5.1.tgz",
- "integrity": "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==",
- "license": "MIT",
- "optional": true,
- "peer": true
- },
- "node_modules/@module-federation/webpack-bundler-runtime": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz",
- "integrity": "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@module-federation/runtime": "0.5.1",
- "@module-federation/sdk": "0.5.1"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@open-draft/deferred-promise": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
- "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA=="
- },
- "node_modules/@philpl/buble": {
- "version": "0.19.7",
- "resolved": "https://registry.npmjs.org/@philpl/buble/-/buble-0.19.7.tgz",
- "integrity": "sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA==",
- "dependencies": {
- "acorn": "^6.1.1",
- "acorn-class-fields": "^0.2.1",
- "acorn-dynamic-import": "^4.0.0",
- "acorn-jsx": "^5.0.1",
- "chalk": "^2.4.2",
- "magic-string": "^0.25.2",
- "minimist": "^1.2.0",
- "os-homedir": "^1.0.1",
- "regexpu-core": "^4.5.4"
- },
- "bin": {
- "buble": "bin/buble"
- }
- },
- "node_modules/@philpl/buble/node_modules/acorn": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/@philpl/buble/node_modules/acorn-class-fields": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz",
- "integrity": "sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ==",
- "engines": {
- "node": ">=4.8.2"
- },
- "peerDependencies": {
- "acorn": "^6.0.0"
- }
- },
- "node_modules/@philpl/buble/node_modules/acorn-dynamic-import": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
- "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
- "peerDependencies": {
- "acorn": "^6.0.0"
- }
- },
- "node_modules/@philpl/buble/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@philpl/buble/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@philpl/buble/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@philpl/buble/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "node_modules/@philpl/buble/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@philpl/buble/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@philpl/buble/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/@philpl/buble/node_modules/regenerate-unicode-properties": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
- "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@philpl/buble/node_modules/regexpu-core": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
- "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
- "dependencies": {
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^9.0.0",
- "regjsgen": "^0.5.2",
- "regjsparser": "^0.7.0",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@philpl/buble/node_modules/regjsgen": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
- "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
- },
- "node_modules/@philpl/buble/node_modules/regjsparser": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
- "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
- "dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/@philpl/buble/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@pnpm/config.env-replace": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
- "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
- "engines": {
- "node": ">=12.22.0"
- }
- },
- "node_modules/@pnpm/network.ca-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
- "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
- "dependencies": {
- "graceful-fs": "4.2.10"
- },
- "engines": {
- "node": ">=12.22.0"
- }
- },
- "node_modules/@pnpm/npm-conf": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz",
- "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==",
- "dependencies": {
- "@pnpm/config.env-replace": "^1.1.0",
- "@pnpm/network.ca-file": "^1.0.1",
- "config-chain": "^1.1.11"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@polka/url": {
- "version": "1.0.0-next.28",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
- "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==",
- "license": "MIT"
- },
- "node_modules/@radix-ui/number": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz",
- "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==",
- "license": "MIT"
- },
- "node_modules/@radix-ui/primitive": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz",
- "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==",
- "license": "MIT"
- },
- "node_modules/@radix-ui/react-arrow": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz",
- "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-collection": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz",
- "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.1",
- "@radix-ui/react-context": "1.1.1",
- "@radix-ui/react-primitive": "2.0.1",
- "@radix-ui/react-slot": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-compose-refs": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz",
- "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-context": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz",
- "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-direction": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz",
- "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dismissable-layer": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.4.tgz",
- "integrity": "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.1",
- "@radix-ui/react-compose-refs": "1.1.1",
- "@radix-ui/react-primitive": "2.0.1",
- "@radix-ui/react-use-callback-ref": "1.1.0",
- "@radix-ui/react-use-escape-keydown": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-focus-guards": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz",
- "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-focus-scope": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz",
- "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.1",
- "@radix-ui/react-primitive": "2.0.1",
- "@radix-ui/react-use-callback-ref": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-id": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz",
- "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-popper": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz",
- "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/react-dom": "^2.0.0",
- "@radix-ui/react-arrow": "1.1.1",
- "@radix-ui/react-compose-refs": "1.1.1",
- "@radix-ui/react-context": "1.1.1",
- "@radix-ui/react-primitive": "2.0.1",
- "@radix-ui/react-use-callback-ref": "1.1.0",
- "@radix-ui/react-use-layout-effect": "1.1.0",
- "@radix-ui/react-use-rect": "1.1.0",
- "@radix-ui/react-use-size": "1.1.0",
- "@radix-ui/rect": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-portal": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz",
- "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.0.1",
- "@radix-ui/react-use-layout-effect": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-primitive": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
- "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-slot": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-select": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.5.tgz",
- "integrity": "sha512-eVV7N8jBXAXnyrc+PsOF89O9AfVgGnbLxUtBb0clJ8y8ENMWLARGMI/1/SBRLz7u4HqxLgN71BJ17eono3wcjA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/number": "1.1.0",
- "@radix-ui/primitive": "1.1.1",
- "@radix-ui/react-collection": "1.1.1",
- "@radix-ui/react-compose-refs": "1.1.1",
- "@radix-ui/react-context": "1.1.1",
- "@radix-ui/react-direction": "1.1.0",
- "@radix-ui/react-dismissable-layer": "1.1.4",
- "@radix-ui/react-focus-guards": "1.1.1",
- "@radix-ui/react-focus-scope": "1.1.1",
- "@radix-ui/react-id": "1.1.0",
- "@radix-ui/react-popper": "1.2.1",
- "@radix-ui/react-portal": "1.1.3",
- "@radix-ui/react-primitive": "2.0.1",
- "@radix-ui/react-slot": "1.1.1",
- "@radix-ui/react-use-callback-ref": "1.1.0",
- "@radix-ui/react-use-controllable-state": "1.1.0",
- "@radix-ui/react-use-layout-effect": "1.1.0",
- "@radix-ui/react-use-previous": "1.1.0",
- "@radix-ui/react-visually-hidden": "1.1.1",
- "aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-slot": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
- "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-callback-ref": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz",
- "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-controllable-state": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz",
- "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-callback-ref": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-escape-keydown": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz",
- "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-callback-ref": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-layout-effect": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz",
- "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-previous": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz",
- "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-rect": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz",
- "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/rect": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-size": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz",
- "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.0"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz",
- "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/rect": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz",
- "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==",
- "license": "MIT"
- },
- "node_modules/@react-hook/debounce": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@react-hook/debounce/-/debounce-3.0.0.tgz",
- "integrity": "sha512-ir/kPrSfAzY12Gre0sOHkZ2rkEmM4fS5M5zFxCi4BnCeXh2nvx9Ujd+U4IGpKCuPA+EQD0pg1eK2NGLvfWejag==",
- "dependencies": {
- "@react-hook/latest": "^1.0.2"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/event": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@react-hook/event/-/event-1.2.6.tgz",
- "integrity": "sha512-JUL5IluaOdn5w5Afpe/puPa1rj8X6udMlQ9dt4hvMuKmTrBS1Ya6sb4sVgvfe2eU4yDuOfAhik8xhbcCekbg9Q==",
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/intersection-observer": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@react-hook/intersection-observer/-/intersection-observer-3.1.1.tgz",
- "integrity": "sha512-OTDx8/wFaRvzFtKl1dEUEXSOqK2zVJHporiTTdC2xO++0e9FEx9wIrPis5q3lqtXeZH9zYGLbk+aB75qNFbbuw==",
- "dependencies": {
- "@react-hook/passive-layout-effect": "^1.2.0",
- "intersection-observer": "^0.10.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/latest": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz",
- "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==",
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/passive-layout-effect": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz",
- "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==",
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/resize-observer": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@react-hook/resize-observer/-/resize-observer-1.2.6.tgz",
- "integrity": "sha512-DlBXtLSW0DqYYTW3Ft1/GQFZlTdKY5VAFIC4+km6IK5NiPPDFchGbEJm1j6pSgMqPRHbUQgHJX7RaR76ic1LWA==",
- "dependencies": {
- "@juggle/resize-observer": "^3.3.1",
- "@react-hook/latest": "^1.0.2",
- "@react-hook/passive-layout-effect": "^1.2.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/size": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@react-hook/size/-/size-2.1.2.tgz",
- "integrity": "sha512-BmE5asyRDxSuQ9p14FUKJ0iBRgV9cROjqNG9jT/EjCM+xHha1HVqbPoT+14FQg1K7xIydabClCibUY4+1tw/iw==",
- "dependencies": {
- "@react-hook/passive-layout-effect": "^1.2.0",
- "@react-hook/resize-observer": "^1.2.1"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/throttle": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@react-hook/throttle/-/throttle-2.2.0.tgz",
- "integrity": "sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg==",
- "dependencies": {
- "@react-hook/latest": "^1.0.2"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/window-size": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@react-hook/window-size/-/window-size-3.1.1.tgz",
- "integrity": "sha512-yWnVS5LKnOUIrEsI44oz3bIIUYqflamPL27n+k/PC//PsX/YeWBky09oPeAoc9As6jSH16Wgo8plI+ECZaHk3g==",
- "dependencies": {
- "@react-hook/debounce": "^3.0.0",
- "@react-hook/event": "^1.2.1",
- "@react-hook/throttle": "^2.2.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-types/checkbox": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.7.1.tgz",
- "integrity": "sha512-kuGqjQFex0As/3gfWyk+e9njCcad/ZdnYLLiNvhlk15730xfa0MmnOdpqo9jfuFSXBjOcpxoofvEhvrRMtEdUA==",
- "dependencies": {
- "@react-types/shared": "^3.22.1"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
- }
- },
- "node_modules/@react-types/shared": {
- "version": "3.22.1",
- "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.22.1.tgz",
- "integrity": "sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
- }
- },
- "node_modules/@reactflow/background": {
- "version": "11.3.9",
- "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.9.tgz",
- "integrity": "sha512-byj/G9pEC8tN0wT/ptcl/LkEP/BBfa33/SvBkqE4XwyofckqF87lKp573qGlisfnsijwAbpDlf81PuFL41So4Q==",
- "dependencies": {
- "@reactflow/core": "11.10.4",
- "classcat": "^5.0.3",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/controls": {
- "version": "11.2.9",
- "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.9.tgz",
- "integrity": "sha512-e8nWplbYfOn83KN1BrxTXS17+enLyFnjZPbyDgHSRLtI5ZGPKF/8iRXV+VXb2LFVzlu4Wh3la/pkxtfP/0aguA==",
- "dependencies": {
- "@reactflow/core": "11.10.4",
- "classcat": "^5.0.3",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/core": {
- "version": "11.10.4",
- "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.10.4.tgz",
- "integrity": "sha512-j3i9b2fsTX/sBbOm+RmNzYEFWbNx4jGWGuGooh2r1jQaE2eV+TLJgiG/VNOp0q5mBl9f6g1IXs3Gm86S9JfcGw==",
- "dependencies": {
- "@types/d3": "^7.4.0",
- "@types/d3-drag": "^3.0.1",
- "@types/d3-selection": "^3.0.3",
- "@types/d3-zoom": "^3.0.1",
- "classcat": "^5.0.3",
- "d3-drag": "^3.0.0",
- "d3-selection": "^3.0.0",
- "d3-zoom": "^3.0.0",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/minimap": {
- "version": "11.7.9",
- "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.9.tgz",
- "integrity": "sha512-le95jyTtt3TEtJ1qa7tZ5hyM4S7gaEQkW43cixcMOZLu33VAdc2aCpJg/fXcRrrf7moN2Mbl9WIMNXUKsp5ILA==",
- "dependencies": {
- "@reactflow/core": "11.10.4",
- "@types/d3-selection": "^3.0.3",
- "@types/d3-zoom": "^3.0.1",
- "classcat": "^5.0.3",
- "d3-selection": "^3.0.0",
- "d3-zoom": "^3.0.0",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/node-resizer": {
- "version": "2.2.9",
- "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.9.tgz",
- "integrity": "sha512-HfickMm0hPDIHt9qH997nLdgLt0kayQyslKE0RS/GZvZ4UMQJlx/NRRyj5y47Qyg0NnC66KYOQWDM9LLzRTnUg==",
- "dependencies": {
- "@reactflow/core": "11.10.4",
- "classcat": "^5.0.4",
- "d3-drag": "^3.0.0",
- "d3-selection": "^3.0.0",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@reactflow/node-toolbar": {
- "version": "1.3.9",
- "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.9.tgz",
- "integrity": "sha512-VmgxKmToax4sX1biZ9LXA7cj/TBJ+E5cklLGwquCCVVxh+lxpZGTBF3a5FJGVHiUNBBtFsC8ldcSZIK4cAlQww==",
- "dependencies": {
- "@reactflow/core": "11.10.4",
- "classcat": "^5.0.3",
- "zustand": "^4.4.1"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@rehooks/component-size": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@rehooks/component-size/-/component-size-1.0.3.tgz",
- "integrity": "sha512-pnYld+8SSF2vXwdLOqBGUyOrv/SjzwLjIUcs/4c1JJgR0q4E9eBtBfuZMD6zUD51fvSehSsbnlQMzotSmPTXPg==",
- "peerDependencies": {
- "react": ">=16.8.0"
- }
- },
- "node_modules/@rspack/binding": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.1.6.tgz",
- "integrity": "sha512-vfeBEgGOYVwqj5cQjGyvdfrr/BEihAHlyIsobL98FZjTF0uig+bj2yJUH5Ib5F0BpIUKVG3Pw0IjlUBqcVpZsQ==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "optionalDependencies": {
- "@rspack/binding-darwin-arm64": "1.1.6",
- "@rspack/binding-darwin-x64": "1.1.6",
- "@rspack/binding-linux-arm64-gnu": "1.1.6",
- "@rspack/binding-linux-arm64-musl": "1.1.6",
- "@rspack/binding-linux-x64-gnu": "1.1.6",
- "@rspack/binding-linux-x64-musl": "1.1.6",
- "@rspack/binding-win32-arm64-msvc": "1.1.6",
- "@rspack/binding-win32-ia32-msvc": "1.1.6",
- "@rspack/binding-win32-x64-msvc": "1.1.6"
- }
- },
- "node_modules/@rspack/binding-darwin-arm64": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.1.6.tgz",
- "integrity": "sha512-x9dxm2yyiMuL1FBwvWNNMs2/mEUJmRoSRgYb8pblR7HDaTRORrjBFCqhaYlGyAqtQaeUy7o2VAQlE0BavIiFYA==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-darwin-x64": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.1.6.tgz",
- "integrity": "sha512-o0seilveftGiDjy3VPxug20HmAgYyQbNEuagR3i93/t/PT/eWXHnik+C1jjwqcivZL1Zllqvy4tbZw393aROEQ==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-linux-arm64-gnu": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.6.tgz",
- "integrity": "sha512-4atnoknJx/c3KaQElsMIxHMpPf2jcRRdWsH/SdqJIRSrkWWakMK9Yv4TFwH680I4HDTMf1XLboMVScHzW8e+Mg==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-linux-arm64-musl": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.6.tgz",
- "integrity": "sha512-7QMtwUtgFpt3/Y3/X18fSyN+kk4H8ZnZ8tDzQskVWc/j2AQYShZq56XQYqrhClzwujcCVAHauIQ2eiuJ2ASGag==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-linux-x64-gnu": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.6.tgz",
- "integrity": "sha512-MTjDEfPn4TwHoqs5d5Fck06kmXiTHZctGIcRVfrpg0RK0r1NLEHN+oosavRZ9c9H70f34+NmcHk+/qvV4c8lWg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-linux-x64-musl": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.6.tgz",
- "integrity": "sha512-LqDw7PTVr/4ZuGA0izgDQfamfr72USFHltR1Qhy2YVC3JmDmhG/pQi13LHcOLVaGH1xoeyCmEPNJpVizzDxSjg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-win32-arm64-msvc": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.6.tgz",
- "integrity": "sha512-RHApLM93YN0WdHpS35u2cm7VCqZ8Yg3CrNRL16VJtyT9e6MBqeScoe4XIgIWKPm7edFyedYAjLX0wQOApwfjkg==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-win32-ia32-msvc": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.1.6.tgz",
- "integrity": "sha512-Y6lx4q0eJawRfMPBo/AclTJAPTZ325DSPFBQJB3TnWh9Z2X7P7pQcYc8PHDmfDuYRIdg5WRsQRvVxihSvF7v8w==",
- "cpu": [
- "ia32"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true
- },
- "node_modules/@rspack/binding-win32-x64-msvc": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.6.tgz",
- "integrity": "sha512-UuCsfhC/yNuU7xLASOxNXcmsXi2ZvBX14GkxvcdChw6q7IIGNYUKXo1zgR8C1PE/6qDSxmLxbRMS+71d0H3HQg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true
- },
- "node_modules/@rspack/core": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.1.6.tgz",
- "integrity": "sha512-q0VLphOF5VW2FEG7Vbdq3Ke4I74FbELE/8xmKghSalFtULLZ44SoSz8lyotfMim9GXIRFhDokAaH8WICmPxG+g==",
- "license": "MIT",
- "optional": true,
- "peer": true,
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@jsonjoy.com/fs-node-to-fsa": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.68.1.tgz",
+ "integrity": "sha512-lpKmU4X9e/oh8GIuAI7EXaS5QiLNM3KD15CkdhfS6PYmrGvoJqKQcyEfnLgnnaGslh/PFUMYSIZBCf2ejJGw8g==",
+ "license": "Apache-2.0",
"dependencies": {
- "@module-federation/runtime-tools": "0.5.1",
- "@rspack/binding": "1.1.6",
- "@rspack/lite-tapable": "1.0.1",
- "caniuse-lite": "^1.0.30001616"
+ "@jsonjoy.com/fs-fsa": "4.68.1",
+ "@jsonjoy.com/fs-node-builtins": "4.68.1",
+ "@jsonjoy.com/fs-node-utils": "4.68.1"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=10.0"
},
- "peerDependencies": {
- "@swc/helpers": ">=0.5.1"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
},
- "peerDependenciesMeta": {
- "@swc/helpers": {
- "optional": true
- }
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@rspack/lite-tapable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz",
- "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==",
- "license": "MIT",
+ "node_modules/@jsonjoy.com/fs-node-utils": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.68.1.tgz",
+ "integrity": "sha512-/GxfW1DWm9SCdkfbvqevLO/P5duobQfmKkHXxdMIDbcZMQeAgooAstIfZhkXpATzq9QbCQsnoWFM/dGHdZfndw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jsonjoy.com/fs-node-builtins": "4.68.1",
+ "glob-to-regex.js": "^1.0.1"
+ },
"engines": {
- "node": ">=16.0.0"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sentry/browser": {
- "version": "6.19.7",
- "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.19.7.tgz",
- "integrity": "sha512-oDbklp4O3MtAM4mtuwyZLrgO1qDVYIujzNJQzXmi9YzymJCuzMLSRDvhY83NNDCRxf0pds4DShgYeZdbSyKraA==",
+ "node_modules/@jsonjoy.com/fs-print": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.68.1.tgz",
+ "integrity": "sha512-oGeZOGPYKK9v1CgeVeEDsLomH1lCnslSpqUN5GmPzrmAVGQlsmsdcXNA2O4lV8Y4xkuSuynx2ITBkUHJVaTbow==",
+ "license": "Apache-2.0",
"dependencies": {
- "@sentry/core": "6.19.7",
- "@sentry/types": "6.19.7",
- "@sentry/utils": "6.19.7",
- "tslib": "^1.9.3"
+ "@jsonjoy.com/fs-node-utils": "4.68.1",
+ "tree-dump": "^1.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sentry/browser/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@sentry/core": {
- "version": "6.19.7",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz",
- "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==",
+ "node_modules/@jsonjoy.com/fs-snapshot": {
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.68.1.tgz",
+ "integrity": "sha512-XZfP0FDZN32bbc4t2bZN2qRrYHg5AktJnzk22HRoKGK4BprrbNRH2k5ceSNS/kupKYcofCs+O841+xaAbjnxwQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@sentry/hub": "6.19.7",
- "@sentry/minimal": "6.19.7",
- "@sentry/types": "6.19.7",
- "@sentry/utils": "6.19.7",
- "tslib": "^1.9.3"
+ "@jsonjoy.com/buffers": "^17.65.0",
+ "@jsonjoy.com/fs-node-utils": "4.68.1",
+ "@jsonjoy.com/json-pack": "^17.65.0",
+ "@jsonjoy.com/util": "^17.65.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sentry/core/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": {
+ "version": "17.67.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz",
+ "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": {
+ "version": "17.67.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz",
+ "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
},
- "node_modules/@sentry/hub": {
- "version": "6.19.7",
- "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz",
- "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==",
+ "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": {
+ "version": "17.67.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz",
+ "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==",
+ "license": "Apache-2.0",
"dependencies": {
- "@sentry/types": "6.19.7",
- "@sentry/utils": "6.19.7",
- "tslib": "^1.9.3"
+ "@jsonjoy.com/base64": "17.67.0",
+ "@jsonjoy.com/buffers": "17.67.0",
+ "@jsonjoy.com/codegen": "17.67.0",
+ "@jsonjoy.com/json-pointer": "17.67.0",
+ "@jsonjoy.com/util": "17.67.0",
+ "hyperdyperid": "^1.2.0",
+ "thingies": "^2.5.0",
+ "tree-dump": "^1.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sentry/hub/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@sentry/minimal": {
- "version": "6.19.7",
- "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz",
- "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==",
+ "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": {
+ "version": "17.67.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz",
+ "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==",
+ "license": "Apache-2.0",
"dependencies": {
- "@sentry/hub": "6.19.7",
- "@sentry/types": "6.19.7",
- "tslib": "^1.9.3"
+ "@jsonjoy.com/util": "17.67.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sentry/minimal/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@sentry/react": {
- "version": "6.19.7",
- "resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.19.7.tgz",
- "integrity": "sha512-VzJeBg/v41jfxUYPkH2WYrKjWc4YiMLzDX0f4Zf6WkJ4v3IlDDSkX6DfmWekjTKBho6wiMkSNy2hJ1dHfGZ9jA==",
- "dependencies": {
- "@sentry/browser": "6.19.7",
- "@sentry/minimal": "6.19.7",
- "@sentry/types": "6.19.7",
- "@sentry/utils": "6.19.7",
- "hoist-non-react-statics": "^3.3.2",
- "tslib": "^1.9.3"
+ "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": {
+ "version": "17.67.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz",
+ "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jsonjoy.com/buffers": "17.67.0",
+ "@jsonjoy.com/codegen": "17.67.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
- "react": "15.x || 16.x || 17.x || 18.x"
+ "tslib": "2"
}
},
- "node_modules/@sentry/react/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "node_modules/@jsonjoy.com/json-pack": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz",
+ "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jsonjoy.com/base64": "^1.1.2",
+ "@jsonjoy.com/buffers": "^1.2.0",
+ "@jsonjoy.com/codegen": "^1.0.0",
+ "@jsonjoy.com/json-pointer": "^1.0.2",
+ "@jsonjoy.com/util": "^1.9.0",
+ "hyperdyperid": "^1.2.0",
+ "thingies": "^2.5.0",
+ "tree-dump": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
},
- "node_modules/@sentry/types": {
- "version": "6.19.7",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz",
- "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==",
+ "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz",
+ "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==",
+ "license": "Apache-2.0",
"engines": {
- "node": ">=6"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sentry/utils": {
- "version": "6.19.7",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz",
- "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==",
+ "node_modules/@jsonjoy.com/json-pointer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz",
+ "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@sentry/types": "6.19.7",
- "tslib": "^1.9.3"
+ "@jsonjoy.com/codegen": "^1.0.0",
+ "@jsonjoy.com/util": "^1.9.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sentry/utils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@sideway/address": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
- "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
- "license": "BSD-3-Clause",
+ "node_modules/@jsonjoy.com/util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz",
+ "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@hapi/hoek": "^9.0.0"
+ "@jsonjoy.com/buffers": "^1.0.0",
+ "@jsonjoy.com/codegen": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
- "node_modules/@sideway/formula": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
- "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@sideway/pinpoint": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
- "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
- "license": "BSD-3-Clause"
+ "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz",
+ "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
},
- "node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "node_modules/@leichtgewicht/ip-codec": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
+ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
"license": "MIT"
},
- "node_modules/@sindresorhus/is": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
- "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "node_modules/@mdx-js/mdx": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz",
+ "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==",
"license": "MIT",
- "engines": {
- "node": ">=10"
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdx": "^2.0.0",
+ "acorn": "^8.0.0",
+ "collapse-white-space": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "estree-util-scope": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "hast-util-to-jsx-runtime": "^2.0.0",
+ "markdown-extensions": "^2.0.0",
+ "recma-build-jsx": "^1.0.0",
+ "recma-jsx": "^1.0.0",
+ "recma-stringify": "^1.0.0",
+ "rehype-recma": "^1.0.0",
+ "remark-mdx": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.0.0",
+ "source-map": "^0.7.0",
+ "unified": "^11.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
},
"funding": {
- "url": "https://github.com/sindresorhus/is?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/@slorber/remark-comment": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz",
- "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==",
+ "node_modules/@mdx-js/mdx/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
"license": "MIT",
"dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.1.0",
- "micromark-util-symbol": "^1.0.1"
+ "@types/unist": "*"
}
},
- "node_modules/@socket.io/component-emitter": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
- "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
- },
- "node_modules/@stitches/core": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@stitches/core/-/core-1.2.8.tgz",
- "integrity": "sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg=="
- },
- "node_modules/@stoplight/elements": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@stoplight/elements/-/elements-8.0.2.tgz",
- "integrity": "sha512-QkIpfGACLmSAryv4AP0SRZeI2On2nOHWiZm+230IDbNP7pKc1TZKBtv7VM9Bm7qySxfjNZR1cJF6NhuB0LG55Q==",
- "dependencies": {
- "@stoplight/elements-core": "~8.0.2",
- "@stoplight/http-spec": "^7.0.1",
- "@stoplight/json": "^3.18.1",
- "@stoplight/mosaic": "^1.46.1",
- "@stoplight/types": "^14.1.1",
- "@stoplight/yaml": "^4.2.3",
- "classnames": "^2.2.6",
- "file-saver": "^2.0.5",
- "lodash": "^4.17.19",
- "react-query": "^3.34.19",
- "react-router-dom": "^5.2.0"
- },
- "engines": {
- "node": ">=14.13"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
+ "node_modules/@mdx-js/mdx/node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
}
},
- "node_modules/@stoplight/elements-core": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/@stoplight/elements-core/-/elements-core-8.0.5.tgz",
- "integrity": "sha512-9uXbNQ7DVwxBdR2vq++QKbqaxeu2Q8zyP27NPRd4ebx5FWXxjEabnhFzzJ4DC13ByAEDSrmVU2gqgbKghY3OcA==",
- "dependencies": {
- "@stoplight/http-spec": "^7.0.2",
- "@stoplight/json": "^3.18.1",
- "@stoplight/json-schema-ref-parser": "^9.0.5",
- "@stoplight/json-schema-sampler": "0.2.3",
- "@stoplight/json-schema-tree": "^4.0.0",
- "@stoplight/json-schema-viewer": "^4.14.2",
- "@stoplight/markdown-viewer": "^5.6.0",
- "@stoplight/mosaic": "^1.51.3",
- "@stoplight/mosaic-code-editor": "^1.51.3",
- "@stoplight/mosaic-code-viewer": "^1.51.3",
- "@stoplight/path": "^1.3.2",
- "@stoplight/react-error-boundary": "^3.0.0",
- "@stoplight/types": "^14.1.1",
- "@stoplight/yaml": "^4.2.3",
- "classnames": "^2.2.6",
- "httpsnippet-lite": "^3.0.5",
- "jotai": "1.3.9",
- "json-schema": "^0.4.0",
- "lodash": "^4.17.21",
- "nanoid": "^3.1.32",
- "prop-types": "^15.7.2",
- "react-query": "^3.34.19",
- "react-router-dom": "^5.2.0",
- "react-router-hash-link": "^2.1.0",
- "tslib": "^2.1.0",
- "urijs": "^1.19.11",
- "util": "^0.12.4",
- "xml-formatter": "^2.6.1"
- },
- "engines": {
- "node": ">=14.13"
+ "node_modules/@mdx-js/mdx/node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/@mdx-js/mdx/node_modules/remark-parse": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
},
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/@stoplight/elements-core/node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
+ "node_modules/@mdx-js/mdx/node_modules/remark-rehype": {
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
+ "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
},
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/@stoplight/http-spec": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@stoplight/http-spec/-/http-spec-7.0.3.tgz",
- "integrity": "sha512-r9Y8rT4RbqY7NWqSXjiqtBq0Nme2K5cArSX9gDPeuud8F4CwbizP7xkUwLdwDdHgoJkyIQ3vkFJpHzUVCQeOOA==",
- "dependencies": {
- "@stoplight/json": "^3.18.1",
- "@stoplight/json-schema-generator": "1.0.2",
- "@stoplight/types": "14.1.0",
- "@types/json-schema": "7.0.11",
- "@types/swagger-schema-official": "~2.0.22",
- "@types/type-is": "^1.6.3",
- "fnv-plus": "^1.3.1",
- "lodash": "^4.17.21",
- "openapi3-ts": "^2.0.2",
- "postman-collection": "^4.1.3",
- "tslib": "^2.6.2",
- "type-is": "^1.6.18"
- },
+ "node_modules/@mdx-js/mdx/node_modules/source-map": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">=14.13"
+ "node": ">= 12"
}
},
- "node_modules/@stoplight/http-spec/node_modules/@stoplight/types": {
- "version": "14.1.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.0.tgz",
- "integrity": "sha512-fL8Nzw03+diALw91xHEHA5Q0WCGeW9WpPgZQjodNUWogAgJ56aJs03P9YzsQ1J6fT7/XjDqHMgn7/RlsBzB/SQ==",
+ "node_modules/@mdx-js/react": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz",
+ "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
+ "@types/mdx": "^2.0.0"
},
- "engines": {
- "node": "^12.20 || >=14.13"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "@types/react": ">=16",
+ "react": ">=16"
}
},
- "node_modules/@stoplight/json": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.0.tgz",
- "integrity": "sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==",
+ "node_modules/@mermaid-js/parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.1.tgz",
+ "integrity": "sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/ordered-object-literal": "^1.0.3",
- "@stoplight/path": "^1.3.2",
- "@stoplight/types": "^13.6.0",
- "jsonc-parser": "~2.2.1",
- "lodash": "^4.17.21",
- "safe-stable-stringify": "^1.1"
- },
- "engines": {
- "node": ">=8.3.0"
+ "@chevrotain/types": "~11.1.2"
}
},
- "node_modules/@stoplight/json-schema-generator": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@stoplight/json-schema-generator/-/json-schema-generator-1.0.2.tgz",
- "integrity": "sha512-FzSLFoIZc6Lmw3oRE7kU6YUrl5gBmUs//rY59jdFipBoSyTPv5NyqeyTg5mvT6rY1F3qTLU3xgzRi/9Pb9eZpA==",
+ "node_modules/@module-federation/error-codes": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz",
+ "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==",
+ "license": "MIT"
+ },
+ "node_modules/@module-federation/runtime": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz",
+ "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==",
+ "license": "MIT",
"dependencies": {
- "cross-fetch": "^3.1.5",
- "json-promise": "1.1.x",
- "minimist": "1.2.6",
- "mkdirp": "0.5.x",
- "pretty-data": "0.40.x"
- },
- "bin": {
- "json-schema-generator": "bin/cli.js"
+ "@module-federation/error-codes": "0.22.0",
+ "@module-federation/runtime-core": "0.22.0",
+ "@module-federation/sdk": "0.22.0"
}
},
- "node_modules/@stoplight/json-schema-merge-allof": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@stoplight/json-schema-merge-allof/-/json-schema-merge-allof-0.8.0.tgz",
- "integrity": "sha512-g8e0s43v96Xbzvd8d6KKUuJTO16CS2oJglJrviUi8ASIUxzFvAJqTHWLtGmpTryisQopqg1evXGJfi0+164+Qw==",
+ "node_modules/@module-federation/runtime-core": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz",
+ "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==",
+ "license": "MIT",
"dependencies": {
- "compute-lcm": "^1.1.0",
- "json-schema-compare": "^0.2.2",
- "lodash": "^4.17.4"
+ "@module-federation/error-codes": "0.22.0",
+ "@module-federation/sdk": "0.22.0"
}
},
- "node_modules/@stoplight/json-schema-ref-parser": {
- "version": "9.2.7",
- "resolved": "https://registry.npmjs.org/@stoplight/json-schema-ref-parser/-/json-schema-ref-parser-9.2.7.tgz",
- "integrity": "sha512-1vNzJ7iSrFTAFNbZHPyhI6GiJJw74+WaV61bARUQEDR4Jm80f9s0Tq9uCvGoMYwIFmWDJAoTiyegnUs6SvVxDw==",
+ "node_modules/@module-federation/runtime-tools": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz",
+ "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==",
+ "license": "MIT",
"dependencies": {
- "@jsdevtools/ono": "^7.1.3",
- "@stoplight/path": "^1.3.2",
- "@stoplight/yaml": "^4.0.2",
- "call-me-maybe": "^1.0.1",
- "fastestsmallesttextencoderdecoder": "^1.0.22",
- "isomorphic-fetch": "^3.0.0",
- "node-abort-controller": "^3.0.1"
+ "@module-federation/runtime": "0.22.0",
+ "@module-federation/webpack-bundler-runtime": "0.22.0"
}
},
- "node_modules/@stoplight/json-schema-sampler": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@stoplight/json-schema-sampler/-/json-schema-sampler-0.2.3.tgz",
- "integrity": "sha512-57PqNll9y/Rkfp4/t1AkVfz5C0PIrDd8i2AW/N0XU5wVJ50kIrmJg3BD+PzmVcrF3lXFH7/LojoOUkzLZXMJpg==",
+ "node_modules/@module-federation/sdk": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz",
+ "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==",
+ "license": "MIT"
+ },
+ "node_modules/@module-federation/webpack-bundler-runtime": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz",
+ "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.7",
- "json-pointer": "^0.6.1"
+ "@module-federation/runtime": "0.22.0",
+ "@module-federation/sdk": "0.22.0"
}
},
- "node_modules/@stoplight/json-schema-tree": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@stoplight/json-schema-tree/-/json-schema-tree-4.0.0.tgz",
- "integrity": "sha512-SAGtof+ihIdPqETR+7XXOaqZJcrbSih/xEahaw5t1nXk5sVW6ss2l5A1WCIuvtvnQiUKnBfanmZU4eoM1ZvItg==",
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz",
+ "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@stoplight/json": "^3.12.0",
- "@stoplight/json-schema-merge-allof": "^0.8.0",
- "@stoplight/lifecycle": "^2.3.2",
- "@types/json-schema": "^7.0.7",
- "magic-error": "0.0.1"
- },
- "engines": {
- "node": ">=10.18"
+ "@emnapi/core": "^1.5.0",
+ "@emnapi/runtime": "^1.5.0",
+ "@tybys/wasm-util": "^0.10.1"
}
},
- "node_modules/@stoplight/json-schema-viewer": {
- "version": "4.16.0",
- "resolved": "https://registry.npmjs.org/@stoplight/json-schema-viewer/-/json-schema-viewer-4.16.0.tgz",
- "integrity": "sha512-5IYPI7sEbyQq2QyDhU9MqDGi9/KhNvaKsG+VOVelTcSqs56Vg9ASbSr/U6dISi5FK0FEfTh6FUggToUAzpr4NQ==",
- "dependencies": {
- "@stoplight/json": "^3.20.1",
- "@stoplight/json-schema-tree": "^4.0.0",
- "@stoplight/react-error-boundary": "^2.0.0",
- "@types/json-schema": "^7.0.7",
- "classnames": "^2.2.6",
- "fnv-plus": "^1.3.1",
- "jotai": "^1.4.5",
- "lodash": "^4.17.19"
- },
+ "node_modules/@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
+ "license": "MIT",
"engines": {
- "node": ">=16"
+ "node": ">= 16"
},
- "peerDependencies": {
- "@stoplight/markdown-viewer": "^5",
- "@stoplight/mosaic": "^1.32",
- "@stoplight/mosaic-code-viewer": "^1.32",
- "react": ">=16.8",
- "react-dom": ">=16.8"
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@stoplight/json-schema-viewer/node_modules/@stoplight/react-error-boundary": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@stoplight/react-error-boundary/-/react-error-boundary-2.0.0.tgz",
- "integrity": "sha512-r9cyaaH2h0kFe5c0aP+yJuY9CyXgfbBaMO6660M/wRQXqM49K5Ul7kexE4ei2cqYgo+Cd6ALl6RXSZFYwf2kCA==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dependencies": {
- "@sentry/react": "^6.13.2"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
+ "node": ">= 8"
}
},
- "node_modules/@stoplight/json-schema-viewer/node_modules/jotai": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/jotai/-/jotai-1.13.1.tgz",
- "integrity": "sha512-RUmH1S4vLsG3V6fbGlKzGJnLrDcC/HNb5gH2AeA9DzuJknoVxSGvvg8OBB7lke+gDc4oXmdVsaKn/xDUhWZ0vw==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"engines": {
- "node": ">=12.20.0"
- },
- "peerDependencies": {
- "@babel/core": "*",
- "@babel/template": "*",
- "jotai-devtools": "*",
- "jotai-immer": "*",
- "jotai-optics": "*",
- "jotai-redux": "*",
- "jotai-tanstack-query": "*",
- "jotai-urql": "*",
- "jotai-valtio": "*",
- "jotai-xstate": "*",
- "jotai-zustand": "*",
- "react": ">=16.8"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "@babel/template": {
- "optional": true
- },
- "jotai-devtools": {
- "optional": true
- },
- "jotai-immer": {
- "optional": true
- },
- "jotai-optics": {
- "optional": true
- },
- "jotai-redux": {
- "optional": true
- },
- "jotai-tanstack-query": {
- "optional": true
- },
- "jotai-urql": {
- "optional": true
- },
- "jotai-valtio": {
- "optional": true
- },
- "jotai-xstate": {
- "optional": true
- },
- "jotai-zustand": {
- "optional": true
- }
+ "node": ">= 8"
}
},
- "node_modules/@stoplight/json/node_modules/@stoplight/types": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
- "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
},
"engines": {
- "node": "^12.20 || >=14.13"
+ "node": ">= 8"
}
},
- "node_modules/@stoplight/lifecycle": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@stoplight/lifecycle/-/lifecycle-2.3.3.tgz",
- "integrity": "sha512-JbPRTIzPZabeYPAk5+gdsnfwAxqW35G9e0ZjOG3toUmNViLOsEzuK4vpWd+Prv2Mw8HRmu+haiYizteZp6mk0w==",
+ "node_modules/@parcel/watcher": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz",
+ "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "tslib": "^2.3.1",
- "wolfy87-eventemitter": "~5.2.8"
+ "detect-libc": "^2.0.3",
+ "is-glob": "^4.0.3",
+ "node-addon-api": "^7.0.0",
+ "picomatch": "^4.0.4"
},
"engines": {
- "node": ">=8.3.0"
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.6.0",
+ "@parcel/watcher-darwin-arm64": "2.6.0",
+ "@parcel/watcher-darwin-x64": "2.6.0",
+ "@parcel/watcher-freebsd-x64": "2.6.0",
+ "@parcel/watcher-linux-arm-glibc": "2.6.0",
+ "@parcel/watcher-linux-arm-musl": "2.6.0",
+ "@parcel/watcher-linux-arm64-glibc": "2.6.0",
+ "@parcel/watcher-linux-arm64-musl": "2.6.0",
+ "@parcel/watcher-linux-x64-glibc": "2.6.0",
+ "@parcel/watcher-linux-x64-musl": "2.6.0",
+ "@parcel/watcher-win32-arm64": "2.6.0",
+ "@parcel/watcher-win32-x64": "2.6.0"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz",
+ "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@stoplight/markdown/-/markdown-3.2.0.tgz",
- "integrity": "sha512-Hhnrj7xb+f4iMQQeZBKLgfst3OJyV8T4BKr8BSYnKpp070B6fE63V/lkPuKqrpvidcv6kz3INDBU/GE7K2Q0uw==",
- "dependencies": {
- "@stoplight/types": "^12.3.0",
- "@stoplight/yaml": "^4.2.2",
- "github-slugger": "^1.3.0",
- "hast-util-whitespace": "^2.0.0",
- "lodash": "^4.17.21",
- "mdast-util-to-string": "^3.1.0",
- "remark-frontmatter": "^3.0.0",
- "remark-gfm": "^1.0.0",
- "remark-parse": "^9.0.0",
- "remark-stringify": "^9.0.1",
- "tslib": "^2.3.0",
- "unified": "^9.2.1",
- "unist-util-select": "^4.0.0",
- "unist-util-visit": "^3.1.0"
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz",
+ "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz",
+ "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=12"
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@stoplight/markdown-viewer/-/markdown-viewer-5.7.0.tgz",
- "integrity": "sha512-SOFmEapj/RAJ6fUqgZO41diB9ocEFxhrSL7C8aJKNoYoHme0xxk5DK53DvFNBayEEXnf9e/YmKPfwJjFdKUilA==",
- "dependencies": {
- "@rehooks/component-size": "^1.0.3",
- "@stoplight/markdown": "^3.1.3",
- "@stoplight/react-error-boundary": "^2.0.0",
- "deepmerge": "^4.2.2",
- "hast-to-hyperscript": "^10.0.1",
- "hast-util-raw": "7.0.0",
- "hast-util-sanitize": "^4.0.0",
- "hastscript": "^7.0.2",
- "mdast-util-to-hast": "^11.1.1",
- "remark-parse": "^9.0.0",
- "unified": "^9.2.1",
- "unist-builder": "^3.0.0",
- "unist-util-select": "^4.0.1",
- "unist-util-visit": "^3.1.0"
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz",
+ "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz",
+ "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=12"
+ "node": ">= 10.0.0"
},
- "peerDependencies": {
- "@stoplight/mosaic": "^1.24.4",
- "@stoplight/mosaic-code-viewer": "^1.24.4",
- "react": ">=16.14",
- "react-dom": ">=16.14"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/@stoplight/react-error-boundary": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@stoplight/react-error-boundary/-/react-error-boundary-2.0.0.tgz",
- "integrity": "sha512-r9cyaaH2h0kFe5c0aP+yJuY9CyXgfbBaMO6660M/wRQXqM49K5Ul7kexE4ei2cqYgo+Cd6ALl6RXSZFYwf2kCA==",
- "dependencies": {
- "@sentry/react": "^6.13.2"
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz",
+ "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz",
+ "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=10"
+ "node": ">= 10.0.0"
},
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
- }
- },
- "node_modules/@stoplight/markdown-viewer/node_modules/bail": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
- "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz",
+ "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz",
+ "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz",
+ "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz",
+ "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "dependencies": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz",
+ "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
+ "node_modules/@parcel/watcher/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=12"
+ },
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@peculiar/asn1-cms": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.9.4.tgz",
+ "integrity": "sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw==",
+ "license": "MIT",
+ "dependencies": {
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "@peculiar/asn1-x509-attr": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "node_modules/@peculiar/asn1-csr": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.9.4.tgz",
+ "integrity": "sha512-xd4YN4vpRjkDAQWVfZZkeu12IEND7DOpkqaHSIHxZl1uggUNa9Ju0QxY2jHvDAS9pP0zhRBytg8ifsnGo3V0jw==",
+ "license": "MIT",
+ "dependencies": {
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/mdast-util-from-markdown": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
- "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
+ "node_modules/@peculiar/asn1-ecc": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.9.4.tgz",
+ "integrity": "sha512-JJXefFshRAuVAjWQo/39bkg1ywc1VaiO44S8RRC+Ykvf/u2KDmYffoDb0ZBPCR5uJy4AGKQhl8mX+Q8ShcWaXQ==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^2.0.0",
- "micromark": "~2.11.0",
- "parse-entities": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "node_modules/@peculiar/asn1-pfx": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.9.4.tgz",
+ "integrity": "sha512-khuGzHTzNzk4GDlIBEILyIs6Lce0yn0ZBdoI9v93kmNncfZRhD+AQ5ODFqdhvoE8cMJF/JMTQ8yA+t1D14kqCw==",
+ "license": "MIT",
+ "dependencies": {
+ "@peculiar/asn1-cms": "^2.9.4",
+ "@peculiar/asn1-pkcs8": "^2.9.4",
+ "@peculiar/asn1-rsa": "^2.9.4",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/micromark": {
- "version": "2.11.4",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
- "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
+ "node_modules/@peculiar/asn1-pkcs8": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.9.4.tgz",
+ "integrity": "sha512-duRdotlUx9eDZe6QrQpQKl61RbWykCHBCkKayP8V8XdEFwlKHZ8qGGDMyS6Pye7OX7nLFttTTpRkJeet78ckwQ==",
+ "license": "MIT",
"dependencies": {
- "debug": "^4.0.0",
- "parse-entities": "^2.0.0"
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+ "node_modules/@peculiar/asn1-pkcs9": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.9.4.tgz",
+ "integrity": "sha512-kaL4cNxBpdQE2dKlyZBqz4ygCrwffO+8wfoxTEqM1Z8RadvCeELBRzcv0dzM8aY9azHMwODO5nxU65zXmhToOQ==",
+ "license": "MIT",
"dependencies": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
+ "@peculiar/asn1-cms": "^2.9.4",
+ "@peculiar/asn1-pfx": "^2.9.4",
+ "@peculiar/asn1-pkcs8": "^2.9.4",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "@peculiar/asn1-x509-attr": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/remark-parse": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
- "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
+ "node_modules/@peculiar/asn1-rsa": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.9.4.tgz",
+ "integrity": "sha512-pZ96eD1PptovcWQ/GSmuNFXd/7EQJNlKfDaNCyE2rx3W0v6QFelkzquVqRSRyyDXXCYD69ZXJDzZ8GhIiQzKoA==",
+ "license": "MIT",
"dependencies": {
- "mdast-util-from-markdown": "^0.8.0"
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/trough": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
- "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@peculiar/asn1-schema": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.9.4.tgz",
+ "integrity": "sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==",
+ "license": "MIT",
+ "dependencies": {
+ "@peculiar/utils": "^2.0.2",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/unified": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
- "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
+ "node_modules/@peculiar/asn1-x509": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.9.4.tgz",
+ "integrity": "sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q==",
+ "license": "MIT",
"dependencies": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^2.0.0",
- "trough": "^1.0.0",
- "vfile": "^4.0.0"
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/utils": "^2.0.2",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/@peculiar/asn1-x509-attr": {
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.9.4.tgz",
+ "integrity": "sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/unist-util-stringify-position": {
+ "node_modules/@peculiar/utils": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
+ "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz",
+ "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "tslib": "^2.8.1"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/unist-util-visit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
- "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
+ "node_modules/@peculiar/x509": {
+ "version": "1.14.3",
+ "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz",
+ "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^4.0.0"
+ "@peculiar/asn1-cms": "^2.6.0",
+ "@peculiar/asn1-csr": "^2.6.0",
+ "@peculiar/asn1-ecc": "^2.6.0",
+ "@peculiar/asn1-pkcs9": "^2.6.0",
+ "@peculiar/asn1-rsa": "^2.6.0",
+ "@peculiar/asn1-schema": "^2.6.0",
+ "@peculiar/asn1-x509": "^2.6.0",
+ "pvtsutils": "^1.3.6",
+ "reflect-metadata": "^0.2.2",
+ "tslib": "^2.8.1",
+ "tsyringe": "^4.10.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=20.0.0"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/unist-util-visit-parents": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
- "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
+ "node_modules/@philpl/buble": {
+ "version": "0.19.7",
+ "resolved": "https://registry.npmjs.org/@philpl/buble/-/buble-0.19.7.tgz",
+ "integrity": "sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA==",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "acorn": "^6.1.1",
+ "acorn-class-fields": "^0.2.1",
+ "acorn-dynamic-import": "^4.0.0",
+ "acorn-jsx": "^5.0.1",
+ "chalk": "^2.4.2",
+ "magic-string": "^0.25.2",
+ "minimist": "^1.2.0",
+ "os-homedir": "^1.0.1",
+ "regexpu-core": "^4.5.4"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "bin": {
+ "buble": "bin/buble"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/vfile": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
- "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
+ "node_modules/@philpl/buble/node_modules/acorn": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+ "bin": {
+ "acorn": "bin/acorn"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/@philpl/buble/node_modules/acorn-class-fields": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz",
+ "integrity": "sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ==",
+ "engines": {
+ "node": ">=4.8.2"
+ },
+ "peerDependencies": {
+ "acorn": "^6.0.0"
+ }
+ },
+ "node_modules/@philpl/buble/node_modules/acorn-dynamic-import": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
+ "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
+ "peerDependencies": {
+ "acorn": "^6.0.0"
}
},
- "node_modules/@stoplight/markdown-viewer/node_modules/vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+ "node_modules/@philpl/buble/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
+ "color-convert": "^1.9.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@stoplight/markdown/node_modules/@stoplight/types": {
- "version": "12.5.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-12.5.0.tgz",
- "integrity": "sha512-dwqYcDrGmEyUv5TWrDam5TGOxU72ufyQ7hnOIIDdmW5ezOwZaBFoR5XQ9AsH49w7wgvOqB2Bmo799pJPWnpCbg==",
+ "node_modules/@philpl/buble/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "node_modules/@stoplight/markdown/node_modules/bail": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
- "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@philpl/buble/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
}
},
- "node_modules/@stoplight/markdown/node_modules/ccount": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz",
- "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
+ "node_modules/@philpl/buble/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
- "node_modules/@stoplight/markdown/node_modules/character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@philpl/buble/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "node_modules/@stoplight/markdown/node_modules/character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@philpl/buble/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@stoplight/markdown/node_modules/character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@philpl/buble/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
}
},
- "node_modules/@stoplight/markdown/node_modules/fault": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
- "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
+ "node_modules/@philpl/buble/node_modules/regenerate-unicode-properties": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
+ "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
"dependencies": {
- "format": "^0.2.0"
+ "regenerate": "^1.4.2"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@stoplight/markdown/node_modules/is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@philpl/buble/node_modules/regexpu-core": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
+ "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+ "dependencies": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^9.0.0",
+ "regjsgen": "^0.5.2",
+ "regjsparser": "^0.7.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@stoplight/markdown/node_modules/is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
+ "node_modules/@philpl/buble/node_modules/regjsgen": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+ "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
+ },
+ "node_modules/@philpl/buble/node_modules/regjsparser": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
+ "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
"dependencies": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
+ "jsesc": "~0.5.0"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "bin": {
+ "regjsparser": "bin/parser"
}
},
- "node_modules/@stoplight/markdown/node_modules/is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@philpl/buble/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@stoplight/markdown/node_modules/is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@stoplight/markdown/node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "node_modules/@pnpm/config.env-replace": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
+ "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
"engines": {
- "node": ">=8"
+ "node": ">=12.22.0"
}
},
- "node_modules/@stoplight/markdown/node_modules/longest-streak": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
- "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@pnpm/network.ca-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+ "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
+ "dependencies": {
+ "graceful-fs": "4.2.10"
+ },
+ "engines": {
+ "node": ">=12.22.0"
}
},
- "node_modules/@stoplight/markdown/node_modules/markdown-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
- "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
+ "node_modules/@pnpm/npm-conf": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz",
+ "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==",
"dependencies": {
- "repeat-string": "^1.0.0"
+ "@pnpm/config.env-replace": "^1.1.0",
+ "@pnpm/network.ca-file": "^1.0.1",
+ "config-chain": "^1.1.11"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-find-and-replace": {
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.28",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
+ "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==",
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/number": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz",
+ "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==",
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz",
+ "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==",
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/react-arrow": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz",
- "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz",
+ "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==",
+ "license": "MIT",
"dependencies": {
- "escape-string-regexp": "^4.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
+ "@radix-ui/react-primitive": "2.0.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-from-markdown": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
- "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz",
+ "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^2.0.0",
- "micromark": "~2.11.0",
- "parse-entities": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-slot": "1.1.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-frontmatter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz",
- "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==",
- "dependencies": {
- "micromark-extension-frontmatter": "^0.2.0"
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz",
+ "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-gfm": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz",
- "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==",
- "dependencies": {
- "mdast-util-gfm-autolink-literal": "^0.1.0",
- "mdast-util-gfm-strikethrough": "^0.2.0",
- "mdast-util-gfm-table": "^0.1.0",
- "mdast-util-gfm-task-list-item": "^0.1.0",
- "mdast-util-to-markdown": "^0.6.1"
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz",
+ "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-gfm-autolink-literal": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz",
- "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==",
- "dependencies": {
- "ccount": "^1.0.0",
- "mdast-util-find-and-replace": "^1.1.0",
- "micromark": "^2.11.3"
+ "node_modules/@radix-ui/react-direction": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz",
+ "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-gfm-strikethrough": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz",
- "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==",
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.4.tgz",
+ "integrity": "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA==",
+ "license": "MIT",
"dependencies": {
- "mdast-util-to-markdown": "^0.6.0"
+ "@radix-ui/primitive": "1.1.1",
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-escape-keydown": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-gfm-table": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz",
- "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==",
- "dependencies": {
- "markdown-table": "^2.0.0",
- "mdast-util-to-markdown": "~0.6.0"
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz",
+ "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-gfm-task-list-item": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz",
- "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==",
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz",
+ "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==",
+ "license": "MIT",
"dependencies": {
- "mdast-util-to-markdown": "~0.6.0"
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-use-callback-ref": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-to-markdown": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
- "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
+ "node_modules/@radix-ui/react-id": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz",
+ "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "longest-streak": "^2.0.0",
- "mdast-util-to-string": "^2.0.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.0.0",
- "zwitch": "^1.0.0"
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
+ "node_modules/@radix-ui/react-popper": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz",
+ "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0"
+ "@floating-ui/react-dom": "^2.0.0",
+ "@radix-ui/react-arrow": "1.1.1",
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0",
+ "@radix-ui/react-use-rect": "1.1.0",
+ "@radix-ui/react-use-size": "1.1.0",
+ "@radix-ui/rect": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/micromark": {
- "version": "2.11.4",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
- "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
},
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
+ "@types/react-dom": {
+ "optional": true
}
- ],
- "dependencies": {
- "debug": "^4.0.0",
- "parse-entities": "^2.0.0"
}
},
- "node_modules/@stoplight/markdown/node_modules/micromark-extension-frontmatter": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz",
- "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==",
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz",
+ "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==",
+ "license": "MIT",
"dependencies": {
- "fault": "^1.0.0"
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/micromark-extension-gfm": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz",
- "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==",
- "dependencies": {
- "micromark": "~2.11.0",
- "micromark-extension-gfm-autolink-literal": "~0.5.0",
- "micromark-extension-gfm-strikethrough": "~0.6.5",
- "micromark-extension-gfm-table": "~0.4.0",
- "micromark-extension-gfm-tagfilter": "~0.3.0",
- "micromark-extension-gfm-task-list-item": "~0.3.0"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/micromark-extension-gfm-autolink-literal": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz",
- "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==",
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "license": "MIT",
"dependencies": {
- "micromark": "~2.11.3"
+ "@radix-ui/react-slot": "1.1.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/micromark-extension-gfm-strikethrough": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz",
- "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==",
+ "node_modules/@radix-ui/react-select": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.5.tgz",
+ "integrity": "sha512-eVV7N8jBXAXnyrc+PsOF89O9AfVgGnbLxUtBb0clJ8y8ENMWLARGMI/1/SBRLz7u4HqxLgN71BJ17eono3wcjA==",
+ "license": "MIT",
"dependencies": {
- "micromark": "~2.11.0"
+ "@radix-ui/number": "1.1.0",
+ "@radix-ui/primitive": "1.1.1",
+ "@radix-ui/react-collection": "1.1.1",
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-dismissable-layer": "1.1.4",
+ "@radix-ui/react-focus-guards": "1.1.1",
+ "@radix-ui/react-focus-scope": "1.1.1",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-popper": "1.2.1",
+ "@radix-ui/react-portal": "1.1.3",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-slot": "1.1.1",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0",
+ "@radix-ui/react-use-previous": "1.1.0",
+ "@radix-ui/react-visually-hidden": "1.1.1",
+ "aria-hidden": "^1.2.4",
+ "react-remove-scroll": "^2.6.2"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/micromark-extension-gfm-table": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz",
- "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==",
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "license": "MIT",
"dependencies": {
- "micromark": "~2.11.0"
+ "@radix-ui/react-compose-refs": "1.1.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/micromark-extension-gfm-tagfilter": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz",
- "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/micromark-extension-gfm-task-list-item": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz",
- "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==",
- "dependencies": {
- "micromark": "~2.11.0"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "dependencies": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz",
+ "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/remark-frontmatter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz",
- "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==",
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz",
+ "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==",
+ "license": "MIT",
"dependencies": {
- "mdast-util-frontmatter": "^0.2.0",
- "micromark-extension-frontmatter": "^0.2.0"
+ "@radix-ui/react-use-callback-ref": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/remark-gfm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz",
- "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==",
- "dependencies": {
- "mdast-util-gfm": "^0.1.0",
- "micromark-extension-gfm": "^0.3.0"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/remark-parse": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
- "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz",
+ "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==",
+ "license": "MIT",
"dependencies": {
- "mdast-util-from-markdown": "^0.8.0"
+ "@radix-ui/react-use-callback-ref": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/trough": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
- "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/unified": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
- "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
- "dependencies": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^2.0.0",
- "trough": "^1.0.0",
- "vfile": "^4.0.0"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/unist-util-is": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
- "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "dependencies": {
- "@types/unist": "^2.0.2"
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz",
+ "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/unist-util-visit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
- "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^4.0.0"
+ "node_modules/@radix-ui/react-use-previous": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz",
+ "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "node_modules/@radix-ui/react-use-rect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz",
+ "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
+ "@radix-ui/rect": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/unist-util-visit/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
- "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz",
+ "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@stoplight/markdown/node_modules/vfile": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
- "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz",
+ "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
+ "@radix-ui/react-primitive": "2.0.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@stoplight/markdown/node_modules/zwitch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
- "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
+ "node_modules/@radix-ui/rect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz",
+ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==",
+ "license": "MIT"
},
- "node_modules/@stoplight/mosaic": {
- "version": "1.51.3",
- "resolved": "https://registry.npmjs.org/@stoplight/mosaic/-/mosaic-1.51.3.tgz",
- "integrity": "sha512-3C4bAvfG85sO2j6S4saseDbwS4sekmZ9CJy+vwpDK8EaBTy8GEon9TKTkwRiJ9VbFVCNhMVI/xucKuHHMMfYsQ==",
- "dependencies": {
- "@fortawesome/fontawesome-svg-core": "^6.1.1",
- "@fortawesome/react-fontawesome": "^0.2.0",
- "@react-hook/size": "^2.1.1",
- "@react-hook/window-size": "^3.0.7",
- "@react-types/button": "3.4.1",
- "@react-types/radio": "3.1.2",
- "@react-types/shared": "3.9.0",
- "@react-types/switch": "3.1.2",
- "@react-types/textfield": "3.3.0",
- "@stoplight/types": "^13.7.0",
- "@types/react": "^17.0.3",
- "@types/react-dom": "^17.0.3",
- "clsx": "^1.1.1",
- "copy-to-clipboard": "^3.3.1",
- "dom-helpers": "^3.3.1",
- "focus-trap-react": "^10.2.3",
- "lodash.get": "^4.4.2",
- "nano-memoize": "^1.2.1",
- "polished": "^4.1.3",
- "react-fast-compare": "^3.2.0",
- "react-overflow-list": "^0.5.0",
- "ts-keycode-enum": "^1.0.6",
- "tslib": "^2.1.0",
- "use-resize-observer": "^9.0.2",
- "zustand": "^3.5.2"
- },
- "peerDependencies": {
- "react": ">= 16.14"
- }
- },
- "node_modules/@stoplight/mosaic-code-editor": {
- "version": "1.51.3",
- "resolved": "https://registry.npmjs.org/@stoplight/mosaic-code-editor/-/mosaic-code-editor-1.51.3.tgz",
- "integrity": "sha512-tbjA3PFE8XPClO5VMvwbkBeUXwGsDvtckEawU4ZFvh31+Ga9v+qsMgTfqyvYFK9fXNVIKoOclsB1D3c4tLyIiw==",
- "dependencies": {
- "@fortawesome/fontawesome-svg-core": "^6.1.1",
- "@fortawesome/react-fontawesome": "^0.2.0",
- "@react-hook/size": "^2.1.1",
- "@react-hook/window-size": "^3.0.7",
- "@react-types/radio": "3.1.2",
- "@react-types/shared": "3.9.0",
- "@react-types/switch": "3.1.2",
- "@stoplight/mosaic": "1.51.3",
- "@stoplight/mosaic-code-viewer": "1.51.3",
- "@stoplight/types": "^13.7.0",
- "clsx": "^1.1.1",
- "copy-to-clipboard": "^3.3.1",
- "dom-helpers": "^3.3.1",
- "focus-trap-react": "^10.2.3",
- "lodash.get": "^4.4.2",
- "nano-memoize": "^1.2.1",
- "polished": "^4.1.3",
- "prism-react-renderer": "^1.2.1",
- "prismjs": "^1.23.0",
- "react-fast-compare": "^3.2.0",
- "react-overflow-list": "^0.5.0",
- "ts-keycode-enum": "^1.0.6",
- "tslib": "^2.1.0",
- "use-resize-observer": "^9.0.2",
- "zustand": "^3.5.2"
+ "node_modules/@reactflow/background": {
+ "version": "11.3.9",
+ "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.9.tgz",
+ "integrity": "sha512-byj/G9pEC8tN0wT/ptcl/LkEP/BBfa33/SvBkqE4XwyofckqF87lKp573qGlisfnsijwAbpDlf81PuFL41So4Q==",
+ "dependencies": {
+ "@reactflow/core": "11.10.4",
+ "classcat": "^5.0.3",
+ "zustand": "^4.4.1"
},
"peerDependencies": {
- "react": ">= 16.14"
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/@stoplight/mosaic-code-editor/node_modules/@react-types/radio": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.1.2.tgz",
- "integrity": "sha512-vkIic8abrVUyl/YjKU3yTVwn8QgebzuadfV89PsaKc3hdmSiHhDsln5wYsfWOEotqMwPrG1aEv9yRMYO78OQXQ==",
+ "node_modules/@reactflow/controls": {
+ "version": "11.2.9",
+ "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.9.tgz",
+ "integrity": "sha512-e8nWplbYfOn83KN1BrxTXS17+enLyFnjZPbyDgHSRLtI5ZGPKF/8iRXV+VXb2LFVzlu4Wh3la/pkxtfP/0aguA==",
"dependencies": {
- "@react-types/shared": "^3.8.0"
+ "@reactflow/core": "11.10.4",
+ "classcat": "^5.0.3",
+ "zustand": "^4.4.1"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
- }
- },
- "node_modules/@stoplight/mosaic-code-editor/node_modules/@react-types/shared": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.9.0.tgz",
- "integrity": "sha512-YYksINfR6q92P10AhPEGo47Hd7oz1hrnZ6Vx8Gsrq62IbqDdv1XOTzPBaj17Z1ymNY2pitLUSEXsLmozt4wxxQ==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/@stoplight/mosaic-code-editor/node_modules/@react-types/switch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.1.2.tgz",
- "integrity": "sha512-EaYWoLvUCpOnt//Ov8VBxOjbs4hBpYE/rBAzzIknXaFvKOu867iZBFL7FJbcemOgC8/dwyaj6GUZ1Gw3Z1g59w==",
+ "node_modules/@reactflow/core": {
+ "version": "11.10.4",
+ "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.10.4.tgz",
+ "integrity": "sha512-j3i9b2fsTX/sBbOm+RmNzYEFWbNx4jGWGuGooh2r1jQaE2eV+TLJgiG/VNOp0q5mBl9f6g1IXs3Gm86S9JfcGw==",
"dependencies": {
- "@react-types/checkbox": "^3.2.3",
- "@react-types/shared": "^3.8.0"
+ "@types/d3": "^7.4.0",
+ "@types/d3-drag": "^3.0.1",
+ "@types/d3-selection": "^3.0.3",
+ "@types/d3-zoom": "^3.0.1",
+ "classcat": "^5.0.3",
+ "d3-drag": "^3.0.0",
+ "d3-selection": "^3.0.0",
+ "d3-zoom": "^3.0.0",
+ "zustand": "^4.4.1"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/@stoplight/mosaic-code-editor/node_modules/@stoplight/types": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
- "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
+ "node_modules/@reactflow/minimap": {
+ "version": "11.7.9",
+ "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.9.tgz",
+ "integrity": "sha512-le95jyTtt3TEtJ1qa7tZ5hyM4S7gaEQkW43cixcMOZLu33VAdc2aCpJg/fXcRrrf7moN2Mbl9WIMNXUKsp5ILA==",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
+ "@reactflow/core": "11.10.4",
+ "@types/d3-selection": "^3.0.3",
+ "@types/d3-zoom": "^3.0.1",
+ "classcat": "^5.0.3",
+ "d3-selection": "^3.0.0",
+ "d3-zoom": "^3.0.0",
+ "zustand": "^4.4.1"
},
- "engines": {
- "node": "^12.20 || >=14.13"
- }
- },
- "node_modules/@stoplight/mosaic-code-editor/node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@stoplight/mosaic-code-editor/node_modules/prism-react-renderer": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz",
- "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==",
"peerDependencies": {
- "react": ">=0.14.9"
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/@stoplight/mosaic-code-editor/node_modules/zustand": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
- "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
- "engines": {
- "node": ">=12.7.0"
+ "node_modules/@reactflow/node-resizer": {
+ "version": "2.2.9",
+ "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.9.tgz",
+ "integrity": "sha512-HfickMm0hPDIHt9qH997nLdgLt0kayQyslKE0RS/GZvZ4UMQJlx/NRRyj5y47Qyg0NnC66KYOQWDM9LLzRTnUg==",
+ "dependencies": {
+ "@reactflow/core": "11.10.4",
+ "classcat": "^5.0.4",
+ "d3-drag": "^3.0.0",
+ "d3-selection": "^3.0.0",
+ "zustand": "^4.4.1"
},
"peerDependencies": {
- "react": ">=16.8"
- },
- "peerDependenciesMeta": {
- "react": {
- "optional": true
- }
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/@stoplight/mosaic-code-viewer": {
- "version": "1.51.3",
- "resolved": "https://registry.npmjs.org/@stoplight/mosaic-code-viewer/-/mosaic-code-viewer-1.51.3.tgz",
- "integrity": "sha512-S+efac0brZrFw4mt75dLCJim4tBilmr80HoIwrCgc3opqdmFlGvksu+bwp3pIJu2Hk/JQxrLu+eZ4DZ7TgDc8Q==",
- "dependencies": {
- "@fortawesome/fontawesome-svg-core": "^6.1.1",
- "@fortawesome/react-fontawesome": "^0.2.0",
- "@react-hook/size": "^2.1.1",
- "@react-hook/window-size": "^3.0.7",
- "@react-types/radio": "3.1.2",
- "@react-types/shared": "3.9.0",
- "@react-types/switch": "3.1.2",
- "@stoplight/mosaic": "1.51.3",
- "@stoplight/types": "^13.7.0",
- "clsx": "^1.1.1",
- "copy-to-clipboard": "^3.3.1",
- "dom-helpers": "^3.3.1",
- "focus-trap-react": "^10.2.3",
- "lodash.get": "^4.4.2",
- "nano-memoize": "^1.2.1",
- "polished": "^4.1.3",
- "prism-react-renderer": "^1.2.1",
- "prismjs": "^1.23.0",
- "react-fast-compare": "^3.2.0",
- "react-overflow-list": "^0.5.0",
- "ts-keycode-enum": "^1.0.6",
- "tslib": "^2.1.0",
- "use-resize-observer": "^9.0.2",
- "zustand": "^3.5.2"
+ "node_modules/@reactflow/node-toolbar": {
+ "version": "1.3.9",
+ "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.9.tgz",
+ "integrity": "sha512-VmgxKmToax4sX1biZ9LXA7cj/TBJ+E5cklLGwquCCVVxh+lxpZGTBF3a5FJGVHiUNBBtFsC8ldcSZIK4cAlQww==",
+ "dependencies": {
+ "@reactflow/core": "11.10.4",
+ "classcat": "^5.0.3",
+ "zustand": "^4.4.1"
},
"peerDependencies": {
- "react": ">= 16.14"
+ "react": ">=17",
+ "react-dom": ">=17"
}
},
- "node_modules/@stoplight/mosaic-code-viewer/node_modules/@react-types/radio": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.1.2.tgz",
- "integrity": "sha512-vkIic8abrVUyl/YjKU3yTVwn8QgebzuadfV89PsaKc3hdmSiHhDsln5wYsfWOEotqMwPrG1aEv9yRMYO78OQXQ==",
+ "node_modules/@redocly/ajv": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.3.tgz",
+ "integrity": "sha512-l42u0of3hY98sN2A+M4qTX1O/KrpgGH32Hu9kP2GtHyD5Dfqq86PKFLe5dwaD8DEnNmlOlll2BAmeEtf0DaySg==",
+ "license": "MIT",
"dependencies": {
- "@react-types/shared": "^3.8.0"
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
},
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/@stoplight/mosaic-code-viewer/node_modules/@react-types/shared": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.9.0.tgz",
- "integrity": "sha512-YYksINfR6q92P10AhPEGo47Hd7oz1hrnZ6Vx8Gsrq62IbqDdv1XOTzPBaj17Z1ymNY2pitLUSEXsLmozt4wxxQ==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
- }
+ "node_modules/@redocly/ajv/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
},
- "node_modules/@stoplight/mosaic-code-viewer/node_modules/@react-types/switch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.1.2.tgz",
- "integrity": "sha512-EaYWoLvUCpOnt//Ov8VBxOjbs4hBpYE/rBAzzIknXaFvKOu867iZBFL7FJbcemOgC8/dwyaj6GUZ1Gw3Z1g59w==",
+ "node_modules/@redocly/config": {
+ "version": "0.53.1",
+ "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.53.1.tgz",
+ "integrity": "sha512-aOldTWynKS3ZM6u8WkL72d94QBobITv9X6UECiZykgVjdLiAqV737bPVLGKJYPWf0Ryf3zSHgUYALjCj66BkdA==",
+ "license": "MIT",
"dependencies": {
- "@react-types/checkbox": "^3.2.3",
- "@react-types/shared": "^3.8.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
+ "json-schema-to-ts": "2.7.2"
}
},
- "node_modules/@stoplight/mosaic-code-viewer/node_modules/@stoplight/types": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
- "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
+ "node_modules/@redocly/openapi-core": {
+ "version": "2.46.2",
+ "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.46.2.tgz",
+ "integrity": "sha512-RWbV3vc5/w1L/ye8uC+WtEZ3jwdAxfCokLrGd7fB1sZ8hEzkNVmPUv2+y+ainRsoNyahPP9nM4wtdL2Tb6kYWA==",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
+ "@redocly/ajv": "^8.18.3",
+ "@redocly/config": "^0.53.1",
+ "ajv": "npm:@redocly/ajv@^8.18.3",
+ "ajv-formats": "^3.0.1",
+ "colorette": "^1.2.0",
+ "graphql": "^16.14.1",
+ "js-levenshtein": "^1.1.6",
+ "js-yaml": "^5.2.2",
+ "picomatch": "^4.0.4",
+ "pluralize": "^8.0.0",
+ "yaml-ast-parser": "0.0.43"
},
"engines": {
- "node": "^12.20 || >=14.13"
+ "node": ">=22.12.0 || >=20.19.0 <21.0.0",
+ "npm": ">=10"
}
},
- "node_modules/@stoplight/mosaic-code-viewer/node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "node_modules/@redocly/openapi-core/node_modules/ajv": {
+ "name": "@redocly/ajv",
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.3.tgz",
+ "integrity": "sha512-l42u0of3hY98sN2A+M4qTX1O/KrpgGH32Hu9kP2GtHyD5Dfqq86PKFLe5dwaD8DEnNmlOlll2BAmeEtf0DaySg==",
"license": "MIT",
- "engines": {
- "node": ">=6"
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/@stoplight/mosaic-code-viewer/node_modules/prism-react-renderer": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz",
- "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==",
- "peerDependencies": {
- "react": ">=0.14.9"
+ "node_modules/@redocly/openapi-core/node_modules/js-yaml": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.3.0.tgz",
+ "integrity": "sha512-muutsYr+e2+d3rTgUGslq5rxbBlUy3cJ61IsHag2QNDQV+7zXWjkUpmALIajhrlLlrgRUiymj6U3zUr/TMK84Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.mjs"
}
},
- "node_modules/@stoplight/mosaic-code-viewer/node_modules/zustand": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
- "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
+ "node_modules/@redocly/openapi-core/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/@redocly/openapi-core/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "license": "MIT",
"engines": {
- "node": ">=12.7.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@reduxjs/toolkit": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.12.0.tgz",
+ "integrity": "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.0.0",
+ "@standard-schema/utils": "^0.3.0",
+ "immer": "^11.0.0",
+ "redux": "^5.0.1",
+ "redux-thunk": "^3.1.0",
+ "reselect": "^5.1.0"
},
"peerDependencies": {
- "react": ">=16.8"
+ "react": "^16.9.0 || ^17.0.0 || ^18 || ^19",
+ "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0"
},
"peerDependenciesMeta": {
"react": {
"optional": true
+ },
+ "react-redux": {
+ "optional": true
}
}
},
- "node_modules/@stoplight/mosaic/node_modules/@react-types/button": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.4.1.tgz",
- "integrity": "sha512-B54M84LxdEppwjXNlkBEJyMfe9fd+bvFV7R6+NJvupGrZm/LuFNYjFcHk7yjMKWTdWm6DbpIuQz54n5qTW7Vlg==",
- "dependencies": {
- "@react-types/shared": "^3.8.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
+ "node_modules/@rspack/binding": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.12.tgz",
+ "integrity": "sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA==",
+ "license": "MIT",
+ "optionalDependencies": {
+ "@rspack/binding-darwin-arm64": "1.7.12",
+ "@rspack/binding-darwin-x64": "1.7.12",
+ "@rspack/binding-linux-arm64-gnu": "1.7.12",
+ "@rspack/binding-linux-arm64-musl": "1.7.12",
+ "@rspack/binding-linux-x64-gnu": "1.7.12",
+ "@rspack/binding-linux-x64-musl": "1.7.12",
+ "@rspack/binding-wasm32-wasi": "1.7.12",
+ "@rspack/binding-win32-arm64-msvc": "1.7.12",
+ "@rspack/binding-win32-ia32-msvc": "1.7.12",
+ "@rspack/binding-win32-x64-msvc": "1.7.12"
}
},
- "node_modules/@stoplight/mosaic/node_modules/@react-types/radio": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.1.2.tgz",
- "integrity": "sha512-vkIic8abrVUyl/YjKU3yTVwn8QgebzuadfV89PsaKc3hdmSiHhDsln5wYsfWOEotqMwPrG1aEv9yRMYO78OQXQ==",
- "dependencies": {
- "@react-types/shared": "^3.8.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
- }
+ "node_modules/@rspack/binding-darwin-arm64": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.12.tgz",
+ "integrity": "sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "node_modules/@stoplight/mosaic/node_modules/@react-types/shared": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.9.0.tgz",
- "integrity": "sha512-YYksINfR6q92P10AhPEGo47Hd7oz1hrnZ6Vx8Gsrq62IbqDdv1XOTzPBaj17Z1ymNY2pitLUSEXsLmozt4wxxQ==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
- }
+ "node_modules/@rspack/binding-darwin-x64": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.12.tgz",
+ "integrity": "sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "node_modules/@stoplight/mosaic/node_modules/@react-types/switch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.1.2.tgz",
- "integrity": "sha512-EaYWoLvUCpOnt//Ov8VBxOjbs4hBpYE/rBAzzIknXaFvKOu867iZBFL7FJbcemOgC8/dwyaj6GUZ1Gw3Z1g59w==",
- "dependencies": {
- "@react-types/checkbox": "^3.2.3",
- "@react-types/shared": "^3.8.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
- }
+ "node_modules/@rspack/binding-linux-arm64-gnu": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.12.tgz",
+ "integrity": "sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@stoplight/mosaic/node_modules/@react-types/textfield": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.3.0.tgz",
- "integrity": "sha512-lOf0tx3c3dVaomH/uvKpOKFVTXQ232kLnMhOJTtj97JDX7fTr3SNhDUV0G8Zf4M0vr+l+xkTrJkywYE23rzliw==",
- "dependencies": {
- "@react-types/shared": "^3.9.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1"
- }
+ "node_modules/@rspack/binding-linux-arm64-musl": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.12.tgz",
+ "integrity": "sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@stoplight/mosaic/node_modules/@stoplight/types": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
- "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
+ "node_modules/@rspack/binding-linux-x64-gnu": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.12.tgz",
+ "integrity": "sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rspack/binding-linux-x64-musl": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.12.tgz",
+ "integrity": "sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rspack/binding-wasm32-wasi": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.12.tgz",
+ "integrity": "sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
- },
- "engines": {
- "node": "^12.20 || >=14.13"
+ "@napi-rs/wasm-runtime": "1.0.7"
}
},
- "node_modules/@stoplight/mosaic/node_modules/@types/react": {
- "version": "17.0.75",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.75.tgz",
- "integrity": "sha512-MSA+NzEzXnQKrqpO63CYqNstFjsESgvJAdAyyJ1n6ZQq/GLgf6nOfIKwk+Twuz0L1N6xPe+qz5xRCJrbhMaLsw==",
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
+ "node_modules/@rspack/binding-win32-arm64-msvc": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.12.tgz",
+ "integrity": "sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rspack/binding-win32-ia32-msvc": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.12.tgz",
+ "integrity": "sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@stoplight/mosaic/node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "node_modules/@rspack/binding-win32-x64-msvc": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.12.tgz",
+ "integrity": "sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "engines": {
- "node": ">=6"
- }
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@stoplight/mosaic/node_modules/zustand": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
- "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
+ "node_modules/@rspack/core": {
+ "version": "1.7.12",
+ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.12.tgz",
+ "integrity": "sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@module-federation/runtime-tools": "0.22.0",
+ "@rspack/binding": "1.7.12",
+ "@rspack/lite-tapable": "1.1.0"
+ },
"engines": {
- "node": ">=12.7.0"
+ "node": ">=18.12.0"
},
"peerDependencies": {
- "react": ">=16.8"
+ "@swc/helpers": ">=0.5.1"
},
"peerDependenciesMeta": {
- "react": {
+ "@swc/helpers": {
"optional": true
}
}
},
- "node_modules/@stoplight/ordered-object-literal": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz",
- "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==",
- "engines": {
- "node": ">=8"
- }
+ "node_modules/@rspack/lite-tapable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz",
+ "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==",
+ "license": "MIT"
},
- "node_modules/@stoplight/path": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz",
- "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==",
- "engines": {
- "node": ">=8"
+ "node_modules/@sideway/address": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
+ "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
}
},
- "node_modules/@stoplight/react-error-boundary": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@stoplight/react-error-boundary/-/react-error-boundary-3.0.0.tgz",
- "integrity": "sha512-lFuTpGy2fu4hffmRTnJot1URa9/ifVLyPPQg62WW3RYo9LsxxHF0PrnFzAeXEQb40g1kc55S/oX6zQc8YJrKXg==",
+ "node_modules/@sideway/formula": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+ "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@sideway/pinpoint": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.12",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.12.tgz",
+ "integrity": "sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==",
+ "license": "MIT"
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@stoplight/types": {
- "version": "14.1.1",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz",
- "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==",
- "dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
- },
- "engines": {
- "node": "^12.20 || >=14.13"
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
- "node_modules/@stoplight/yaml": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.2.3.tgz",
- "integrity": "sha512-Mx01wjRAR9C7yLMUyYFTfbUf5DimEpHMkRDQ1PKLe9dfNILbgdxyrncsOXM3vCpsQ1Hfj4bPiGl+u4u6e9Akqw==",
+ "node_modules/@slorber/remark-comment": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz",
+ "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==",
+ "license": "MIT",
"dependencies": {
- "@stoplight/ordered-object-literal": "^1.0.1",
- "@stoplight/types": "^13.0.0",
- "@stoplight/yaml-ast-parser": "0.0.48",
- "tslib": "^2.2.0"
- },
- "engines": {
- "node": ">=10.8"
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.1.0",
+ "micromark-util-symbol": "^1.0.1"
}
},
- "node_modules/@stoplight/yaml-ast-parser": {
- "version": "0.0.48",
- "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.48.tgz",
- "integrity": "sha512-sV+51I7WYnLJnKPn2EMWgS4EUfoP4iWEbrWwbXsj0MZCB/xOK8j6+C9fntIdOM50kpx45ZLC3s6kwKivWuqvyg=="
+ "node_modules/@standard-schema/spec": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
+ "license": "MIT"
},
- "node_modules/@stoplight/yaml/node_modules/@stoplight/types": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
- "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
- "dependencies": {
- "@types/json-schema": "^7.0.4",
- "utility-types": "^3.10.0"
- },
- "engines": {
- "node": "^12.20 || >=14.13"
- }
+ "node_modules/@standard-schema/utils": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz",
+ "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==",
+ "license": "MIT"
},
"node_modules/@styled-icons/boxicons-logos": {
"version": "10.47.0",
@@ -8937,14 +7454,14 @@
}
},
"node_modules/@swc/core": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.11.tgz",
- "integrity": "sha512-3zGU5y3S20cAwot9ZcsxVFNsSVaptG+dKdmAxORSE3EX7ixe1Xn5kUwLlgIsM4qrwTUWCJDLNhRS+2HLFivcDg==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.16.1.tgz",
+ "integrity": "sha512-nUaeu91O5QZKrQdaDCHd402ogUIoNOOjpkZNq0UomWK0G6gDaGmLhvddF1/3BXf5O8aLyo6ZPY/aMDWvaJQ/hg==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3",
- "@swc/types": "^0.1.17"
+ "@swc/types": "^0.1.28"
},
"engines": {
"node": ">=10"
@@ -8954,19 +7471,21 @@
"url": "https://opencollective.com/swc"
},
"optionalDependencies": {
- "@swc/core-darwin-arm64": "1.10.11",
- "@swc/core-darwin-x64": "1.10.11",
- "@swc/core-linux-arm-gnueabihf": "1.10.11",
- "@swc/core-linux-arm64-gnu": "1.10.11",
- "@swc/core-linux-arm64-musl": "1.10.11",
- "@swc/core-linux-x64-gnu": "1.10.11",
- "@swc/core-linux-x64-musl": "1.10.11",
- "@swc/core-win32-arm64-msvc": "1.10.11",
- "@swc/core-win32-ia32-msvc": "1.10.11",
- "@swc/core-win32-x64-msvc": "1.10.11"
- },
- "peerDependencies": {
- "@swc/helpers": "*"
+ "@swc/core-darwin-arm64": "1.16.1",
+ "@swc/core-darwin-x64": "1.16.1",
+ "@swc/core-linux-arm-gnueabihf": "1.16.1",
+ "@swc/core-linux-arm64-gnu": "1.16.1",
+ "@swc/core-linux-arm64-musl": "1.16.1",
+ "@swc/core-linux-ppc64-gnu": "1.16.1",
+ "@swc/core-linux-s390x-gnu": "1.16.1",
+ "@swc/core-linux-x64-gnu": "1.16.1",
+ "@swc/core-linux-x64-musl": "1.16.1",
+ "@swc/core-win32-arm64-msvc": "1.16.1",
+ "@swc/core-win32-ia32-msvc": "1.16.1",
+ "@swc/core-win32-x64-msvc": "1.16.1"
+ },
+ "peerDependencies": {
+ "@swc/helpers": ">=0.5.17"
},
"peerDependenciesMeta": {
"@swc/helpers": {
@@ -8975,9 +7494,9 @@
}
},
"node_modules/@swc/core-darwin-arm64": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.11.tgz",
- "integrity": "sha512-ZpgEaNcx2e5D+Pd0yZGVbpSrEDOEubn7r2JXoNBf0O85lPjUm3HDzGRfLlV/MwxRPAkwm93eLP4l7gYnc50l3g==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.16.1.tgz",
+ "integrity": "sha512-zlJblJ8ncErD43lKdxjbUaUskJQf+LxiPXYcWXD8/8ZMV+7uuAT+CwjciLXpyZBd5Pq/S726bMpeeAwSeL1hhg==",
"cpu": [
"arm64"
],
@@ -8991,9 +7510,9 @@
}
},
"node_modules/@swc/core-darwin-x64": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.11.tgz",
- "integrity": "sha512-szObinnq2o7spXMDU5pdunmUeLrfV67Q77rV+DyojAiGJI1RSbEQotLOk+ONOLpoapwGUxOijFG4IuX1xiwQ2g==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.16.1.tgz",
+ "integrity": "sha512-IN0BmPWb0YAh/17mmlWB/HDBtTw2MfuW4hulf/tQAgTQBRH17l+z499bNJLK6LizSjqs0P7V+jU38Zj+vJC1DA==",
"cpu": [
"x64"
],
@@ -9007,9 +7526,9 @@
}
},
"node_modules/@swc/core-linux-arm-gnueabihf": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.11.tgz",
- "integrity": "sha512-tVE8aXQwd8JUB9fOGLawFJa76nrpvp3dvErjozMmWSKWqtoeO7HV83aOrVtc8G66cj4Vq7FjTE9pOJeV1FbKRw==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.16.1.tgz",
+ "integrity": "sha512-EYgrx2YOCQ2Twz2S793kqNjPkpvYVUPzzR95bIb7by+VQcyaai4lZZ2iz/tZvcFVKSNcN3/JTKwx+aBn2ZL52A==",
"cpu": [
"arm"
],
@@ -9023,9 +7542,9 @@
}
},
"node_modules/@swc/core-linux-arm64-gnu": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.11.tgz",
- "integrity": "sha512-geFkENU5GMEKO7FqHOaw9HVlpQEW10nICoM6ubFc0hXBv8dwRXU4vQbh9s/isLSFRftw1m4jEEWixAnXSw8bxQ==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.16.1.tgz",
+ "integrity": "sha512-moyKm0YZlHdHohzm1YwgAyesqnE853rO0REMfJLFAova51wF9BNi+3ZW2PeS7Vqvn6HeJuepLpAHbBdZctxpHA==",
"cpu": [
"arm64"
],
@@ -9039,9 +7558,9 @@
}
},
"node_modules/@swc/core-linux-arm64-musl": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.11.tgz",
- "integrity": "sha512-2mMscXe/ivq8c4tO3eQSbQDFBvagMJGlalXCspn0DgDImLYTEnt/8KHMUMGVfh0gMJTZ9q4FlGLo7mlnbx99MQ==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.16.1.tgz",
+ "integrity": "sha512-kKGBO9wdapiSzuf5ZzZ2fYtlu1BNSYtIIUxvH1ir/gcelTOREEHGDCLTDFx/2Knf878nU11A40z7LxwasEFxqA==",
"cpu": [
"arm64"
],
@@ -9054,10 +7573,42 @@
"node": ">=10"
}
},
+ "node_modules/@swc/core-linux-ppc64-gnu": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.16.1.tgz",
+ "integrity": "sha512-nZ6qahtLxC3PM54cWOQZHxt4lTCF/3J4LIoWWzz6v7A+rLs8Dx54anYQf7mH3eIi8KlNpgKci/ie8ZSqFN8O7A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-s390x-gnu": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.16.1.tgz",
+ "integrity": "sha512-4ji5PNzhYq193Z4/4xUaSoNJza6iCkDJSzhetrbB6KOYxsr+kxtQr8ePWhMJUiMt6JUWtXaZ1PYT8FhtED+nGA==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@swc/core-linux-x64-gnu": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.11.tgz",
- "integrity": "sha512-eu2apgDbC4xwsigpl6LS+iyw6a3mL6kB4I+6PZMbFF2nIb1Dh7RGnu70Ai6mMn1o80fTmRSKsCT3CKMfVdeNFg==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.16.1.tgz",
+ "integrity": "sha512-VJQxqrisHV+B394IgrOu8YsIIXZgffnf5tO+yc9Z/hoUpuZEvuQTjWwlnpZdpyD+0nx6LTD1/3k646JYm43yJA==",
"cpu": [
"x64"
],
@@ -9071,9 +7622,9 @@
}
},
"node_modules/@swc/core-linux-x64-musl": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.11.tgz",
- "integrity": "sha512-0n+wPWpDigwqRay4IL2JIvAqSKCXv6nKxPig9M7+epAlEQlqX+8Oq/Ap3yHtuhjNPb7HmnqNJLCXT1Wx+BZo0w==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.16.1.tgz",
+ "integrity": "sha512-r9oV1mwxxsIGcLV1IQ/tw76MW3doatKze1QFWuC+a7QqJUkhY/bKTSVk6NpKKUGm2LDsE33Va8VqSClfA7vSiQ==",
"cpu": [
"x64"
],
@@ -9087,9 +7638,9 @@
}
},
"node_modules/@swc/core-win32-arm64-msvc": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.11.tgz",
- "integrity": "sha512-7+bMSIoqcbXKosIVd314YjckDRPneA4OpG1cb3/GrkQTEDXmWT3pFBBlJf82hzJfw7b6lfv6rDVEFBX7/PJoLA==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.16.1.tgz",
+ "integrity": "sha512-6huNRessoBLxWEqBm5zJXyCQ27TO7anvkdiuQ5MDO4CJni0nOXEqKtV9RllQ2TdyENKKsUMXVnIfW2hIXx/R5Q==",
"cpu": [
"arm64"
],
@@ -9103,9 +7654,9 @@
}
},
"node_modules/@swc/core-win32-ia32-msvc": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.11.tgz",
- "integrity": "sha512-6hkLl4+3KjP/OFTryWxpW7YFN+w4R689TSPwiII4fFgsFNupyEmLWWakKfkGgV2JVA59L4Oi02elHy/O1sbgtw==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.16.1.tgz",
+ "integrity": "sha512-OVKJFUzphrGmsh+BGtcZDesx0YryV7/Yvy5XGgTqnrZfjnyfcr5uaqYQugCckdIlupc5Vs3XtDjRAj12z4ZPlw==",
"cpu": [
"ia32"
],
@@ -9119,9 +7670,9 @@
}
},
"node_modules/@swc/core-win32-x64-msvc": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.11.tgz",
- "integrity": "sha512-kKNE2BGu/La2k2WFHovenqZvGQAHRIU+rd2/6a7D6EiQ6EyimtbhUqjCCZ+N1f5fIAnvM+sMdLiQJq4jdd/oOQ==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.16.1.tgz",
+ "integrity": "sha512-Bt+VIhWYCGk4urklnkkteLUOeLv1VxigwTCeB/xC6rBZxY6IIKdDwCJf6on3E3SUGsIqmQS6QqtuJQc1VxF4Aw==",
"cpu": [
"x64"
],
@@ -9141,9 +7692,9 @@
"license": "Apache-2.0"
},
"node_modules/@swc/html": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.10.11.tgz",
- "integrity": "sha512-EnXMC+2yy5U0lMCILB0/lGiHKCzMFg+a//USyshnQwrT4Bw53DaMOJoG20LWHIkYThIHTQ4VXMs/zILjuCwY5Q==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.16.1.tgz",
+ "integrity": "sha512-OYkogBdrxP4kziTlIrFoXgpGfjgoqVjoQKbPleHw4XEXrSgbHeQkkQXYOSZGLl6Q1d1JFsFHuL6Tars/IN9EWQ==",
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3"
@@ -9152,22 +7703,24 @@
"node": ">=14"
},
"optionalDependencies": {
- "@swc/html-darwin-arm64": "1.10.11",
- "@swc/html-darwin-x64": "1.10.11",
- "@swc/html-linux-arm-gnueabihf": "1.10.11",
- "@swc/html-linux-arm64-gnu": "1.10.11",
- "@swc/html-linux-arm64-musl": "1.10.11",
- "@swc/html-linux-x64-gnu": "1.10.11",
- "@swc/html-linux-x64-musl": "1.10.11",
- "@swc/html-win32-arm64-msvc": "1.10.11",
- "@swc/html-win32-ia32-msvc": "1.10.11",
- "@swc/html-win32-x64-msvc": "1.10.11"
+ "@swc/html-darwin-arm64": "1.16.1",
+ "@swc/html-darwin-x64": "1.16.1",
+ "@swc/html-linux-arm-gnueabihf": "1.16.1",
+ "@swc/html-linux-arm64-gnu": "1.16.1",
+ "@swc/html-linux-arm64-musl": "1.16.1",
+ "@swc/html-linux-ppc64-gnu": "1.16.1",
+ "@swc/html-linux-s390x-gnu": "1.16.1",
+ "@swc/html-linux-x64-gnu": "1.16.1",
+ "@swc/html-linux-x64-musl": "1.16.1",
+ "@swc/html-win32-arm64-msvc": "1.16.1",
+ "@swc/html-win32-ia32-msvc": "1.16.1",
+ "@swc/html-win32-x64-msvc": "1.16.1"
}
},
"node_modules/@swc/html-darwin-arm64": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.10.11.tgz",
- "integrity": "sha512-ifRcjQEXzyKeo+jKLfpAjZ2RTZzcroLDkHwCH/VUhQhhJiirF0wom+ZsxdSC3XWK7crdz3k7Ge0xMkcRA4j/hg==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.16.1.tgz",
+ "integrity": "sha512-kFs0Rk9pMb/FiX7BaRhSKsw4J4VoBR0J/iO1h5WtegcXz5kuR3L2VHhde0zSJt6irZU+NgiAw5ULLJJo/+yDCQ==",
"cpu": [
"arm64"
],
@@ -9181,9 +7734,9 @@
}
},
"node_modules/@swc/html-darwin-x64": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.10.11.tgz",
- "integrity": "sha512-vT6kL3CS5fn8YRfB4eMEblMSHFCMog5Xg2xeF6il3quktMZ/C7McvgKrNexnRmX0EjoyXlO2xKxX+jqKgkX/QA==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.16.1.tgz",
+ "integrity": "sha512-oItqtVJ2WnHVxI2TqcQJ/VM1LNHwJhhf0a2syioT0dhYiR6b6jidMFRmlgTTTSBxqxwiSHhAeDYyx7HHAn7b1g==",
"cpu": [
"x64"
],
@@ -9197,9 +7750,9 @@
}
},
"node_modules/@swc/html-linux-arm-gnueabihf": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.10.11.tgz",
- "integrity": "sha512-q/h1w6kAxbQtPyeeJeyBTXPmc2QPMMipn9JBDuZgeKNscP1OwFWdo2ocQ5qlwxmipti88ss8dYzRn+ZTuYz5+Q==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.16.1.tgz",
+ "integrity": "sha512-5+VAuNhby3fuciNmLe5R5ypZemE5Qq3DJUM0cp9JPb7oVJVM/KqXbxedhI70J5chqFSrfAR7/7OWDxxL8CBNvg==",
"cpu": [
"arm"
],
@@ -9213,9 +7766,9 @@
}
},
"node_modules/@swc/html-linux-arm64-gnu": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.10.11.tgz",
- "integrity": "sha512-oO+FNNBiS7v86dLiEsarm5f6UXEIAzSOZyEc91bzvBS825OvB7Dk2ENEd6XKDqfRbtdLgW3FEoY8yGjPtT3uDg==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.16.1.tgz",
+ "integrity": "sha512-27mr1L1WR1bsC9t3NkK6JWK5TMIC9fbz0QlM1yzaqRwn9Hs7S48ZkJAk5TC0lNxsU/BLrEr4kMLaDAJ8aVkjig==",
"cpu": [
"arm64"
],
@@ -9229,9 +7782,9 @@
}
},
"node_modules/@swc/html-linux-arm64-musl": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.10.11.tgz",
- "integrity": "sha512-CblnT+oTyHRXZhlUhZYbxEx9XDsTq0xSyuWxxkd9mSi7xl5SVhl5S3s62t+tnyl1mt/noWluxGzJWCAAEyaK2A==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.16.1.tgz",
+ "integrity": "sha512-jKLc+AiR64y8RdMpBbpccgmMfVvcPOhrgMyewCLgyB3qS0wXa107KLzdFSOFdsCJiOGdzuoHygImmptek7vgBg==",
"cpu": [
"arm64"
],
@@ -9244,10 +7797,42 @@
"node": ">=10"
}
},
+ "node_modules/@swc/html-linux-ppc64-gnu": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.16.1.tgz",
+ "integrity": "sha512-BGWhTWe8ef2Z76GE8MTxNpyDiHAqnjtQ2LFi4qb4XuoCoBSCxYC0+7kw72D/98+gSCvjWqGBFY9kz6QiSalS4g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/html-linux-s390x-gnu": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.16.1.tgz",
+ "integrity": "sha512-8VYsjv33X1afDdXfVVV9m3lkvjAnMUNHWSSmqf9+LIXwg6GfNynf88U8w6MYS6809+9EtuBBxhePF3u9J0EaVw==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@swc/html-linux-x64-gnu": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.10.11.tgz",
- "integrity": "sha512-iniu0fwWG8CQwyAVwKHZ3ErS5PFNisgwutKMwSkA9W+npMmbYhwlsD7XyLqmtEkg1AKkjkSabCl0VWDyWR1CCA==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.16.1.tgz",
+ "integrity": "sha512-VUr08k9KncdAJGWO8dSNzY0JdZPKo1+7PjH/eNo5p1Fv9AwL4lzzh2uRvmYn9Ill2qfazPY+0Gse8BCWPL3KIw==",
"cpu": [
"x64"
],
@@ -9261,9 +7846,9 @@
}
},
"node_modules/@swc/html-linux-x64-musl": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.10.11.tgz",
- "integrity": "sha512-DWosb1UmiCCv9K9k4c2ny3hYqIV460KgxkWsEVQm9QXF/FEqiaJNhsZ439gPu+v363w3aSs9gdezTgb0/w7iEg==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.16.1.tgz",
+ "integrity": "sha512-1i7cIhBoRlglaAOdOBv4rKH5N7MZygH4z7R5QloBuQVlQ/5lkL00yKU5ZdCa0tR5/ri6Q/JuR5PeuYNg63P67g==",
"cpu": [
"x64"
],
@@ -9277,9 +7862,9 @@
}
},
"node_modules/@swc/html-win32-arm64-msvc": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.10.11.tgz",
- "integrity": "sha512-yn92xHgPkP+AAy7vjUMOi1qt2Sk8U9TDloKNXkUG7PrdcvjQLJHuiFaynDfz6hQoyx5SpSGiH96ry5ohCnlvXA==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.16.1.tgz",
+ "integrity": "sha512-zOKTv8W1y2ir5+uylfS/s0D64DxU0PtH0G1bjCxOKsQVDURwZmZ1Ehdyinv+CCM/kNDlgLJz2ssaynHiYlmQaQ==",
"cpu": [
"arm64"
],
@@ -9293,9 +7878,9 @@
}
},
"node_modules/@swc/html-win32-ia32-msvc": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.10.11.tgz",
- "integrity": "sha512-wD19i93lgxTKcCuAMN9Hj0NZUnMXr0xwGZTIVa+azEpauEA+GJq/v3WI5ANDbC4weyHy0YajbDHVqyGgj+Qy+g==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.16.1.tgz",
+ "integrity": "sha512-A1o1FujsjwaJbi8riZt5nxsJI//95elt9O0ryt43zlyVKB/WdGdPu2fPS4jkDhQov9baqcQkHLv210aFl9rzbQ==",
"cpu": [
"ia32"
],
@@ -9309,9 +7894,9 @@
}
},
"node_modules/@swc/html-win32-x64-msvc": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.10.11.tgz",
- "integrity": "sha512-jLyrsDepDGeCe5pr9G2qTX9xXqR8a8x0M2z6R0IN3Qz2olFoAiiArCnrztnGKuG3fsjfTb3hJK/HbeMgl9DMNQ==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.16.1.tgz",
+ "integrity": "sha512-b14EbrfRC7Qmy1nGHEBk2qlsgoIQAtCV93a09ibHVZ5IH9JBy8o+tCcsn9KcLdhGmYM+nLP3zJ90czixPZGshg==",
"cpu": [
"x64"
],
@@ -9325,9 +7910,9 @@
}
},
"node_modules/@swc/types": {
- "version": "0.1.17",
- "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz",
- "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==",
+ "version": "0.1.28",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.28.tgz",
+ "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==",
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3"
@@ -9369,28 +7954,20 @@
"url": "https://github.com/sponsors/tannerlinsley"
}
},
- "node_modules/@trysound/sax": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
- "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
- "license": "ISC",
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/@types/acorn": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
- "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
+ "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
"license": "MIT",
+ "optional": true,
"dependencies": {
- "@types/estree": "*"
+ "tslib": "^2.4.0"
}
},
"node_modules/@types/body-parser": {
- "version": "1.19.5",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
- "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "version": "1.19.6",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
+ "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
"license": "MIT",
"dependencies": {
"@types/connect": "*",
@@ -9690,33 +8267,21 @@
}
},
"node_modules/@types/express": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
- "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "version": "4.17.25",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
+ "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
"license": "MIT",
"dependencies": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.33",
"@types/qs": "*",
- "@types/serve-static": "*"
+ "@types/serve-static": "^1"
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz",
- "integrity": "sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
- }
- },
- "node_modules/@types/express/node_modules/@types/express-serve-static-core": {
- "version": "4.19.6",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
- "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
+ "version": "4.19.9",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz",
+ "integrity": "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==",
"license": "MIT",
"dependencies": {
"@types/node": "*",
@@ -9730,21 +8295,11 @@
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
"integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg=="
},
- "node_modules/@types/gtag.js": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz",
- "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==",
- "license": "MIT"
- },
- "node_modules/@types/har-format": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz",
- "integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA=="
- },
"node_modules/@types/hast": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
"integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==",
+ "dev": true,
"dependencies": {
"@types/unist": "*"
}
@@ -9765,15 +8320,15 @@
"integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="
},
"node_modules/@types/http-errors": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
- "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
+ "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
"license": "MIT"
},
"node_modules/@types/http-proxy": {
- "version": "1.17.15",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz",
- "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
+ "version": "1.17.17",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz",
+ "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==",
"license": "MIT",
"dependencies": {
"@types/node": "*"
@@ -9803,29 +8358,21 @@
"@types/istanbul-lib-report": "*"
}
},
- "node_modules/@types/js-cookie": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
- "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA=="
- },
"node_modules/@types/json-schema": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
- "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "license": "MIT"
},
"node_modules/@types/mdast": {
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
"integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==",
+ "dev": true,
"dependencies": {
"@types/unist": "*"
}
},
- "node_modules/@types/mdurl": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz",
- "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA=="
- },
"node_modules/@types/mdx": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz",
@@ -9851,26 +8398,6 @@
"undici-types": "~6.20.0"
}
},
- "node_modules/@types/node-forge": {
- "version": "1.3.11",
- "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
- "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/parse-json": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
- "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
- "license": "MIT"
- },
- "node_modules/@types/parse5": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
- "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
- },
"node_modules/@types/prismjs": {
"version": "1.26.3",
"resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz",
@@ -9879,12 +8406,13 @@
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
+ "devOptional": true
},
"node_modules/@types/qs": {
- "version": "6.9.17",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz",
- "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==",
+ "version": "6.15.1",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz",
+ "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==",
"license": "MIT"
},
"node_modules/@types/range-parser": {
@@ -9894,19 +8422,20 @@
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "18.0.14",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.14.tgz",
- "integrity": "sha512-x4gGuASSiWmo0xjDLpm5mPb52syZHJx02VKbqUKdLmKtAwIh63XClGsiTI1K6DO5q7ox4xAsQrU+Gl3+gGXF9Q==",
+ "version": "19.2.18",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz",
+ "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==",
+ "license": "MIT",
"dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
+ "csstype": "^3.2.2"
}
},
"node_modules/@types/react-dom": {
"version": "17.0.25",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz",
"integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==",
+ "optional": true,
+ "peer": true,
"dependencies": {
"@types/react": "^17"
}
@@ -9915,6 +8444,8 @@
"version": "17.0.75",
"resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.75.tgz",
"integrity": "sha512-MSA+NzEzXnQKrqpO63CYqNstFjsESgvJAdAyyJ1n6ZQq/GLgf6nOfIKwk+Twuz0L1N6xPe+qz5xRCJrbhMaLsw==",
+ "optional": true,
+ "peer": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -9951,9 +8482,9 @@
}
},
"node_modules/@types/retry": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
- "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
+ "version": "0.12.2",
+ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
+ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==",
"license": "MIT"
},
"node_modules/@types/sax": {
@@ -9968,7 +8499,9 @@
"node_modules/@types/scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
+ "optional": true,
+ "peer": true
},
"node_modules/@types/semver": {
"version": "7.3.13",
@@ -9977,12 +8510,11 @@
"dev": true
},
"node_modules/@types/send": {
- "version": "0.17.4",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
- "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
+ "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
"license": "MIT",
"dependencies": {
- "@types/mime": "^1",
"@types/node": "*"
}
},
@@ -9996,14 +8528,24 @@
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.7",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
- "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+ "version": "1.15.10",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
+ "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
"license": "MIT",
"dependencies": {
"@types/http-errors": "*",
"@types/node": "*",
- "@types/send": "*"
+ "@types/send": "<1"
+ }
+ },
+ "node_modules/@types/serve-static/node_modules/@types/send": {
+ "version": "0.17.6",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
+ "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
}
},
"node_modules/@types/sockjs": {
@@ -10015,37 +8557,37 @@
"@types/node": "*"
}
},
- "node_modules/@types/swagger-schema-official": {
- "version": "2.0.25",
- "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.25.tgz",
- "integrity": "sha512-T92Xav+Gf/Ik1uPW581nA+JftmjWPgskw/WBf4TJzxRG/SJ+DfNnNE+WuZ4mrXuzflQMqMkm1LSYjzYW7MB1Cg=="
- },
- "node_modules/@types/type-is": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.6.tgz",
- "integrity": "sha512-fs1KHv/f9OvmTMsu4sBNaUu32oyda9Y9uK25naJG8gayxNrfqGIjPQsbLIYyfe7xFkppnPlJB+BuTldOaX9bXw==",
- "dependencies": {
- "@types/node": "*"
- }
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "license": "MIT",
+ "optional": true
},
"node_modules/@types/unist": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
"integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="
},
+ "node_modules/@types/use-sync-external-store": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz",
+ "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==",
+ "license": "MIT"
+ },
"node_modules/@types/ws": {
- "version": "8.5.13",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz",
- "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==",
+ "version": "8.18.1",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
+ "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/yargs": {
- "version": "17.0.33",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
- "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
+ "version": "17.0.35",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
+ "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
"license": "MIT",
"dependencies": {
"@types/yargs-parser": "*"
@@ -10246,11 +8788,21 @@
}
},
"node_modules/@ungap/structured-clone": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
- "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz",
+ "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==",
"license": "ISC"
},
+ "node_modules/@upsetjs/venn.js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz",
+ "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==",
+ "license": "MIT",
+ "optionalDependencies": {
+ "d3-selection": "^3.0.0",
+ "d3-transition": "^3.0.1"
+ }
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
@@ -10397,11 +8949,6 @@
"@xtuc/long": "4.2.2"
}
},
- "node_modules/@xobotyi/scrollbar-width": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz",
- "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ=="
- },
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -10414,11 +8961,6 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"license": "Apache-2.0"
},
- "node_modules/@yarnpkg/lockfile": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
- "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
- },
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -10491,17 +9033,19 @@
}
},
"node_modules/address": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz",
- "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/address/-/address-2.0.3.tgz",
+ "integrity": "sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==",
+ "license": "MIT",
"engines": {
- "node": ">= 10.0.0"
+ "node": ">= 16.0.0"
}
},
"node_modules/aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "license": "MIT",
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -10526,9 +9070,9 @@
}
},
"node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
"license": "MIT",
"dependencies": {
"ajv": "^8.0.0"
@@ -10543,9 +9087,9 @@
}
},
"node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -10573,33 +9117,34 @@
}
},
"node_modules/algoliasearch": {
- "version": "5.20.0",
- "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.0.tgz",
- "integrity": "sha512-groO71Fvi5SWpxjI9Ia+chy0QBwT61mg6yxJV27f5YFf+Mw+STT75K6SHySpP8Co5LsCrtsbCH5dJZSRtkSKaQ==",
- "license": "MIT",
- "dependencies": {
- "@algolia/client-abtesting": "5.20.0",
- "@algolia/client-analytics": "5.20.0",
- "@algolia/client-common": "5.20.0",
- "@algolia/client-insights": "5.20.0",
- "@algolia/client-personalization": "5.20.0",
- "@algolia/client-query-suggestions": "5.20.0",
- "@algolia/client-search": "5.20.0",
- "@algolia/ingestion": "1.20.0",
- "@algolia/monitoring": "1.20.0",
- "@algolia/recommend": "5.20.0",
- "@algolia/requester-browser-xhr": "5.20.0",
- "@algolia/requester-fetch": "5.20.0",
- "@algolia/requester-node-http": "5.20.0"
+ "version": "5.57.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.57.0.tgz",
+ "integrity": "sha512-HpND7MBGctOAkd1GoQoDZCGoCpqNTS5NG1LuhElFet3RdLJkwnyTYZXZhXwtpAQPrI36fqQ3eT6KQrdKDTKu3A==",
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/abtesting": "1.23.0",
+ "@algolia/client-abtesting": "5.57.0",
+ "@algolia/client-analytics": "5.57.0",
+ "@algolia/client-common": "5.57.0",
+ "@algolia/client-insights": "5.57.0",
+ "@algolia/client-personalization": "5.57.0",
+ "@algolia/client-query-suggestions": "5.57.0",
+ "@algolia/client-search": "5.57.0",
+ "@algolia/ingestion": "1.57.0",
+ "@algolia/monitoring": "1.57.0",
+ "@algolia/recommend": "5.57.0",
+ "@algolia/requester-browser-xhr": "5.57.0",
+ "@algolia/requester-fetch": "5.57.0",
+ "@algolia/requester-node-http": "5.57.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/algoliasearch-helper": {
- "version": "3.24.1",
- "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.24.1.tgz",
- "integrity": "sha512-knYRACqLH9UpeR+WRUrBzBFR2ulGuOjI2b525k4PNeqZxeFMHJE7YcL7s6Jh12Qza0rtHqZdgHMfeuaaAkf4wA==",
+ "version": "3.29.3",
+ "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.29.3.tgz",
+ "integrity": "sha512-gVOMbbPVrCO3Xs+B+BLAIGFqIQow6qHMTYCEeBqLQB9m4ZmKUqMwkEumlal2iyyezHEd4Y0FvFTLbCRutCutIQ==",
"license": "MIT",
"dependencies": {
"@algolia/events": "^4.0.1"
@@ -10608,10 +9153,14 @@
"algoliasearch": ">= 3.1 < 6"
}
},
- "node_modules/anser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/anser/-/anser-2.1.1.tgz",
- "integrity": "sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ=="
+ "node_modules/allof-merge": {
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/allof-merge/-/allof-merge-0.6.8.tgz",
+ "integrity": "sha512-RJrHVDqITsU1kjE2L7s1hy4AYZSTlO1m9jTleYhVCEOfOpbbygRGfcEgrp+bW3oX/PcMUwVkt6MSJyXoyI6lRA==",
+ "license": "MIT",
+ "dependencies": {
+ "json-crawl": "^0.5.3"
+ }
},
"node_modules/ansi-align": {
"version": "3.0.1",
@@ -10639,33 +9188,6 @@
"node": ">=8"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ansi-html-community": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
@@ -10706,6 +9228,15 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/ansis": {
+ "version": "3.17.0",
+ "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz",
+ "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -10759,6 +9290,20 @@
"node": ">=8"
}
},
+ "node_modules/asn1js": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz",
+ "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "pvtsutils": "^1.3.6",
+ "pvutils": "^1.1.5",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/astring": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz",
@@ -10768,18 +9313,16 @@
"astring": "bin/astring"
}
},
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "engines": {
- "node": ">= 4.0.0"
- }
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
},
"node_modules/autoprefixer": {
- "version": "10.4.20",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
- "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
+ "version": "10.5.4",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz",
+ "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==",
"funding": [
{
"type": "opencollective",
@@ -10796,11 +9339,10 @@
],
"license": "MIT",
"dependencies": {
- "browserslist": "^4.23.3",
- "caniuse-lite": "^1.0.30001646",
- "fraction.js": "^4.3.7",
- "normalize-range": "^0.1.2",
- "picocolors": "^1.0.1",
+ "browserslist": "^4.28.6",
+ "caniuse-lite": "^1.0.30001806",
+ "fraction.js": "^5.3.4",
+ "picocolors": "^1.1.1",
"postcss-value-parser": "^4.2.0"
},
"bin": {
@@ -10813,28 +9355,6 @@
"postcss": "^8.1.0"
}
},
- "node_modules/available-typed-arrays": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
- "dependencies": {
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/axios": {
- "version": "0.25.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz",
- "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==",
- "dependencies": {
- "follow-redirects": "^1.14.7"
- }
- },
"node_modules/babel-loader": {
"version": "9.2.1",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz",
@@ -10862,13 +9382,13 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.12",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz",
- "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==",
+ "version": "0.4.17",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz",
+ "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.3",
+ "@babel/compat-data": "^7.28.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.8",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -10885,25 +9405,25 @@
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.10.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
- "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
+ "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "core-js-compat": "^3.38.0"
+ "@babel/helper-define-polyfill-provider": "^0.6.5",
+ "core-js-compat": "^3.43.0"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz",
- "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz",
+ "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.3"
+ "@babel/helper-define-polyfill-provider": "^0.6.8"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -10959,20 +9479,24 @@
}
]
},
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.11.16",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.16.tgz",
+ "integrity": "sha512-H/bNPUFHewJHyCTdjn1n3Pit5+2GmWT6mmeHImPX+8MA9NA6b67jO4gYmi4jTbCJb2otq34KMZnovndDPqJwhQ==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/batch": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
"integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
"license": "MIT"
},
- "node_modules/big-integer": {
- "version": "1.6.52",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
- "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
- "engines": {
- "node": ">=0.6"
- }
- },
"node_modules/big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@@ -10989,29 +9513,24 @@
"node": ">=8"
}
},
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
- },
"node_modules/body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "version": "1.20.6",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz",
+ "integrity": "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==",
"license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
+ "bytes": "~3.1.2",
"content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.13.0",
- "raw-body": "2.5.2",
+ "destroy": "~1.2.0",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "on-finished": "~2.4.1",
+ "qs": "~6.15.1",
+ "raw-body": "~2.5.3",
"type-is": "~1.6.18",
- "unpipe": "1.0.0"
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8",
@@ -11036,6 +9555,18 @@
"ms": "2.0.0"
}
},
+ "node_modules/body-parser/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -11043,9 +9574,9 @@
"license": "MIT"
},
"node_modules/bonjour-service": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz",
- "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==",
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.4.4.tgz",
+ "integrity": "sha512-jCZcVv7eoc4QesRscwEZtSROBen+6LpKAmBIsQYQrsAeVHLyMXWX/t6eIV5KiRZYNUBl8eVqImEEMQ8L5+c/Kw==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -11057,11 +9588,6 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
- "node_modules/bowser": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
- "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
- },
"node_modules/boxen": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz",
@@ -11104,25 +9630,10 @@
"node": ">=8"
}
},
- "node_modules/broadcast-channel": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz",
- "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "detect-node": "^2.1.0",
- "js-sha3": "0.8.0",
- "microseconds": "0.2.0",
- "nano-time": "1.0.0",
- "oblivious-set": "1.0.0",
- "rimraf": "3.0.2",
- "unload": "2.2.0"
- }
- },
"node_modules/browserslist": {
- "version": "4.24.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz",
- "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==",
+ "version": "4.28.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz",
+ "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==",
"funding": [
{
"type": "opencollective",
@@ -11139,10 +9650,11 @@
],
"license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001688",
- "electron-to-chromium": "^1.5.73",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.1"
+ "baseline-browser-mapping": "^2.11.12",
+ "caniuse-lite": "^1.0.30001809",
+ "electron-to-chromium": "^1.5.402",
+ "node-releases": "^2.0.53",
+ "update-browserslist-db": "^1.3.0"
},
"bin": {
"browserslist": "cli.js"
@@ -11179,6 +9691,21 @@
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "license": "MIT",
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -11188,6 +9715,15 @@
"node": ">= 0.8"
}
},
+ "node_modules/bytestreamjs": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz",
+ "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/cacheable-lookup": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
@@ -11225,14 +9761,14 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
- "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
+ "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
"license": "MIT",
"dependencies": {
- "call-bind-apply-helpers": "^1.0.0",
- "es-define-property": "^1.0.0",
- "get-intrinsic": "^1.2.4",
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "get-intrinsic": "^1.3.0",
"set-function-length": "^1.2.2"
},
"engines": {
@@ -11243,9 +9779,9 @@
}
},
"node_modules/call-bind-apply-helpers": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
- "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -11274,7 +9810,8 @@
"node_modules/call-me-maybe": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
- "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ=="
+ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
+ "license": "MIT"
},
"node_modules/callsites": {
"version": "3.1.0",
@@ -11337,9 +9874,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001690",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz",
- "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==",
+ "version": "1.0.30001809",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz",
+ "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==",
"funding": [
{
"type": "opencollective",
@@ -11429,6 +9966,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz",
"integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==",
+ "license": "MIT",
"engines": {
"node": ">=4.0.0"
}
@@ -11522,11 +10060,6 @@
"resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.4.tgz",
"integrity": "sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g=="
},
- "node_modules/classnames": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
- "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
- },
"node_modules/clean-css": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
@@ -11538,15 +10071,11 @@
"node": ">= 10.0"
}
},
- "node_modules/clean-set": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz",
- "integrity": "sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug=="
- },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -11599,6 +10128,57 @@
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -11659,15 +10239,15 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/colord": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
- "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.10.0.tgz",
+ "integrity": "sha512-AidJptpBJmjTclAp9BkLwJi0T93fo5epJnbaZslpg6QVzpHjAiveF55mE9AcUJiGMqRHgMDY8soMsQtuNYMHfw==",
"license": "MIT"
},
"node_modules/colorette": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
"license": "MIT"
},
"node_modules/combine-promises": {
@@ -11714,25 +10294,25 @@
}
},
"node_modules/compressible/node_modules/mime-db": {
- "version": "1.53.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz",
- "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==",
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/compression": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz",
- "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
"license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"compressible": "~2.0.18",
"debug": "2.6.9",
"negotiator": "~0.6.4",
- "on-headers": "~1.0.2",
+ "on-headers": "~1.1.0",
"safe-buffer": "5.2.1",
"vary": "~1.1.2"
},
@@ -11827,9 +10407,9 @@
}
},
"node_modules/consola": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
- "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
"license": "MIT",
"engines": {
"node": "^14.18.0 || >=16.10.0"
@@ -11859,24 +10439,24 @@
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
},
"node_modules/cookie": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
- "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
+ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
"license": "MIT"
},
"node_modules/copy-text-to-clipboard": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz",
- "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.2.tgz",
+ "integrity": "sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -11885,14 +10465,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/copy-to-clipboard": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
- "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
- "dependencies": {
- "toggle-selection": "^1.0.6"
- }
- },
"node_modules/copy-webpack-plugin": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz",
@@ -11971,24 +10543,16 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.40.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz",
- "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==",
+ "version": "3.50.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz",
+ "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==",
"license": "MIT",
"dependencies": {
- "browserslist": "^4.24.3"
+ "browserslist": "^4.28.7"
+ },
+ "engines": {
+ "node": ">=6.4.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-js-pure": {
- "version": "3.40.0",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz",
- "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==",
- "hasInstallScript": true,
- "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
@@ -12004,6 +10568,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
"integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
+ "license": "MIT",
"dependencies": {
"layout-base": "^1.0.0"
}
@@ -12034,19 +10599,6 @@
}
}
},
- "node_modules/crelt": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
- "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
- },
- "node_modules/cross-fetch": {
- "version": "3.1.8",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
- "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
- "dependencies": {
- "node-fetch": "^2.6.12"
- }
- },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -12060,6 +10612,13 @@
"node": ">= 8"
}
},
+ "node_modules/crypto-js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
+ "deprecated": "Active development of CryptoJS has been discontinued. This library is no longer maintained.",
+ "license": "MIT"
+ },
"node_modules/crypto-random-string": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
@@ -12111,9 +10670,9 @@
}
},
"node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -12134,9 +10693,9 @@
}
},
"node_modules/css-declaration-sorter": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
- "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz",
+ "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==",
"license": "ISC",
"engines": {
"node": "^14 || ^16 || >=18"
@@ -12146,9 +10705,9 @@
}
},
"node_modules/css-has-pseudo": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz",
- "integrity": "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz",
+ "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==",
"funding": [
{
"type": "github",
@@ -12195,9 +10754,9 @@
}
},
"node_modules/css-has-pseudo/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -12207,14 +10766,6 @@
"node": ">=4"
}
},
- "node_modules/css-in-js-utils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
- "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==",
- "dependencies": {
- "hyphenate-style-name": "^1.0.3"
- }
- },
"node_modules/css-loader": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
@@ -12347,9 +10898,9 @@
}
},
"node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
"license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
@@ -12362,11 +10913,6 @@
"url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/css-selector-parser": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
- "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g=="
- },
"node_modules/css-to-react-native": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
@@ -12380,15 +10926,16 @@
}
},
"node_modules/css-tree": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "license": "MIT",
"dependencies": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
},
"engines": {
- "node": ">=8.0.0"
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
"node_modules/css-what": {
@@ -12403,9 +10950,9 @@
}
},
"node_modules/cssdb": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.3.tgz",
- "integrity": "sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.10.0.tgz",
+ "integrity": "sha512-+JWEEjjoqkPY7iGHps3SaCT2w67Zpaj9zHvhCJ2iPBavKHwgtOOD2YEbZSCU8VO2uVGpKdYjVz+j6bhkNSjZ0g==",
"funding": [
{
"type": "opencollective",
@@ -12561,18 +11108,16 @@
"license": "CC0-1.0"
},
"node_modules/csstype": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
- "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "license": "MIT"
},
"node_modules/cytoscape": {
- "version": "3.28.1",
- "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz",
- "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==",
- "dependencies": {
- "heap": "^0.2.6",
- "lodash": "^4.17.21"
- },
+ "version": "3.34.1",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.34.1.tgz",
+ "integrity": "sha512-Lr0RvH9H75y9ar8h9Toy6u4lxRSCcxUq+hHcQ26sVWo6BnaQp1gwEZOYqwuYTZhyW7npyKnNLP8oJ2p1/3OZ7g==",
+ "license": "MIT",
"engines": {
"node": ">=0.10"
}
@@ -12581,6 +11126,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
"integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
+ "license": "MIT",
"dependencies": {
"cose-base": "^1.0.0"
},
@@ -12588,22 +11134,38 @@
"cytoscape": "^3.2.0"
}
},
- "node_modules/d": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
- "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+ "node_modules/cytoscape-fcose": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz",
+ "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
+ "license": "MIT",
"dependencies": {
- "es5-ext": "^0.10.64",
- "type": "^2.7.2"
+ "cose-base": "^2.2.0"
},
- "engines": {
- "node": ">=0.12"
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
}
},
+ "node_modules/cytoscape-fcose/node_modules/cose-base": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz",
+ "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
+ "license": "MIT",
+ "dependencies": {
+ "layout-base": "^2.0.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/layout-base": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz",
+ "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==",
+ "license": "MIT"
+ },
"node_modules/d3": {
"version": "7.9.0",
"resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
"integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
+ "license": "ISC",
"dependencies": {
"d3-array": "3",
"d3-axis": "3",
@@ -12644,6 +11206,7 @@
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
"integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "license": "ISC",
"dependencies": {
"internmap": "1 - 2"
},
@@ -12655,6 +11218,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
"integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -12663,6 +11227,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
"integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "license": "ISC",
"dependencies": {
"d3-dispatch": "1 - 3",
"d3-drag": "2 - 3",
@@ -12678,6 +11243,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
"integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "license": "ISC",
"dependencies": {
"d3-path": "1 - 3"
},
@@ -12697,6 +11263,7 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
"integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "license": "ISC",
"dependencies": {
"d3-array": "^3.2.0"
},
@@ -12708,6 +11275,7 @@
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
"integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "license": "ISC",
"dependencies": {
"delaunator": "5"
},
@@ -12739,6 +11307,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
"integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "license": "ISC",
"dependencies": {
"commander": "7",
"iconv-lite": "0.6",
@@ -12763,21 +11332,11 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "license": "MIT",
"engines": {
"node": ">= 10"
}
},
- "node_modules/d3-dsv/node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/d3-ease": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
@@ -12790,6 +11349,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
"integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "license": "ISC",
"dependencies": {
"d3-dsv": "1 - 3"
},
@@ -12801,6 +11361,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
"integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "license": "ISC",
"dependencies": {
"d3-dispatch": "1 - 3",
"d3-quadtree": "1 - 3",
@@ -12811,9 +11372,10 @@
}
},
"node_modules/d3-format": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
- "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz",
+ "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -12822,6 +11384,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
"integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
+ "license": "ISC",
"dependencies": {
"d3-array": "2.5.0 - 3"
},
@@ -12833,6 +11396,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
"integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -12852,6 +11416,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
"integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -12860,6 +11425,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
"integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -12868,6 +11434,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
"integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -12876,6 +11443,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
"integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -12884,6 +11452,7 @@
"version": "0.12.3",
"resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz",
"integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
"d3-array": "1 - 2",
"d3-shape": "^1.2.0"
@@ -12893,6 +11462,7 @@
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
"integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
"internmap": "^1.0.0"
}
@@ -12900,12 +11470,14 @@
"node_modules/d3-sankey/node_modules/d3-path": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
- "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
+ "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==",
+ "license": "BSD-3-Clause"
},
"node_modules/d3-sankey/node_modules/d3-shape": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
"integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
+ "license": "BSD-3-Clause",
"dependencies": {
"d3-path": "1"
}
@@ -12913,12 +11485,14 @@
"node_modules/d3-sankey/node_modules/internmap": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
- "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==",
+ "license": "ISC"
},
"node_modules/d3-scale": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
"integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "license": "ISC",
"dependencies": {
"d3-array": "2.10.0 - 3",
"d3-format": "1 - 3",
@@ -12934,6 +11508,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
"integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
+ "license": "ISC",
"dependencies": {
"d3-color": "1 - 3",
"d3-interpolate": "1 - 3"
@@ -12954,6 +11529,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
"integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "license": "ISC",
"dependencies": {
"d3-path": "^3.1.0"
},
@@ -12965,6 +11541,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
"integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "license": "ISC",
"dependencies": {
"d3-array": "2 - 3"
},
@@ -12976,6 +11553,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
"integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "license": "ISC",
"dependencies": {
"d3-time": "1 - 3"
},
@@ -13025,18 +11603,20 @@
}
},
"node_modules/dagre-d3-es": {
- "version": "7.0.10",
- "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz",
- "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==",
+ "version": "7.0.14",
+ "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz",
+ "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==",
+ "license": "MIT",
"dependencies": {
- "d3": "^7.8.2",
+ "d3": "^7.9.0",
"lodash-es": "^4.17.21"
}
},
"node_modules/dayjs": {
- "version": "1.11.9",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz",
- "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA=="
+ "version": "1.11.23",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz",
+ "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==",
+ "license": "MIT"
},
"node_modules/debounce": {
"version": "1.2.1",
@@ -13045,11 +11625,12 @@
"license": "MIT"
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -13109,7 +11690,7 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "devOptional": true
+ "dev": true
},
"node_modules/deepmerge": {
"version": "4.3.1",
@@ -13120,16 +11701,32 @@
"node": ">=0.10.0"
}
},
- "node_modules/default-gateway": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
- "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
- "license": "BSD-2-Clause",
+ "node_modules/default-browser": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz",
+ "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==",
+ "license": "MIT",
"dependencies": {
- "execa": "^5.0.0"
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
},
"engines": {
- "node": ">= 10"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/defer-to-connect": {
@@ -13144,6 +11741,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -13160,6 +11758,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
"integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -13181,31 +11780,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/del": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
- "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
- "dependencies": {
- "globby": "^11.0.1",
- "graceful-fs": "^4.2.4",
- "is-glob": "^4.0.1",
- "is-path-cwd": "^2.2.0",
- "is-path-inside": "^3.0.2",
- "p-map": "^4.0.0",
- "rimraf": "^3.0.2",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/delaunator": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
- "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz",
+ "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==",
+ "license": "ISC",
"dependencies": {
"robust-predicates": "^3.0.2"
}
@@ -13238,21 +11817,19 @@
}
},
"node_modules/detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"license": "Apache-2.0",
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
"engines": {
- "node": ">=0.10"
+ "node": ">=8"
}
},
"node_modules/detect-node": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
- "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "license": "MIT"
},
"node_modules/detect-node-es": {
"version": "1.1.0",
@@ -13260,51 +11837,34 @@
"integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==",
"license": "MIT"
},
- "node_modules/detect-port": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz",
- "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==",
+ "node_modules/detect-package-manager": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-3.0.2.tgz",
+ "integrity": "sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==",
+ "license": "MIT",
"dependencies": {
- "address": "^1.0.1",
- "debug": "4"
+ "execa": "^5.1.1"
},
- "bin": {
- "detect": "bin/detect-port.js",
- "detect-port": "bin/detect-port.js"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/detect-port-alt": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
- "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+ "node_modules/detect-port": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-2.1.0.tgz",
+ "integrity": "sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==",
"license": "MIT",
"dependencies": {
- "address": "^1.0.1",
- "debug": "^2.6.0"
+ "address": "^2.0.1"
},
"bin": {
- "detect": "bin/detect-port",
- "detect-port": "bin/detect-port"
+ "detect": "dist/commonjs/bin/detect-port.js",
+ "detect-port": "dist/commonjs/bin/detect-port.js"
},
"engines": {
- "node": ">= 4.2.1"
- }
- },
- "node_modules/detect-port-alt/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
+ "node": ">= 16.0.0"
}
},
- "node_modules/detect-port-alt/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
- },
"node_modules/devlop": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
@@ -13356,7 +11916,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"esutils": "^2.0.2"
},
@@ -13364,6 +11924,63 @@
"node": ">=6.0.0"
}
},
+ "node_modules/docusaurus-plugin-openapi-docs": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-5.2.0.tgz",
+ "integrity": "sha512-MjrfRAMB64uvdxRVz6L9AXWe4QFjCdoBAzYs306yyI3nnXHsFj2lv2FnLA90JV9CAUZaGiYMvvkzBo2Nrkq/9w==",
+ "license": "MIT",
+ "dependencies": {
+ "@apidevtools/json-schema-ref-parser": "^15.3.3",
+ "@redocly/openapi-core": "^2.25.2",
+ "allof-merge": "^0.6.6",
+ "chalk": "^5.6.2",
+ "clsx": "^2.1.1",
+ "fs-extra": "^11.3.0",
+ "json-pointer": "^0.6.2",
+ "json5": "^2.2.3",
+ "lodash": "^4.17.21",
+ "mustache": "^4.2.0",
+ "openapi-to-postmanv2": "^6.0.0",
+ "postman-collection": "^5.0.2",
+ "slugify": "^1.6.6",
+ "swagger2openapi": "^7.0.8",
+ "xml-formatter": "^3.6.6"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@docusaurus/plugin-content-docs": "^3.10.0",
+ "@docusaurus/utils": "^3.10.0",
+ "@docusaurus/utils-validation": "^3.10.0",
+ "react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/docusaurus-plugin-openapi-docs/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/docusaurus-plugin-sass": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/docusaurus-plugin-sass/-/docusaurus-plugin-sass-0.2.6.tgz",
+ "integrity": "sha512-2hKQQDkrufMong9upKoG/kSHJhuwd+FA3iAe/qzS/BmWpbIpe7XKmq5wlz4J5CJaOPu4x+iDJbgAxZqcoQf0kg==",
+ "license": "MIT",
+ "dependencies": {
+ "sass-loader": "^16.0.2"
+ },
+ "peerDependencies": {
+ "@docusaurus/core": "^2.0.0-beta || ^3.0.0-alpha",
+ "sass": "^1.30.0"
+ }
+ },
"node_modules/docusaurus-plugin-typedoc": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/docusaurus-plugin-typedoc/-/docusaurus-plugin-typedoc-0.18.0.tgz",
@@ -13374,6 +11991,179 @@
"typedoc-plugin-markdown": ">=3.13.0"
}
},
+ "node_modules/docusaurus-theme-openapi-docs": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/docusaurus-theme-openapi-docs/-/docusaurus-theme-openapi-docs-5.2.0.tgz",
+ "integrity": "sha512-L0b80LzaMUfr76a9EQXRPCf8nxkEz8Xo6Aknnke1UeE2oXsgoiVki6U+RTE7GmJRjO8zSNKXyckGmGmqqWuHeA==",
+ "license": "MIT",
+ "dependencies": {
+ "@hookform/error-message": "^2.0.1",
+ "@reduxjs/toolkit": "^2.8.2",
+ "allof-merge": "^0.6.6",
+ "buffer": "^6.0.3",
+ "clsx": "^2.1.1",
+ "copy-text-to-clipboard": "^3.2.0",
+ "crypto-js": "^4.2.0",
+ "file-saver": "^2.0.5",
+ "lodash": "^4.17.21",
+ "pako": "^3.0.1",
+ "path-browserify": "^1.0.1",
+ "postman-code-generators": "^2.0.0",
+ "postman-collection": "^5.0.2",
+ "prism-react-renderer": "^2.4.1",
+ "process": "^0.11.10",
+ "react-hook-form": "^7.59.0",
+ "react-live": "^4.1.8",
+ "react-magic-dropzone": "^1.0.1",
+ "react-markdown": "^10.1.0",
+ "react-modal": "^3.16.3",
+ "react-redux": "^9.2.0",
+ "rehype-raw": "^7.0.0",
+ "remark-gfm": "4.0.1",
+ "sass": "^1.89.2",
+ "sass-loader": "^17.0.0",
+ "unist-util-visit": "^5.0.0",
+ "url": "^0.11.4",
+ "xml-formatter": "^3.6.6"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@docusaurus/theme-common": "^3.10.0",
+ "docusaurus-plugin-openapi-docs": "^5.0.0",
+ "docusaurus-plugin-sass": "^0.2.3",
+ "react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/docusaurus-theme-openapi-docs/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/docusaurus-theme-openapi-docs/node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/docusaurus-theme-openapi-docs/node_modules/react-markdown": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz",
+ "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "hast-util-to-jsx-runtime": "^2.0.0",
+ "html-url-attributes": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.0.0",
+ "unified": "^11.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "@types/react": ">=18",
+ "react": ">=18"
+ }
+ },
+ "node_modules/docusaurus-theme-openapi-docs/node_modules/remark-parse": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/docusaurus-theme-openapi-docs/node_modules/remark-rehype": {
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
+ "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/docusaurus-theme-openapi-docs/node_modules/sass-loader": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-17.0.0.tgz",
+ "integrity": "sha512-0Ybm8ohBQ9LcrycVrFQp/KQBNX5a3Wda9/smS0mE/xLffzEnwvV8nykOzrbiSWNzTE3IB/jiXx8O4QmDPG2+Gw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 22.11.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0",
+ "sass": "^1.3.0",
+ "sass-embedded": "*",
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
"node_modules/dom-converter": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
@@ -13382,14 +12172,6 @@
"utila": "~0.4"
}
},
- "node_modules/dom-helpers": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
- "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
- "dependencies": {
- "@babel/runtime": "^7.1.2"
- }
- },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -13431,9 +12213,13 @@
}
},
"node_modules/dompurify": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.11.tgz",
- "integrity": "sha512-Fan4uMuyB26gFV3ovPoEoQbxRRPfTu3CvImyZnhGq5fsIEO+gEFLp45ISFt+kQBWsK5ulDdT0oV28jS1UrwQLg=="
+ "version": "3.4.14",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.14.tgz",
+ "integrity": "sha512-dVoH9z+MY+C9IilgGCk3YfFqjLi3fChm2OiKJMzh6axrJ5qwxqWaZamgmHrpv22CN/KdbZJuGEGgfQoL00LTdg==",
+ "license": "(MPL-2.0 OR Apache-2.0)",
+ "optionalDependencies": {
+ "@types/trusted-types": "^2.0.7"
+ }
},
"node_modules/domutils": {
"version": "3.2.2",
@@ -13480,17 +12266,6 @@
"node": ">=8"
}
},
- "node_modules/dotenv": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -13522,16 +12297,11 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.74",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz",
- "integrity": "sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==",
+ "version": "1.5.411",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.411.tgz",
+ "integrity": "sha512-gglkxzokjHfawpGxq75XdBV2/l3BAPzrsMs70qgaZdTW5rpV1tC4MdgJVP9fN126bODA4ZJQkn1wryEzJyQXIg==",
"license": "ISC"
},
- "node_modules/elkjs": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.2.tgz",
- "integrity": "sha512-2Y/RaA1pdgSHpY0YG4TYuYCD2wh97CRvu22eLG3Kz0pgQ/6KbIFTxsTnDc4MH/6hFlg2L/9qXrDMG0nMjP63iw=="
- },
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -13570,46 +12340,6 @@
"node": ">= 0.8"
}
},
- "node_modules/engine.io-client": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz",
- "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==",
- "dependencies": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1",
- "engine.io-parser": "~5.2.1",
- "ws": "~8.11.0",
- "xmlhttprequest-ssl": "~2.0.0"
- }
- },
- "node_modules/engine.io-client/node_modules/ws": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
- "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/engine.io-parser": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz",
- "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==",
- "engines": {
- "node": ">=10.0.0"
- }
- },
"node_modules/enhanced-resolve": {
"version": "5.17.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
@@ -13636,22 +12366,14 @@
}
},
"node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
"license": "MIT",
"dependencies": {
"is-arrayish": "^0.2.1"
}
},
- "node_modules/error-stack-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
- "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
- "dependencies": {
- "stackframe": "^1.3.4"
- }
- },
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
@@ -13675,9 +12397,9 @@
"integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="
},
"node_modules/es-object-atoms": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
- "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
@@ -13686,42 +12408,23 @@
"node": ">= 0.4"
}
},
- "node_modules/es5-ext": {
- "version": "0.10.64",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
- "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
- "hasInstallScript": true,
- "dependencies": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "esniff": "^2.0.1",
- "next-tick": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
+ "node_modules/es-toolkit": {
+ "version": "1.51.0",
+ "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.51.0.tgz",
+ "integrity": "sha512-zC2lQGkM7QX+Gm6iM3+WIdZJzthsEd14LvRNJneSO2hzyz/zNBENR8+YXWo1cKxgPBtV6ksPYHELbcwBRzmdCw==",
+ "license": "MIT",
+ "workspaces": [
+ "docs",
+ "benchmarks",
+ "tests/types",
+ "tests/browser-compat"
+ ]
},
- "node_modules/es6-symbol": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
- "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
- "dependencies": {
- "d": "^1.0.2",
- "ext": "^1.7.0"
- },
- "engines": {
- "node": ">=0.12"
- }
+ "node_modules/es6-promise": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
+ "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==",
+ "license": "MIT"
},
"node_modules/esast-util-from-estree": {
"version": "2.0.0",
@@ -13764,11 +12467,6 @@
"node": ">=6"
}
},
- "node_modules/escape-carriage": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/escape-carriage/-/escape-carriage-1.3.1.tgz",
- "integrity": "sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw=="
- },
"node_modules/escape-goat": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
@@ -13800,7 +12498,7 @@
"version": "8.36.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz",
"integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.4.0",
@@ -13902,7 +12600,7 @@
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "devOptional": true,
+ "dev": true,
"license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -13915,7 +12613,7 @@
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
@@ -13928,7 +12626,7 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": ">=4.0"
}
@@ -13937,7 +12635,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -13953,7 +12651,7 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -13965,7 +12663,7 @@
"version": "13.19.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
"integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -13980,7 +12678,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -13995,7 +12693,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -14010,7 +12708,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -14025,7 +12723,7 @@
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -14033,25 +12731,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esniff": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
- "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.62",
- "event-emitter": "^0.3.5",
- "type": "^2.7.2"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/espree": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "devOptional": true,
+ "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"acorn": "^8.9.0",
@@ -14069,6 +12753,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -14081,7 +12766,7 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
"integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -14093,7 +12778,7 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": ">=4.0"
}
@@ -14194,18 +12879,18 @@
}
},
"node_modules/estree-util-to-js/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
"license": "BSD-3-Clause",
"engines": {
- "node": ">= 8"
+ "node": ">= 12"
}
},
"node_modules/estree-util-value-to-estree": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.2.1.tgz",
- "integrity": "sha512-Vt2UOjyPbNQQgT5eJh+K5aATti0OjCIAGc9SgMdOFYbohuifsWclR74l0iZTJwePMgWYdX1hlVS+dedH9XV8kw==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz",
+ "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0"
@@ -14283,15 +12968,6 @@
"node": ">= 0.8"
}
},
- "node_modules/event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
- "dependencies": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
"node_modules/eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
@@ -14329,40 +13005,46 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
+ "node_modules/exenv": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
+ "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==",
+ "license": "BSD-3-Clause"
+ },
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz",
+ "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==",
"license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
+ "body-parser": "~1.20.5",
+ "content-disposition": "~0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "~0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "~6.15.1",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "2.0.1",
+ "statuses": "~2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -14403,9 +13085,9 @@
"license": "MIT"
},
"node_modules/express/node_modules/path-to-regexp": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
- "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
+ "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==",
"license": "MIT"
},
"node_modules/express/node_modules/range-parser": {
@@ -14417,14 +13099,6 @@
"node": ">= 0.6"
}
},
- "node_modules/ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
- "dependencies": {
- "type": "^2.7.2"
- }
- },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -14477,45 +13151,38 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "devOptional": true
- },
- "node_modules/fast-loops": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz",
- "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g=="
- },
- "node_modules/fast-shallow-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz",
- "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="
+ "dev": true
},
- "node_modules/fast-unique-numbers": {
- "version": "8.0.13",
- "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz",
- "integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==",
- "dependencies": {
- "@babel/runtime": "^7.23.8",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.1.0"
- }
+ "node_modules/fast-safe-stringify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+ "license": "MIT"
},
"node_modules/fast-uri": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
- "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz",
+ "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
"license": "BSD-3-Clause"
},
- "node_modules/fastest-stable-stringify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz",
- "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q=="
- },
- "node_modules/fastestsmallesttextencoderdecoder": {
- "version": "1.0.22",
- "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz",
- "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw=="
+ "node_modules/fastdom": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fastdom/-/fastdom-1.0.12.tgz",
+ "integrity": "sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==",
+ "license": "MIT",
+ "dependencies": {
+ "strictdom": "^1.0.1"
+ }
},
"node_modules/fastq": {
"version": "1.13.0",
@@ -14562,35 +13229,11 @@
"node": ">=0.4.0"
}
},
- "node_modules/figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^1.0.5"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/figures/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"flat-cache": "^3.0.4"
},
@@ -14639,25 +13282,18 @@
"node_modules/file-saver": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
- "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==",
+ "license": "MIT"
},
"node_modules/file-type": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
"integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/filesize": {
- "version": "8.0.7",
- "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
- "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -14671,17 +13307,17 @@
}
},
"node_modules/finalhandler": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
- "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
+ "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
"license": "MIT",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "statuses": "2.0.1",
+ "statuses": "~2.0.2",
"unpipe": "~1.0.0"
},
"engines": {
@@ -14744,14 +13380,6 @@
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
- "node_modules/find-yarn-workspace-root": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
- "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
- "dependencies": {
- "micromatch": "^4.0.2"
- }
- },
"node_modules/flat": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
@@ -14764,7 +13392,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"flatted": "^3.1.0",
"rimraf": "^3.0.2"
@@ -14777,45 +13405,19 @@
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
"integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
- "devOptional": true
- },
- "node_modules/fnv-plus": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz",
- "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw=="
- },
- "node_modules/focus-trap": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz",
- "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==",
- "dependencies": {
- "tabbable": "^6.2.0"
- }
- },
- "node_modules/focus-trap-react": {
- "version": "10.2.3",
- "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.2.3.tgz",
- "integrity": "sha512-YXBpFu/hIeSu6NnmV2xlXzOYxuWkoOtar9jzgp3lOmjWLWY59C/b8DtDHEAV4SPU07Nd/t+nS/SBNGkhUBFmEw==",
- "dependencies": {
- "focus-trap": "^7.5.4",
- "tabbable": "^6.2.0"
- },
- "peerDependencies": {
- "prop-types": "^15.8.1",
- "react": ">=16.3.0",
- "react-dom": ">=16.3.0"
- }
+ "dev": true
},
"node_modules/follow-redirects": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
- "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -14825,140 +13427,36 @@
}
}
},
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
"node_modules/foreach": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
- "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="
- },
- "node_modules/foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/foreground-child/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/fork-ts-checker-webpack-plugin": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz",
- "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@types/json-schema": "^7.0.5",
- "chalk": "^4.1.0",
- "chokidar": "^3.4.2",
- "cosmiconfig": "^6.0.0",
- "deepmerge": "^4.2.2",
- "fs-extra": "^9.0.0",
- "glob": "^7.1.6",
- "memfs": "^3.1.2",
- "minimatch": "^3.0.4",
- "schema-utils": "2.7.0",
- "semver": "^7.3.2",
- "tapable": "^1.0.0"
- },
- "engines": {
- "node": ">=10",
- "yarn": ">=1.0.0"
- },
- "peerDependencies": {
- "eslint": ">= 6",
- "typescript": ">= 2.7",
- "vue-template-compiler": "*",
- "webpack": ">= 4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- },
- "vue-template-compiler": {
- "optional": true
- }
- }
- },
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
- "license": "MIT",
- "dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.7.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "license": "MIT",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
+ "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==",
+ "license": "MIT"
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
- "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
- "license": "MIT",
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
"dependencies": {
- "@types/json-schema": "^7.0.4",
- "ajv": "^6.12.2",
- "ajv-keywords": "^3.4.1"
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
},
"engines": {
- "node": ">= 8.9.0"
+ "node": ">=14"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
- "license": "MIT",
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"engines": {
- "node": ">=6"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/form-data-encoder": {
@@ -14977,18 +13475,6 @@
"node": ">=0.4.x"
}
},
- "node_modules/formdata-node": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
- "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
- "dependencies": {
- "node-domexception": "1.0.0",
- "web-streams-polyfill": "4.0.0-beta.3"
- },
- "engines": {
- "node": ">= 12.20"
- }
- },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -14999,15 +13485,15 @@
}
},
"node_modules/fraction.js": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
- "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
+ "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
"license": "MIT",
"engines": {
"node": "*"
},
"funding": {
- "type": "patreon",
+ "type": "github",
"url": "https://github.com/sponsors/rawify"
}
},
@@ -15021,9 +13507,10 @@
}
},
"node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.4.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
+ "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -15033,29 +13520,11 @@
"node": ">=14.14"
}
},
- "node_modules/fs-monkey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
- "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -15072,22 +13541,31 @@
"node": ">=6.9.0"
}
},
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
"node_modules/get-intrinsic": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz",
- "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"license": "MIT",
"dependencies": {
- "call-bind-apply-helpers": "^1.0.1",
- "dunder-proto": "^1.0.0",
+ "call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
+ "es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
- "math-intrinsics": "^1.0.0"
+ "math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -15108,7 +13586,21 @@
"node_modules/get-own-enumerable-property-symbols": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
- "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="
+ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
+ "license": "ISC"
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
},
"node_modules/get-stream": {
"version": "6.0.1",
@@ -15124,7 +13616,8 @@
"node_modules/github-slugger": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz",
- "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw=="
+ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==",
+ "license": "ISC"
},
"node_modules/glob": {
"version": "7.2.3",
@@ -15156,6 +13649,22 @@
"node": ">= 6"
}
},
+ "node_modules/glob-to-regex.js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz",
+ "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
@@ -15184,52 +13693,6 @@
"node": ">=10"
}
},
- "node_modules/global-modules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
- "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
- "license": "MIT",
- "dependencies": {
- "global-prefix": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/global-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
- "license": "MIT",
- "dependencies": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/global-prefix/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -15249,14 +13712,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/goober": {
- "version": "2.1.14",
- "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.14.tgz",
- "integrity": "sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==",
- "peerDependencies": {
- "csstype": "^3.0.10"
- }
- },
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
@@ -15313,12 +13768,31 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "devOptional": true
+ "dev": true
+ },
+ "node_modules/graphlib": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",
+ "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "node_modules/graphql": {
+ "version": "16.14.2",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.2.tgz",
+ "integrity": "sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
},
"node_modules/gray-matter": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
"integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "dev": true,
"dependencies": {
"js-yaml": "^3.13.1",
"kind-of": "^6.0.2",
@@ -15333,6 +13807,7 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
"dependencies": {
"sprintf-js": "~1.0.2"
}
@@ -15341,6 +13816,7 @@
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -15363,16 +13839,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/h264-profile-level-id": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/h264-profile-level-id/-/h264-profile-level-id-1.1.1.tgz",
- "integrity": "sha512-xOEl3xKpiRrKIqSfolN+9gDdjR8aktKeB92CHIJohz8KtLF0Mceshgfi9pOyUhCpZmQzzwxGMSSxQvHTgGzrGw==",
- "dependencies": {
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">=10.0.0"
- }
+ "node_modules/hachure-fill": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz",
+ "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==",
+ "license": "MIT"
},
"node_modules/handle-thing": {
"version": "2.0.1",
@@ -15413,6 +13884,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -15432,20 +13904,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-yarn": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz",
@@ -15469,34 +13927,19 @@
"node": ">= 0.4"
}
},
- "node_modules/hast-to-hyperscript": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-10.0.3.tgz",
- "integrity": "sha512-NuBoUStp4fRwmvlfbidlEiRSTk0gSHm+97q4Xn9CJ10HO+Py7nlTuDi6RhM1qLOureukGrCXLG7AAxaGqqyslQ==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "comma-separated-tokens": "^2.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-object": "^0.4.1",
- "web-namespaces": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/hast-util-from-parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz",
- "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
+ "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0",
- "hastscript": "^7.0.0",
- "property-information": "^6.0.0",
- "vfile": "^5.0.0",
- "vfile-location": "^4.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^9.0.0",
+ "property-information": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
"web-namespaces": "^2.0.0"
},
"funding": {
@@ -15504,171 +13947,100 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
+ "node_modules/hast-util-from-parse5/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@types/unist": "*"
}
},
- "node_modules/hast-util-from-parse5/node_modules/vfile": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
+ "node_modules/hast-util-from-parse5/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
},
- "node_modules/hast-util-from-parse5/node_modules/vfile-message": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
- },
+ "node_modules/hast-util-from-parse5/node_modules/property-information": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
+ "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==",
+ "license": "MIT",
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/hast-util-parse-selector": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz",
- "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==",
- "dependencies": {
- "@types/hast": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.0.0.tgz",
- "integrity": "sha512-3UKuYgaqakZrY916JfQzqSk8xZGyxpj9zwfPB3MctXLDorPdyqk1QZGZoCEqU2LMIEzVXBZukAQs7aAH9TJPIw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/parse5": "^6.0.0",
- "@types/unist": "^2.0.3",
- "hast-util-from-parse5": "^7.0.0",
- "hast-util-to-parse5": "^7.0.0",
- "html-void-elements": "^2.0.0",
- "parse5": "^6.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^3.0.0",
- "vfile": "^4.0.0",
- "web-namespaces": "^2.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/hast-util-raw/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw/node_modules/unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "dependencies": {
- "@types/unist": "^2.0.2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw/node_modules/unist-util-visit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
- "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw/node_modules/unist-util-visit-parents": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
- "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
+ "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/hast": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/hast-util-raw/node_modules/vfile": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
- "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
+ "node_modules/hast-util-parse-selector/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@types/unist": "*"
}
},
- "node_modules/hast-util-raw/node_modules/vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+ "node_modules/hast-util-raw": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
+ "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "hast-util-to-parse5": "^8.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "parse5": "^7.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/hast-util-sanitize": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.1.0.tgz",
- "integrity": "sha512-Hd9tU0ltknMGRDv+d6Ro/4XKzBqQnP/EZrpiTbpFYfXv/uOhWeKc+2uajcbEvAEH98VZd7eII2PiXm13RihnLw==",
+ "node_modules/hast-util-raw/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-raw/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/hast-util-raw/node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0"
+ "@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
@@ -15676,9 +14048,9 @@
}
},
"node_modules/hast-util-to-estree": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.1.tgz",
- "integrity": "sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz",
+ "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
@@ -15692,9 +14064,9 @@
"mdast-util-mdx-expression": "^2.0.0",
"mdast-util-mdx-jsx": "^3.0.0",
"mdast-util-mdxjs-esm": "^2.0.0",
- "property-information": "^6.0.0",
+ "property-information": "^7.0.0",
"space-separated-tokens": "^2.0.0",
- "style-to-object": "^1.0.0",
+ "style-to-js": "^1.0.0",
"unist-util-position": "^5.0.0",
"zwitch": "^2.0.0"
},
@@ -15704,9 +14076,9 @@
}
},
"node_modules/hast-util-to-estree/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
@@ -15731,19 +14103,14 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/hast-util-to-estree/node_modules/inline-style-parser": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
- "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
- "license": "MIT"
- },
- "node_modules/hast-util-to-estree/node_modules/style-to-object": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
- "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
+ "node_modules/hast-util-to-estree/node_modules/property-information": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
+ "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==",
"license": "MIT",
- "dependencies": {
- "inline-style-parser": "0.2.4"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/hast-util-to-estree/node_modules/unist-util-position": {
@@ -15760,9 +14127,9 @@
}
},
"node_modules/hast-util-to-jsx-runtime": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz",
- "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==",
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
+ "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
@@ -15775,9 +14142,9 @@
"mdast-util-mdx-expression": "^2.0.0",
"mdast-util-mdx-jsx": "^3.0.0",
"mdast-util-mdxjs-esm": "^2.0.0",
- "property-information": "^6.0.0",
+ "property-information": "^7.0.0",
"space-separated-tokens": "^2.0.0",
- "style-to-object": "^1.0.0",
+ "style-to-js": "^1.0.0",
"unist-util-position": "^5.0.0",
"vfile-message": "^4.0.0"
},
@@ -15787,9 +14154,9 @@
}
},
"node_modules/hast-util-to-jsx-runtime/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
@@ -15814,19 +14181,14 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
- "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
- "license": "MIT"
- },
- "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
- "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
+ "node_modules/hast-util-to-jsx-runtime/node_modules/property-information": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
+ "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==",
"license": "MIT",
- "dependencies": {
- "inline-style-parser": "0.2.4"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-position": {
@@ -15843,13 +14205,15 @@
}
},
"node_modules/hast-util-to-parse5": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz",
- "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz",
+ "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0",
+ "@types/hast": "^3.0.0",
"comma-separated-tokens": "^2.0.0",
- "property-information": "^6.0.0",
+ "devlop": "^1.0.0",
+ "property-information": "^7.0.0",
"space-separated-tokens": "^2.0.0",
"web-namespaces": "^2.0.0",
"zwitch": "^2.0.0"
@@ -15859,24 +14223,45 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hast-util-to-parse5/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-to-parse5/node_modules/property-information": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
+ "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/hast-util-whitespace": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz",
"integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==",
+ "dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/hastscript": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz",
- "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz",
+ "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0",
+ "@types/hast": "^3.0.0",
"comma-separated-tokens": "^2.0.0",
- "hast-util-parse-selector": "^3.0.0",
- "property-information": "^6.0.0",
+ "hast-util-parse-selector": "^4.0.0",
+ "property-information": "^7.0.0",
"space-separated-tokens": "^2.0.0"
},
"funding": {
@@ -15884,6 +14269,25 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hastscript/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hastscript/node_modules/property-information": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
+ "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -15892,11 +14296,6 @@
"he": "bin/he"
}
},
- "node_modules/heap": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
- "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
- },
"node_modules/history": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
@@ -15966,22 +14365,6 @@
"safe-buffer": "~5.1.0"
}
},
- "node_modules/html-entities": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
- "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/mdevils"
- },
- {
- "type": "patreon",
- "url": "https://patreon.com/mdevils"
- }
- ],
- "license": "MIT"
- },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -16029,10 +14412,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/html-url-attributes": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
+ "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/html-void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
- "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -16128,25 +14522,29 @@
"license": "MIT"
},
"node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
"license": "MIT",
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
},
"engines": {
"node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/http-parser-js": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
- "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz",
+ "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==",
"license": "MIT"
},
"node_modules/http-proxy": {
@@ -16164,9 +14562,9 @@
}
},
"node_modules/http-proxy-middleware": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
- "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.10.tgz",
+ "integrity": "sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ==",
"license": "MIT",
"dependencies": {
"@types/http-proxy": "^1.17.8",
@@ -16202,7 +14600,14 @@
"node_modules/http-reasons": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz",
- "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ=="
+ "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/http2-client": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz",
+ "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==",
+ "license": "MIT"
},
"node_modules/http2-wrapper": {
"version": "2.2.1",
@@ -16216,19 +14621,6 @@
"node": ">=10.19.0"
}
},
- "node_modules/httpsnippet-lite": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/httpsnippet-lite/-/httpsnippet-lite-3.0.5.tgz",
- "integrity": "sha512-So4qTXY5iFj5XtFDwyz2PicUu+8NWrI8e8h+ZeZoVtMNcFQp4FFIntBHUE+JPUG6QQU8o1VHCy+X4ETRDwt9CA==",
- "dependencies": {
- "@types/har-format": "^1.2.10",
- "formdata-node": "^4.4.1",
- "stringify-object": "3.3.0"
- },
- "engines": {
- "node": ">=14.13"
- }
- },
"node_modules/human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -16238,18 +14630,22 @@
"node": ">=10.17.0"
}
},
- "node_modules/hyphenate-style-name": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
- "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
+ "node_modules/hyperdyperid": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz",
+ "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.18"
+ }
},
"node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"license": "MIT",
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
@@ -16296,13 +14692,10 @@
}
},
"node_modules/image-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.0.tgz",
- "integrity": "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz",
+ "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==",
"license": "MIT",
- "dependencies": {
- "queue": "6.0.2"
- },
"bin": {
"image-size": "bin/image-size.js"
},
@@ -16311,14 +14704,21 @@
}
},
"node_modules/immer": {
- "version": "9.0.15",
- "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
- "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==",
+ "version": "11.1.18",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.18.tgz",
+ "integrity": "sha512-EQyQtLiYW029lyoczMl/Hh4Xu7cDecSc58JRYpHyL4tIAu3eqd1yJzQX04d2BZHDkzFFvm6qJEJWOtfDSWAXbQ==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/immer"
}
},
+ "node_modules/immutable": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz",
+ "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==",
+ "license": "MIT"
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -16342,6 +14742,16 @@
"node": ">=8"
}
},
+ "node_modules/import-meta-resolve": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -16354,6 +14764,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -16389,21 +14800,14 @@
"node_modules/inline-style-parser": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
- "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
- },
- "node_modules/inline-style-prefixer": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.0.tgz",
- "integrity": "sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==",
- "dependencies": {
- "css-in-js-utils": "^3.1.0",
- "fast-loops": "^1.1.3"
- }
+ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==",
+ "dev": true
},
"node_modules/internmap": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
"integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -16412,15 +14816,11 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
- "node_modules/intersection-observer": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz",
- "integrity": "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ=="
- },
"node_modules/invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -16430,9 +14830,9 @@
}
},
"node_modules/ipaddr.js": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
- "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.5.0.tgz",
+ "integrity": "sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==",
"license": "MIT",
"engines": {
"node": ">= 10"
@@ -16460,21 +14860,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/is-arguments": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -16496,6 +14881,7 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
"integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -16514,17 +14900,6 @@
"node": ">=4"
}
},
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-ci": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
@@ -16564,6 +14939,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
@@ -16598,20 +14974,6 @@
"node": ">=8"
}
},
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -16628,8 +14990,41 @@
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
"integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container/node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-installed-globally": {
@@ -16647,6 +15042,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-network-error": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz",
+ "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-npm": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz",
@@ -16671,18 +15078,11 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/is-path-cwd": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
- "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/is-path-inside": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
@@ -16706,17 +15106,9 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
"integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-root": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
- "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
"license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
"node_modules/is-stream": {
@@ -16731,20 +15123,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
- "dependencies": {
- "which-typed-array": "^1.1.14"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -16754,6 +15132,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "license": "MIT",
"dependencies": {
"is-docker": "^2.0.0"
},
@@ -16787,24 +15166,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/isomorphic-fetch": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz",
- "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==",
- "dependencies": {
- "node-fetch": "^2.6.1",
- "whatwg-fetch": "^3.4.1"
- }
- },
- "node_modules/isomorphic-rslog": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.6.tgz",
- "integrity": "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==",
- "license": "MIT",
- "engines": {
- "node": ">=14.17.6"
- }
- },
"node_modules/jackspeak": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
@@ -16876,9 +15237,9 @@
}
},
"node_modules/joi": {
- "version": "17.13.3",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
- "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
+ "version": "17.13.6",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.6.tgz",
+ "integrity": "sha512-ImNZaq/LSysofih+xIGYfR0WUXMA9GLUNB//YTCSrZptoRmVgaNAdJyi6K1kXi9pkLEoSkoI8I4UwtNiu/D7nw==",
"license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.3.0",
@@ -16888,84 +15249,45 @@
"@sideway/pinpoint": "^2.0.0"
}
},
- "node_modules/jotai": {
- "version": "1.3.9",
- "resolved": "https://registry.npmjs.org/jotai/-/jotai-1.3.9.tgz",
- "integrity": "sha512-b6DvH9gf+7TfjaboCO54g+C0yhaakIaUBtjLf0dk1p15FWCzNw/93sezdXy9cCaZ8qcEdMLJcjBwQlORmIq29g==",
+ "node_modules/js-levenshtein": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+ "license": "MIT",
"engines": {
- "node": ">=12.7.0"
- },
- "peerDependencies": {
- "@babel/core": "*",
- "@babel/template": "*",
- "@urql/core": "*",
- "immer": "*",
- "optics-ts": "*",
- "react": ">=16.8",
- "react-query": "*",
- "valtio": "*",
- "wonka": "*",
- "xstate": "*"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "@babel/template": {
- "optional": true
- },
- "@urql/core": {
- "optional": true
- },
- "immer": {
- "optional": true
- },
- "optics-ts": {
- "optional": true
- },
- "react-query": {
- "optional": true
- },
- "valtio": {
- "optional": true
- },
- "wonka": {
- "optional": true
- },
- "xstate": {
- "optional": true
- }
+ "node": ">=0.10.0"
}
},
- "node_modules/js-cookie": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
- "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
- },
"node_modules/js-sdsl": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
"integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==",
- "devOptional": true,
+ "dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/js-sdsl"
}
},
- "node_modules/js-sha3": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
- "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
- },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
+ "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -16990,6 +15312,15 @@
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
},
+ "node_modules/json-crawl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/json-crawl/-/json-crawl-0.5.3.tgz",
+ "integrity": "sha512-BEjjCw8c7SxzNK4orhlWD5cXQh8vCk2LqDr4WgQq4CV+5dvopeYwt1Tskg67SuSLKvoFH5g0yuYtg7rcfKV6YA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -16999,31 +15330,48 @@
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz",
"integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==",
+ "license": "MIT",
"dependencies": {
"foreach": "^2.0.4"
}
},
- "node_modules/json-promise": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/json-promise/-/json-promise-1.1.8.tgz",
- "integrity": "sha512-rz31P/7VfYnjQFrF60zpPTT0egMPlc8ZvIQHWs4ZtNZNnAXRmXo6oS+6eyWr5sEMG03OVhklNrTXxiIRYzoUgQ==",
- "dependencies": {
- "bluebird": "*"
- }
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
"node_modules/json-schema-compare": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz",
"integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==",
+ "license": "MIT",
"dependencies": {
"lodash": "^4.17.4"
}
},
+ "node_modules/json-schema-merge-allof": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.8.1.tgz",
+ "integrity": "sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==",
+ "license": "MIT",
+ "dependencies": {
+ "compute-lcm": "^1.1.2",
+ "json-schema-compare": "^0.2.2",
+ "lodash": "^4.17.20"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/json-schema-to-ts": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-2.7.2.tgz",
+ "integrity": "sha512-R1JfqKqbBR4qE8UyBR56Ms30LL62/nlhoz+1UkfI/VE7p54Awu919FZ6ZUPG8zIa3XB65usPJgr1ONVncUGSaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@types/json-schema": "^7.0.9",
+ "ts-algebra": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -17033,7 +15381,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "devOptional": true
+ "dev": true
},
"node_modules/json5": {
"version": "2.2.3",
@@ -17046,11 +15394,6 @@
"node": ">=6"
}
},
- "node_modules/jsonc-parser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz",
- "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w=="
- },
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -17063,13 +15406,14 @@
}
},
"node_modules/katex": {
- "version": "0.16.10",
- "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz",
- "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==",
+ "version": "0.16.47",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz",
+ "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==",
"funding": [
"https://opencollective.com/katex",
"https://github.com/sponsors/katex"
],
+ "license": "MIT",
"dependencies": {
"commander": "^8.3.0"
},
@@ -17081,6 +15425,7 @@
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "license": "MIT",
"engines": {
"node": ">= 12"
}
@@ -17106,14 +15451,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/klaw-sync": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
- "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
- "dependencies": {
- "graceful-fs": "^4.1.11"
- }
- },
"node_modules/kleur": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
@@ -17137,19 +15474,20 @@
}
},
"node_modules/launch-editor": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz",
- "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==",
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.1.tgz",
+ "integrity": "sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==",
"license": "MIT",
"dependencies": {
- "picocolors": "^1.0.0",
- "shell-quote": "^1.8.1"
+ "picocolors": "^1.1.1",
+ "shell-quote": "^1.8.4"
}
},
"node_modules/layout-base": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
- "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
+ "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==",
+ "license": "MIT"
},
"node_modules/leven": {
"version": "3.1.0",
@@ -17163,7 +15501,7 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -17173,12 +15511,12 @@
}
},
"node_modules/lightningcss": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz",
- "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
+ "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
"license": "MPL-2.0",
"dependencies": {
- "detect-libc": "^1.0.3"
+ "detect-libc": "^2.0.3"
},
"engines": {
"node": ">= 12.0.0"
@@ -17188,22 +15526,43 @@
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
- "lightningcss-darwin-arm64": "1.29.1",
- "lightningcss-darwin-x64": "1.29.1",
- "lightningcss-freebsd-x64": "1.29.1",
- "lightningcss-linux-arm-gnueabihf": "1.29.1",
- "lightningcss-linux-arm64-gnu": "1.29.1",
- "lightningcss-linux-arm64-musl": "1.29.1",
- "lightningcss-linux-x64-gnu": "1.29.1",
- "lightningcss-linux-x64-musl": "1.29.1",
- "lightningcss-win32-arm64-msvc": "1.29.1",
- "lightningcss-win32-x64-msvc": "1.29.1"
+ "lightningcss-android-arm64": "1.33.0",
+ "lightningcss-darwin-arm64": "1.33.0",
+ "lightningcss-darwin-x64": "1.33.0",
+ "lightningcss-freebsd-x64": "1.33.0",
+ "lightningcss-linux-arm-gnueabihf": "1.33.0",
+ "lightningcss-linux-arm64-gnu": "1.33.0",
+ "lightningcss-linux-arm64-musl": "1.33.0",
+ "lightningcss-linux-x64-gnu": "1.33.0",
+ "lightningcss-linux-x64-musl": "1.33.0",
+ "lightningcss-win32-arm64-msvc": "1.33.0",
+ "lightningcss-win32-x64-msvc": "1.33.0"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz",
+ "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/lightningcss-darwin-arm64": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz",
- "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz",
+ "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==",
"cpu": [
"arm64"
],
@@ -17221,9 +15580,9 @@
}
},
"node_modules/lightningcss-darwin-x64": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz",
- "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz",
+ "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==",
"cpu": [
"x64"
],
@@ -17241,9 +15600,9 @@
}
},
"node_modules/lightningcss-freebsd-x64": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz",
- "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz",
+ "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==",
"cpu": [
"x64"
],
@@ -17261,9 +15620,9 @@
}
},
"node_modules/lightningcss-linux-arm-gnueabihf": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz",
- "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz",
+ "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==",
"cpu": [
"arm"
],
@@ -17281,9 +15640,9 @@
}
},
"node_modules/lightningcss-linux-arm64-gnu": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz",
- "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz",
+ "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==",
"cpu": [
"arm64"
],
@@ -17301,9 +15660,9 @@
}
},
"node_modules/lightningcss-linux-arm64-musl": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz",
- "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz",
+ "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==",
"cpu": [
"arm64"
],
@@ -17321,9 +15680,9 @@
}
},
"node_modules/lightningcss-linux-x64-gnu": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz",
- "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz",
+ "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==",
"cpu": [
"x64"
],
@@ -17341,9 +15700,9 @@
}
},
"node_modules/lightningcss-linux-x64-musl": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz",
- "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz",
+ "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==",
"cpu": [
"x64"
],
@@ -17361,9 +15720,9 @@
}
},
"node_modules/lightningcss-win32-arm64-msvc": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz",
- "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz",
+ "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==",
"cpu": [
"arm64"
],
@@ -17381,9 +15740,9 @@
}
},
"node_modules/lightningcss-win32-x64-msvc": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz",
- "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz",
+ "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==",
"cpu": [
"x64"
],
@@ -17421,6 +15780,7 @@
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz",
"integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=4"
}
@@ -17462,14 +15822,16 @@
}
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
+ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
+ "license": "MIT"
},
"node_modules/lodash-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
+ "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
+ "license": "MIT"
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
@@ -17477,11 +15839,6 @@
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"license": "MIT"
},
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
- },
"node_modules/lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -17492,7 +15849,7 @@
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "devOptional": true
+ "dev": true
},
"node_modules/lodash.uniq": {
"version": "4.5.0",
@@ -17539,39 +15896,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/lunr": {
"version": "2.3.9",
"resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
"integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
"dev": true
},
- "node_modules/lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
- "bin": {
- "lz-string": "bin/bin.js"
- }
- },
- "node_modules/magic-error": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/magic-error/-/magic-error-0.0.1.tgz",
- "integrity": "sha512-1+N1ET8cbC5bfLQZcRojClzgK2gbUt9keTMr9OJeuXnQKWsfwRRRICuMA3HKaCIXFEgKzxivuMGCNKD7cdU5pg==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
@@ -17593,9 +15923,10 @@
}
},
"node_modules/markdown-table": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
- "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
+ "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -17613,15 +15944,6 @@
"node": ">= 12"
}
},
- "node_modules/match-sorter": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.3.tgz",
- "integrity": "sha512-sgiXxrRijEe0SzHKGX4HouCpfHRPnqteH42UdMEW7BlWy990ZkzcvonJGv4Uu9WE7Y1f8Yocm91+4qFPCbmNww==",
- "dependencies": {
- "@babel/runtime": "^7.23.8",
- "remove-accents": "0.5.0"
- }
- },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -17635,6 +15957,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz",
"integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==",
+ "dev": true,
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
@@ -17649,6 +15972,7 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
"integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -17661,6 +15985,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
"integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0",
@@ -17675,6 +16000,7 @@
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
"integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0"
@@ -17939,9 +16265,9 @@
}
},
"node_modules/mdast-util-gfm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
- "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
+ "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
"license": "MIT",
"dependencies": {
"mdast-util-from-markdown": "^2.0.0",
@@ -18020,9 +16346,9 @@
"license": "MIT"
},
"node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -18036,89 +16362,66 @@
"license": "MIT"
},
"node_modules/mdast-util-gfm-footnote": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz",
- "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0",
- "micromark-util-normalize-identifier": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-to-markdown": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz",
- "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^3.0.0",
- "mdast-util-to-string": "^3.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "unist-util-visit": "^4.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
- "dependencies": {
- "@types/mdast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-footnote/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-gfm-footnote/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/mdast-util-gfm-footnote/node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@types/unist": "*"
}
},
- "node_modules/mdast-util-gfm-footnote/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "micromark-util-symbol": "^2.0.0"
}
},
+ "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/mdast-util-gfm-strikethrough": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
@@ -18194,67 +16497,6 @@
"@types/unist": "*"
}
},
- "node_modules/mdast-util-gfm/node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/mdast-util-gfm/node_modules/mdast-util-gfm-footnote": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
- "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm/node_modules/micromark-util-normalize-identifier": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
- "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/mdast-util-gfm/node_modules/micromark-util-symbol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
"node_modules/mdast-util-mdx": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
@@ -18382,84 +16624,147 @@
"@types/unist": "*"
}
},
- "node_modules/mdast-util-phrasing": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz",
- "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==",
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
+ "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
+ "license": "MIT",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-phrasing/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/mdast-util-to-hast/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@types/unist": "*"
}
},
- "node_modules/mdast-util-to-hast": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-11.3.0.tgz",
- "integrity": "sha512-4o3Cli3hXPmm1LhB+6rqhfsIUBjnKFlIUZvudaermXB+4/KONdd/W4saWWkC+LBLbPMqhFSSTSRgafHsT5fVJw==",
+ "node_modules/mdast-util-to-hast/node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "@types/mdurl": "^1.0.0",
- "mdast-util-definitions": "^5.0.0",
- "mdurl": "^1.0.0",
- "unist-builder": "^3.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "@types/unist": "*"
}
},
- "node_modules/mdast-util-to-hast/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "node_modules/mdast-util-to-hast/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/mdast-util-to-hast/node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
+ "@types/unist": "^3.0.0"
},
"funding": {
"type": "opencollective",
@@ -18620,32 +16925,44 @@
}
},
"node_modules/mdn-data": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
- },
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+ "license": "CC0-1.0"
},
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/memfs": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz",
- "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==",
+ "version": "4.68.1",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.68.1.tgz",
+ "integrity": "sha512-OD+IDRUvIxu3QHL+nFm9gdyugInD27FDJ+sl4B5QgomPHXMlbw+GP918P8VNKu2FkNlVeqBkpzkwROpamVifRw==",
+ "license": "Apache-2.0",
"dependencies": {
- "fs-monkey": "^1.0.3"
+ "@jsonjoy.com/fs-core": "4.68.1",
+ "@jsonjoy.com/fs-fsa": "4.68.1",
+ "@jsonjoy.com/fs-node": "4.68.1",
+ "@jsonjoy.com/fs-node-builtins": "4.68.1",
+ "@jsonjoy.com/fs-node-to-fsa": "4.68.1",
+ "@jsonjoy.com/fs-node-utils": "4.68.1",
+ "@jsonjoy.com/fs-print": "4.68.1",
+ "@jsonjoy.com/fs-snapshot": "4.68.1",
+ "@jsonjoy.com/json-pack": "^1.11.0",
+ "@jsonjoy.com/util": "^1.9.0",
+ "glob-to-regex.js": "^1.0.1",
+ "thingies": "^2.5.0",
+ "tree-dump": "^1.0.3",
+ "tslib": "^2.0.0"
},
- "engines": {
- "node": ">= 4.0.0"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
}
},
"node_modules/merge-descriptors": {
@@ -18671,123 +16988,45 @@
}
},
"node_modules/mermaid": {
- "version": "10.9.0",
- "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz",
- "integrity": "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==",
- "dependencies": {
- "@braintree/sanitize-url": "^6.0.1",
- "@types/d3-scale": "^4.0.3",
- "@types/d3-scale-chromatic": "^3.0.0",
- "cytoscape": "^3.28.1",
+ "version": "11.17.0",
+ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.17.0.tgz",
+ "integrity": "sha512-Jo9N377Wb4MSnHFPTbLi2SxFpsQl4eVHoxnW5U1Md9EazvgMp3s+4ohDxr81YNTgbn5Kj7HJ3yslrSJ52kwpbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@braintree/sanitize-url": "^7.1.2",
+ "@iconify/utils": "^3.0.2",
+ "@mermaid-js/parser": "^1.2.1",
+ "@types/d3": "^7.4.3",
+ "@upsetjs/venn.js": "^2.0.0",
+ "cytoscape": "^3.34.0",
"cytoscape-cose-bilkent": "^4.1.0",
- "d3": "^7.4.0",
+ "cytoscape-fcose": "^2.2.0",
+ "d3": "^7.9.0",
"d3-sankey": "^0.12.3",
- "dagre-d3-es": "7.0.10",
- "dayjs": "^1.11.7",
- "dompurify": "^3.0.5",
- "elkjs": "^0.9.0",
- "katex": "^0.16.9",
- "khroma": "^2.0.0",
- "lodash-es": "^4.17.21",
- "mdast-util-from-markdown": "^1.3.0",
- "non-layered-tidy-tree-layout": "^2.0.2",
- "stylis": "^4.1.3",
+ "dagre-d3-es": "7.0.14",
+ "dayjs": "^1.11.21",
+ "dompurify": "^3.3.3",
+ "es-toolkit": "^1.45.1",
+ "fastdom": "1.0.12",
+ "katex": "^0.16.47",
+ "khroma": "^2.1.0",
+ "marked": "^16.3.0",
+ "roughjs": "^4.6.6",
+ "stylis": "^4.3.6",
"ts-dedent": "^2.2.0",
- "uuid": "^9.0.0",
- "web-worker": "^1.2.0"
- }
- },
- "node_modules/mermaid/node_modules/mdast-util-from-markdown": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
- "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "mdast-util-to-string": "^3.1.0",
- "micromark": "^3.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mermaid/node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
- "dependencies": {
- "@types/mdast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mermaid/node_modules/micromark": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
- "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "micromark-core-commonmark": "^1.0.1",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/mermaid/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0"
}
},
- "node_modules/mermaid/node_modules/uuid": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
+ "node_modules/mermaid/node_modules/marked": {
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz",
+ "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==",
+ "license": "MIT",
"bin": {
- "uuid": "dist/bin/uuid"
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 20"
}
},
"node_modules/methods": {
@@ -18837,6 +17076,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz",
"integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -18964,9 +17204,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-directive/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19032,9 +17272,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-frontmatter/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19157,9 +17397,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19173,43 +17413,167 @@
"license": "MIT"
},
"node_modules/micromark-extension-gfm-footnote": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz",
- "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
+ "license": "MIT",
"dependencies": {
- "micromark-core-commonmark": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-strikethrough": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
- "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-core-commonmark": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
+ "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
"license": "MIT",
"dependencies": {
+ "decode-named-character-reference": "^1.0.0",
"devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
"micromark-util-chunked": "^2.0.0",
"micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
"micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-character": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-destination": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-label": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-title": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
"integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
@@ -19229,7 +17593,7 @@
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-chunked": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-chunked": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
"integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
@@ -19248,7 +17612,7 @@
"micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-classify-character": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-classify-character": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
"integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
@@ -19269,10 +17633,26 @@
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-resolve-all": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-html-tag-name": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
- "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19283,15 +17663,12 @@
"url": "https://opencollective.com/unified"
}
],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
+ "license": "MIT"
},
- "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-normalize-identifier": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19302,12 +17679,15 @@
"url": "https://opencollective.com/unified"
}
],
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
},
- "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-types": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-resolve-all": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19318,29 +17698,15 @@
"url": "https://opencollective.com/unified"
}
],
- "license": "MIT"
- },
- "node_modules/micromark-extension-gfm-table": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
- "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
"license": "MIT",
"dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-sanitize-uri": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
- "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19354,13 +17720,14 @@
"license": "MIT",
"dependencies": {
"micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-subtokenize": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
+ "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19373,11 +17740,13 @@
],
"license": "MIT",
"dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": {
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
"integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
@@ -19393,10 +17762,10 @@
],
"license": "MIT"
},
- "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19409,12 +17778,17 @@
],
"license": "MIT"
},
- "node_modules/micromark-extension-gfm-tagfilter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
- "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
+ "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
"license": "MIT",
"dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
"funding": {
@@ -19422,10 +17796,10 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-tagfilter/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19436,29 +17810,16 @@
"url": "https://opencollective.com/unified"
}
],
- "license": "MIT"
- },
- "node_modules/micromark-extension-gfm-task-list-item": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
- "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
"license": "MIT",
"dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": {
+ "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-chunked": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
- "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19471,14 +17832,13 @@
],
"license": "MIT",
"dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19491,14 +17851,15 @@
],
"license": "MIT",
"dependencies": {
+ "micromark-util-character": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": {
+ "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-resolve-all": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19509,12 +17870,15 @@
"url": "https://opencollective.com/unified"
}
],
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
},
- "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-types": {
+ "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19527,10 +17891,10 @@
],
"license": "MIT"
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-core-commonmark": {
+ "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-types": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz",
- "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19541,38 +17905,17 @@
"url": "https://opencollective.com/unified"
}
],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
+ "license": "MIT"
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-extension-gfm-footnote": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
- "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
+ "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
"license": "MIT",
"dependencies": {
"devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
"micromark-factory-space": "^2.0.0",
"micromark-util-character": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
},
@@ -19581,10 +17924,10 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-factory-destination": {
+ "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
- "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19598,14 +17941,13 @@
"license": "MIT",
"dependencies": {
"micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-factory-label": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
- "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19618,16 +17960,14 @@
],
"license": "MIT",
"dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-factory-space": {
+ "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
- "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19638,16 +17978,12 @@
"url": "https://opencollective.com/unified"
}
],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
+ "license": "MIT"
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-factory-title": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
- "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19658,18 +17994,25 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT"
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
+ "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
"license": "MIT",
"dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-factory-whitespace": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
- "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "node_modules/micromark-extension-gfm-tagfilter/node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19680,57 +18023,29 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT"
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
+ "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
"license": "MIT",
"dependencies": {
+ "devlop": "^1.0.0",
"micromark-factory-space": "^2.0.0",
"micromark-util-character": "^2.0.0",
"micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-chunked": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
- "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-classify-character": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
- "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19744,14 +18059,13 @@
"license": "MIT",
"dependencies": {
"micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-combine-extensions": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
- "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
+ "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19764,14 +18078,14 @@
],
"license": "MIT",
"dependencies": {
- "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-encode": {
+ "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19784,10 +18098,10 @@
],
"license": "MIT"
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-html-tag-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
- "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
+ "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19800,10 +18114,10 @@
],
"license": "MIT"
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-normalize-identifier": {
+ "node_modules/micromark-extension-gfm/node_modules/micromark-util-chunked": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
- "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19819,50 +18133,10 @@
"micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-resolve-all": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
- "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-sanitize-uri": {
+ "node_modules/micromark-extension-gfm/node_modules/micromark-util-combine-extensions": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-gfm/node_modules/micromark-util-subtokenize": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.4.tgz",
- "integrity": "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19875,9 +18149,7 @@
],
"license": "MIT",
"dependencies": {
- "devlop": "^1.0.0",
"micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
"micromark-util-types": "^2.0.0"
}
},
@@ -19898,9 +18170,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-gfm/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19914,9 +18186,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-mdx-expression": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz",
- "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz",
+ "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -19996,9 +18268,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20012,12 +18284,11 @@
"license": "MIT"
},
"node_modules/micromark-extension-mdx-jsx": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz",
- "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz",
+ "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==",
"license": "MIT",
"dependencies": {
- "@types/acorn": "^4.0.0",
"@types/estree": "^1.0.0",
"devlop": "^1.0.0",
"estree-util-is-identifier-name": "^3.0.0",
@@ -20091,9 +18362,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20120,9 +18391,9 @@
}
},
"node_modules/micromark-extension-mdx-md/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20177,9 +18448,9 @@
}
},
"node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-core-commonmark": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz",
- "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
+ "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20432,9 +18703,9 @@
}
},
"node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-subtokenize": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.4.tgz",
- "integrity": "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
+ "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20470,9 +18741,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20541,9 +18812,9 @@
"license": "MIT"
},
"node_modules/micromark-extension-mdxjs/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20560,6 +18831,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz",
"integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20580,6 +18852,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz",
"integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20598,9 +18871,9 @@
}
},
"node_modules/micromark-factory-mdx-expression": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz",
- "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz",
+ "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20681,9 +18954,9 @@
"license": "MIT"
},
"node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20719,6 +18992,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz",
"integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20741,6 +19015,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz",
"integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20781,6 +19056,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz",
"integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20799,6 +19075,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz",
"integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20819,6 +19096,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz",
"integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20838,6 +19116,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz",
"integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20856,6 +19135,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz",
"integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20877,6 +19157,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz",
"integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20889,9 +19170,9 @@
]
},
"node_modules/micromark-util-events-to-acorn": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz",
- "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz",
+ "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20904,7 +19185,6 @@
],
"license": "MIT",
"dependencies": {
- "@types/acorn": "^4.0.0",
"@types/estree": "^1.0.0",
"@types/unist": "^3.0.0",
"devlop": "^1.0.0",
@@ -20937,9 +19217,9 @@
"license": "MIT"
},
"node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -20956,6 +19236,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz",
"integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20971,6 +19252,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz",
"integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -20989,6 +19271,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz",
"integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -21007,6 +19290,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz",
"integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -21027,6 +19311,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz",
"integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -21453,21 +19738,16 @@
"node": ">=8.6"
}
},
- "node_modules/microseconds": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz",
- "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA=="
- },
"node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
"license": "MIT",
"bin": {
"mime": "cli.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=10.0.0"
}
},
"node_modules/mime-db": {
@@ -21480,9 +19760,10 @@
}
},
"node_modules/mime-format": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz",
- "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.2.tgz",
+ "integrity": "sha512-Y5ERWVcyh3sby9Fx2U5F1yatiTFjNsqF5NltihTWI9QgNtr5o3dbCZdcKa1l2wyfhnwwoP9HGNxga7LqZLA6gw==",
+ "license": "Apache-2.0",
"dependencies": {
"charset": "^1.0.0"
}
@@ -21520,9 +19801,9 @@
}
},
"node_modules/mini-css-extract-plugin": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz",
- "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==",
+ "version": "2.10.2",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz",
+ "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==",
"license": "MIT",
"dependencies": {
"schema-utils": "^4.0.0",
@@ -21546,9 +19827,10 @@
"license": "ISC"
},
"node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -21570,21 +19852,11 @@
"node": ">=16 || 14 >=14.17"
}
},
- "node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "dev": true,
"engines": {
"node": ">=4"
}
@@ -21599,9 +19871,10 @@
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
"node_modules/multicast-dns": {
"version": "7.2.5",
@@ -21616,6 +19889,15 @@
"multicast-dns": "cli.js"
}
},
+ "node_modules/mustache": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
+ "license": "MIT",
+ "bin": {
+ "mustache": "bin/mustache"
+ }
+ },
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@@ -21626,38 +19908,6 @@
"thenify-all": "^1.0.0"
}
},
- "node_modules/nano-css": {
- "version": "5.6.1",
- "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.1.tgz",
- "integrity": "sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15",
- "css-tree": "^1.1.2",
- "csstype": "^3.1.2",
- "fastest-stable-stringify": "^2.0.2",
- "inline-style-prefixer": "^7.0.0",
- "rtl-css-js": "^1.16.1",
- "stacktrace-js": "^2.0.2",
- "stylis": "^4.3.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/nano-memoize": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/nano-memoize/-/nano-memoize-1.3.1.tgz",
- "integrity": "sha512-wQiW3xHptgGlec/Zbo7oq6Zz4kKoK8TaIIs1irTO9iJOGTIG3lnQRUJfH73bJ/rn7MOE4sTdSU+ALPGEidaijQ=="
- },
- "node_modules/nano-time": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz",
- "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==",
- "dependencies": {
- "big-integer": "^1.6.16"
- }
- },
"node_modules/nanoid": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz",
@@ -21679,7 +19929,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "devOptional": true
+ "dev": true
},
"node_modules/natural-compare-lite": {
"version": "1.4.0",
@@ -21701,15 +19951,14 @@
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
- "node_modules/next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
- },
- "node_modules/nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ "node_modules/neotraverse": {
+ "version": "0.6.15",
+ "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.15.tgz",
+ "integrity": "sha512-HZpdkco+JeXq0G+WWpMJ4NsX3pqb5O7eR9uGz3FfoFt+LYzU8iRWp49nJtud6hsDoywM8tIrDo3gjgmOqJA8LA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
},
"node_modules/no-case": {
"version": "3.0.4",
@@ -21720,28 +19969,12 @@
"tslib": "^2.0.3"
}
},
- "node_modules/node-abort-controller": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
- "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ=="
- },
- "node_modules/node-domexception": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "github",
- "url": "https://paypal.me/jimmywarting"
- }
- ],
- "engines": {
- "node": ">=10.5.0"
- }
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "license": "MIT",
+ "optional": true
},
"node_modules/node-emoji": {
"version": "2.2.0",
@@ -21762,6 +19995,7 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -21777,25 +20011,35 @@
}
}
},
- "node_modules/node-forge": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
- "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
- "license": "(BSD-3-Clause OR GPL-2.0)",
+ "node_modules/node-fetch-h2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz",
+ "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==",
+ "license": "MIT",
+ "dependencies": {
+ "http2-client": "^1.2.5"
+ },
"engines": {
- "node": ">= 6.13.0"
+ "node": "4.x || >=6.0.0"
}
},
- "node_modules/node-releases": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "license": "MIT"
+ "node_modules/node-readfiles": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz",
+ "integrity": "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==",
+ "license": "MIT",
+ "dependencies": {
+ "es6-promise": "^3.2.1"
+ }
},
- "node_modules/non-layered-tidy-tree-layout": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz",
- "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw=="
+ "node_modules/node-releases": {
+ "version": "2.0.53",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz",
+ "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/normalize-path": {
"version": "3.0.0",
@@ -21805,14 +20049,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -21892,6 +20128,96 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/oas-kit-common": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz",
+ "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "fast-safe-stringify": "^2.0.7"
+ }
+ },
+ "node_modules/oas-linter": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz",
+ "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@exodus/schemasafe": "^1.0.0-rc.2",
+ "should": "^13.2.1",
+ "yaml": "^1.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/Mermade/oas-kit?sponsor=1"
+ }
+ },
+ "node_modules/oas-resolver": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz",
+ "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "node-fetch-h2": "^2.3.0",
+ "oas-kit-common": "^1.0.8",
+ "reftools": "^1.1.9",
+ "yaml": "^1.10.0",
+ "yargs": "^17.0.1"
+ },
+ "bin": {
+ "resolve": "resolve.js"
+ },
+ "funding": {
+ "url": "https://github.com/Mermade/oas-kit?sponsor=1"
+ }
+ },
+ "node_modules/oas-resolver-browser": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/oas-resolver-browser/-/oas-resolver-browser-2.5.6.tgz",
+ "integrity": "sha512-Jw5elT/kwUJrnGaVuRWe1D7hmnYWB8rfDDjBnpQ+RYY/dzAewGXeTexXzt4fGEo6PUE4eqKqPWF79MZxxvMppA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "node-fetch-h2": "^2.3.0",
+ "oas-kit-common": "^1.0.8",
+ "path-browserify": "^1.0.1",
+ "reftools": "^1.1.9",
+ "yaml": "^1.10.0",
+ "yargs": "^17.0.1"
+ },
+ "bin": {
+ "resolve": "resolve.js"
+ },
+ "funding": {
+ "url": "https://github.com/Mermade/oas-kit?sponsor=1"
+ }
+ },
+ "node_modules/oas-schema-walker": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz",
+ "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==",
+ "license": "BSD-3-Clause",
+ "funding": {
+ "url": "https://github.com/Mermade/oas-kit?sponsor=1"
+ }
+ },
+ "node_modules/oas-validator": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz",
+ "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "call-me-maybe": "^1.0.1",
+ "oas-kit-common": "^1.0.8",
+ "oas-linter": "^3.2.2",
+ "oas-resolver": "^2.5.6",
+ "oas-schema-walker": "^1.1.5",
+ "reftools": "^1.1.9",
+ "should": "^13.2.1",
+ "yaml": "^1.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/Mermade/oas-kit?sponsor=1"
+ }
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -21904,15 +20230,14 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
- "dev": true,
"engines": {
"node": ">= 6"
}
},
"node_modules/object-inspect": {
- "version": "1.13.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
- "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -21950,11 +20275,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/oblivious-set": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz",
- "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw=="
- },
"node_modules/obuf": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
@@ -21974,9 +20294,9 @@
}
},
"node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
@@ -22006,9 +20326,10 @@
}
},
"node_modules/open": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
- "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "license": "MIT",
"dependencies": {
"define-lazy-prop": "^2.0.0",
"is-docker": "^2.1.1",
@@ -22021,14 +20342,103 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/openapi3-ts": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-2.0.2.tgz",
- "integrity": "sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw==",
+ "node_modules/openapi-to-postmanv2": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/openapi-to-postmanv2/-/openapi-to-postmanv2-6.3.3.tgz",
+ "integrity": "sha512-o0u6qqMMRLt7eAyFBpL/lCresQ1VqQFGe6/iPMBvNkWDXrpgGo5jo+YnP1e0MwF3tdUKLfkHssufGWMdojpPLg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "ajv": "^8.11.0",
+ "ajv-draft-04": "1.0.0",
+ "ajv-formats": "2.1.1",
+ "async": "3.2.6",
+ "commander": "2.20.3",
+ "graphlib": "2.1.8",
+ "js-yaml": "4.3.0",
+ "json-pointer": "0.6.2",
+ "json-schema-merge-allof": "0.8.1",
+ "lodash": "4.18.1",
+ "neotraverse": "0.6.15",
+ "oas-resolver-browser": "2.5.6",
+ "object-hash": "3.0.0",
+ "openapi-types": "^12.1.3",
+ "path-browserify": "1.0.1",
+ "postman-collection": "^5.0.0",
+ "swagger2openapi": "7.0.8",
+ "yaml": "1.10.2"
+ },
+ "bin": {
+ "openapi2postmanv2": "bin/openapi2postmanv2.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/openapi-to-postmanv2/node_modules/ajv": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/openapi-to-postmanv2/node_modules/ajv-draft-04": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
+ "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^8.5.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/openapi-to-postmanv2/node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "license": "MIT",
"dependencies": {
- "yaml": "^1.10.2"
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
}
},
+ "node_modules/openapi-to-postmanv2/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT"
+ },
+ "node_modules/openapi-to-postmanv2/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/openapi-types": {
+ "version": "12.1.3",
+ "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz",
+ "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==",
+ "license": "MIT"
+ },
"node_modules/opener": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
@@ -22042,7 +20452,7 @@
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
"integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
@@ -22063,19 +20473,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/outvariant": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz",
- "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw=="
- },
"node_modules/p-cancelable": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
@@ -22084,6 +20481,15 @@
"node": ">=12.20"
}
},
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/p-limit": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
@@ -22100,9 +20506,9 @@
}
},
"node_modules/p-limit/node_modules/yocto-queue": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
- "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz",
+ "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==",
"license": "MIT",
"engines": {
"node": ">=12.20"
@@ -22130,6 +20536,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "license": "MIT",
"dependencies": {
"aggregate-error": "^3.0.0"
},
@@ -22140,26 +20547,49 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/p-queue": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
+ "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.4",
+ "p-timeout": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/p-retry": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
- "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz",
+ "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==",
"license": "MIT",
"dependencies": {
- "@types/retry": "0.12.0",
+ "@types/retry": "0.12.2",
+ "is-network-error": "^1.0.0",
"retry": "^0.13.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "node_modules/p-timeout": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
+ "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
"license": "MIT",
+ "dependencies": {
+ "p-finally": "^1.0.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
"node_modules/package-json": {
@@ -22179,6 +20609,28 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/package-manager-detector": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.8.0.tgz",
+ "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==",
+ "license": "MIT"
+ },
+ "node_modules/pako": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-3.0.1.tgz",
+ "integrity": "sha512-GupotUUI0mlhugKjUs4bjOwLt3nrehy9Ys2dxC0GtgVef5cnKggkDMmf2bq2poCCuVXopWPmqsc9VDT2iJUy+w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "(MIT AND Zlib)"
+ },
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@@ -22243,12 +20695,12 @@
"license": "ISC"
},
"node_modules/parse5": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
- "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"license": "MIT",
"dependencies": {
- "entities": "^4.5.0"
+ "entities": "^6.0.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
@@ -22267,6 +20719,18 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -22285,169 +20749,22 @@
"tslib": "^2.0.3"
}
},
- "node_modules/patch-package": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz",
- "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==",
- "dependencies": {
- "@yarnpkg/lockfile": "^1.1.0",
- "chalk": "^4.1.2",
- "cross-spawn": "^6.0.5",
- "find-yarn-workspace-root": "^2.0.0",
- "fs-extra": "^9.0.0",
- "is-ci": "^2.0.0",
- "klaw-sync": "^6.0.0",
- "minimist": "^1.2.6",
- "open": "^7.4.2",
- "rimraf": "^2.6.3",
- "semver": "^5.6.0",
- "slash": "^2.0.0",
- "tmp": "^0.0.33",
- "yaml": "^1.10.2"
- },
- "bin": {
- "patch-package": "index.js"
- },
- "engines": {
- "node": ">=10",
- "npm": ">5"
- }
- },
- "node_modules/patch-package/node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
- },
- "node_modules/patch-package/node_modules/cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/patch-package/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/patch-package/node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
- "node_modules/patch-package/node_modules/open": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "dependencies": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/patch-package/node_modules/path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/patch-package/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/patch-package/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/patch-package/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/patch-package/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/patch-package/node_modules/slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/patch-package/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
- "dev": true
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ },
+ "node_modules/path-data-parser": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz",
+ "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==",
+ "license": "MIT"
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -22569,102 +20886,52 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/pkg-up": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
- "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
- "license": "MIT",
- "dependencies": {
- "find-up": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-up/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-up/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "license": "MIT",
+ "node_modules/pkijs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz",
+ "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "p-limit": "^2.0.0"
+ "@noble/hashes": "1.4.0",
+ "asn1js": "^3.0.6",
+ "bytestreamjs": "^2.0.1",
+ "pvtsutils": "^1.3.6",
+ "pvutils": "^1.1.3",
+ "tslib": "^2.8.1"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "license": "MIT",
- "engines": {
- "node": ">=4"
+ "node": ">=16.0.0"
}
},
- "node_modules/polished": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz",
- "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==",
- "dependencies": {
- "@babel/runtime": "^7.17.8"
- },
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=4"
}
},
- "node_modules/possible-typed-array-names": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
- "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
- "engines": {
- "node": ">= 0.4"
+ "node_modules/points-on-curve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz",
+ "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==",
+ "license": "MIT"
+ },
+ "node_modules/points-on-path": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz",
+ "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==",
+ "license": "MIT",
+ "dependencies": {
+ "path-data-parser": "0.1.0",
+ "points-on-curve": "0.2.0"
}
},
"node_modules/postcss": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
- "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
+ "version": "8.5.26",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz",
+ "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==",
"funding": [
{
"type": "opencollective",
@@ -22681,7 +20948,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.8",
+ "nanoid": "^3.3.17",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -22715,9 +20982,9 @@
}
},
"node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -22759,9 +21026,9 @@
}
},
"node_modules/postcss-color-functional-notation": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.7.tgz",
- "integrity": "sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==",
+ "version": "7.0.12",
+ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz",
+ "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==",
"funding": [
{
"type": "github",
@@ -22774,10 +21041,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -22874,9 +21141,9 @@
}
},
"node_modules/postcss-custom-media": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.5.tgz",
- "integrity": "sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==",
+ "version": "11.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz",
+ "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==",
"funding": [
{
"type": "github",
@@ -22889,10 +21156,10 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/cascade-layer-name-parser": "^2.0.4",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/media-query-list-parser": "^4.0.2"
+ "@csstools/cascade-layer-name-parser": "^2.0.5",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3"
},
"engines": {
"node": ">=18"
@@ -22902,9 +21169,9 @@
}
},
"node_modules/postcss-custom-properties": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.4.tgz",
- "integrity": "sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==",
+ "version": "14.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz",
+ "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==",
"funding": [
{
"type": "github",
@@ -22917,9 +21184,9 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/cascade-layer-name-parser": "^2.0.4",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/cascade-layer-name-parser": "^2.0.5",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
"@csstools/utilities": "^2.0.0",
"postcss-value-parser": "^4.2.0"
},
@@ -22931,9 +21198,9 @@
}
},
"node_modules/postcss-custom-selectors": {
- "version": "8.0.4",
- "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.4.tgz",
- "integrity": "sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz",
+ "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==",
"funding": [
{
"type": "github",
@@ -22946,9 +21213,9 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/cascade-layer-name-parser": "^2.0.4",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/cascade-layer-name-parser": "^2.0.5",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
"postcss-selector-parser": "^7.0.0"
},
"engines": {
@@ -22959,9 +21226,9 @@
}
},
"node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -22997,9 +21264,9 @@
}
},
"node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -23073,9 +21340,9 @@
}
},
"node_modules/postcss-double-position-gradients": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.0.tgz",
- "integrity": "sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==",
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz",
+ "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==",
"funding": [
{
"type": "github",
@@ -23088,7 +21355,7 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0",
"postcss-value-parser": "^4.2.0"
},
@@ -23125,9 +21392,9 @@
}
},
"node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -23163,9 +21430,9 @@
}
},
"node_modules/postcss-focus-within/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -23271,9 +21538,9 @@
}
},
"node_modules/postcss-lab-function": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.7.tgz",
- "integrity": "sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==",
+ "version": "7.0.12",
+ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz",
+ "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==",
"funding": [
{
"type": "github",
@@ -23286,10 +21553,10 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
"@csstools/utilities": "^2.0.0"
},
"engines": {
@@ -23371,9 +21638,9 @@
}
},
"node_modules/postcss-logical": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.0.0.tgz",
- "integrity": "sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz",
+ "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==",
"funding": [
{
"type": "github",
@@ -23539,9 +21806,9 @@
}
},
"node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -23567,9 +21834,9 @@
}
},
"node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -23621,9 +21888,9 @@
}
},
"node_modules/postcss-nesting": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.1.tgz",
- "integrity": "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==",
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz",
+ "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==",
"funding": [
{
"type": "github",
@@ -23636,7 +21903,7 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/selector-resolve-nested": "^3.0.0",
+ "@csstools/selector-resolve-nested": "^3.1.0",
"@csstools/selector-specificity": "^5.0.0",
"postcss-selector-parser": "^7.0.0"
},
@@ -23648,9 +21915,9 @@
}
},
"node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz",
- "integrity": "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz",
+ "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==",
"funding": [
{
"type": "github",
@@ -23692,9 +21959,9 @@
}
},
"node_modules/postcss-nesting/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -23935,9 +22202,9 @@
}
},
"node_modules/postcss-preset-env": {
- "version": "10.1.3",
- "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.3.tgz",
- "integrity": "sha512-9qzVhcMFU/MnwYHyYpJz4JhGku/4+xEiPTmhn0hj3IxnUYlEF9vbh7OC1KoLAnenS6Fgg43TKNp9xcuMeAi4Zw==",
+ "version": "10.6.1",
+ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.6.1.tgz",
+ "integrity": "sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g==",
"funding": [
{
"type": "github",
@@ -23950,62 +22217,70 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/postcss-cascade-layers": "^5.0.1",
- "@csstools/postcss-color-function": "^4.0.7",
- "@csstools/postcss-color-mix-function": "^3.0.7",
- "@csstools/postcss-content-alt-text": "^2.0.4",
- "@csstools/postcss-exponential-functions": "^2.0.6",
+ "@csstools/postcss-alpha-function": "^1.0.1",
+ "@csstools/postcss-cascade-layers": "^5.0.2",
+ "@csstools/postcss-color-function": "^4.0.12",
+ "@csstools/postcss-color-function-display-p3-linear": "^1.0.1",
+ "@csstools/postcss-color-mix-function": "^3.0.12",
+ "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2",
+ "@csstools/postcss-content-alt-text": "^2.0.8",
+ "@csstools/postcss-contrast-color-function": "^2.0.12",
+ "@csstools/postcss-exponential-functions": "^2.0.9",
"@csstools/postcss-font-format-keywords": "^4.0.0",
- "@csstools/postcss-gamut-mapping": "^2.0.7",
- "@csstools/postcss-gradients-interpolation-method": "^5.0.7",
- "@csstools/postcss-hwb-function": "^4.0.7",
- "@csstools/postcss-ic-unit": "^4.0.0",
- "@csstools/postcss-initial": "^2.0.0",
- "@csstools/postcss-is-pseudo-class": "^5.0.1",
- "@csstools/postcss-light-dark-function": "^2.0.7",
+ "@csstools/postcss-gamut-mapping": "^2.0.11",
+ "@csstools/postcss-gradients-interpolation-method": "^5.0.12",
+ "@csstools/postcss-hwb-function": "^4.0.12",
+ "@csstools/postcss-ic-unit": "^4.0.4",
+ "@csstools/postcss-initial": "^2.0.1",
+ "@csstools/postcss-is-pseudo-class": "^5.0.3",
+ "@csstools/postcss-light-dark-function": "^2.0.11",
"@csstools/postcss-logical-float-and-clear": "^3.0.0",
"@csstools/postcss-logical-overflow": "^2.0.0",
"@csstools/postcss-logical-overscroll-behavior": "^2.0.0",
"@csstools/postcss-logical-resize": "^3.0.0",
- "@csstools/postcss-logical-viewport-units": "^3.0.3",
- "@csstools/postcss-media-minmax": "^2.0.6",
- "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.4",
+ "@csstools/postcss-logical-viewport-units": "^3.0.4",
+ "@csstools/postcss-media-minmax": "^2.0.9",
+ "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5",
"@csstools/postcss-nested-calc": "^4.0.0",
- "@csstools/postcss-normalize-display-values": "^4.0.0",
- "@csstools/postcss-oklab-function": "^4.0.7",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/postcss-random-function": "^1.0.2",
- "@csstools/postcss-relative-color-syntax": "^3.0.7",
+ "@csstools/postcss-normalize-display-values": "^4.0.1",
+ "@csstools/postcss-oklab-function": "^4.0.12",
+ "@csstools/postcss-position-area-property": "^1.0.0",
+ "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+ "@csstools/postcss-property-rule-prelude-list": "^1.0.0",
+ "@csstools/postcss-random-function": "^2.0.1",
+ "@csstools/postcss-relative-color-syntax": "^3.0.12",
"@csstools/postcss-scope-pseudo-class": "^4.0.1",
- "@csstools/postcss-sign-functions": "^1.1.1",
- "@csstools/postcss-stepped-value-functions": "^4.0.6",
- "@csstools/postcss-text-decoration-shorthand": "^4.0.1",
- "@csstools/postcss-trigonometric-functions": "^4.0.6",
+ "@csstools/postcss-sign-functions": "^1.1.4",
+ "@csstools/postcss-stepped-value-functions": "^4.0.9",
+ "@csstools/postcss-syntax-descriptor-syntax-production": "^1.0.1",
+ "@csstools/postcss-system-ui-font-family": "^1.0.0",
+ "@csstools/postcss-text-decoration-shorthand": "^4.0.3",
+ "@csstools/postcss-trigonometric-functions": "^4.0.9",
"@csstools/postcss-unset-value": "^4.0.0",
- "autoprefixer": "^10.4.19",
- "browserslist": "^4.23.1",
+ "autoprefixer": "^10.4.23",
+ "browserslist": "^4.28.1",
"css-blank-pseudo": "^7.0.1",
- "css-has-pseudo": "^7.0.2",
+ "css-has-pseudo": "^7.0.3",
"css-prefers-color-scheme": "^10.0.0",
- "cssdb": "^8.2.3",
+ "cssdb": "^8.6.0",
"postcss-attribute-case-insensitive": "^7.0.1",
"postcss-clamp": "^4.1.0",
- "postcss-color-functional-notation": "^7.0.7",
+ "postcss-color-functional-notation": "^7.0.12",
"postcss-color-hex-alpha": "^10.0.0",
"postcss-color-rebeccapurple": "^10.0.0",
- "postcss-custom-media": "^11.0.5",
- "postcss-custom-properties": "^14.0.4",
- "postcss-custom-selectors": "^8.0.4",
+ "postcss-custom-media": "^11.0.6",
+ "postcss-custom-properties": "^14.0.6",
+ "postcss-custom-selectors": "^8.0.5",
"postcss-dir-pseudo-class": "^9.0.1",
- "postcss-double-position-gradients": "^6.0.0",
+ "postcss-double-position-gradients": "^6.0.4",
"postcss-focus-visible": "^10.0.1",
"postcss-focus-within": "^9.0.1",
"postcss-font-variant": "^5.0.0",
"postcss-gap-properties": "^6.0.0",
"postcss-image-set-function": "^7.0.0",
- "postcss-lab-function": "^7.0.7",
- "postcss-logical": "^8.0.0",
- "postcss-nesting": "^13.0.1",
+ "postcss-lab-function": "^7.0.12",
+ "postcss-logical": "^8.1.0",
+ "postcss-nesting": "^13.0.2",
"postcss-opacity-percentage": "^3.0.0",
"postcss-overflow-shorthand": "^6.0.0",
"postcss-page-break": "^3.0.4",
@@ -24047,9 +22322,9 @@
}
},
"node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -24140,9 +22415,9 @@
}
},
"node_modules/postcss-selector-not/node_modules/postcss-selector-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
- "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
+ "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -24229,9 +22504,9 @@
}
},
"node_modules/postcss/node_modules/nanoid": {
- "version": "3.3.8",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
- "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "version": "3.3.18",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
+ "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
"funding": [
{
"type": "github",
@@ -24246,68 +22521,62 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/postman-code-generators": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/postman-code-generators/-/postman-code-generators-2.1.1.tgz",
+ "integrity": "sha512-+egQK1Jf9a92QP23vRTKcDLOthIQmI7WI4czEsZq/wgguLMnVHJ26KlT8AVtpAdVw28hqUbHwicerYxRWCfjoA==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "async": "^3.2.2",
+ "detect-package-manager": "^3.0.2",
+ "lodash": "^4.17.21",
+ "postman-collection": "^5.0.0",
+ "shelljs": "^0.8.5"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/postman-collection": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.3.0.tgz",
- "integrity": "sha512-QpmNOw1JhAVQTFWRz443/qpKs4/3T1MFrKqDZ84RS1akxOzhXXr15kD8+/+jeA877qyy9rfMsrFgLe2W7aCPjw==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-5.3.1.tgz",
+ "integrity": "sha512-+ixY4KEGerw3I5dE6obXgXx31na8URU5ODNIA6Rjkbt3/BUpNRk03pxUAZFHr5dDXwCikJSa7pt5o0x1QXT77w==",
+ "license": "Apache-2.0",
"dependencies": {
"@faker-js/faker": "5.5.3",
"file-type": "3.9.0",
"http-reasons": "0.1.0",
"iconv-lite": "0.6.3",
"liquid-json": "0.3.1",
- "lodash": "4.17.21",
- "mime-format": "2.0.1",
- "mime-types": "2.1.35",
- "postman-url-encoder": "3.0.5",
- "semver": "7.5.4",
+ "lodash": "4.18.1",
+ "mime": "3.0.0",
+ "mime-format": "2.0.2",
+ "postman-url-encoder": "3.0.8",
+ "semver": "7.7.1",
"uuid": "8.3.2"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/postman-collection/node_modules/@faker-js/faker": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz",
- "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw=="
- },
- "node_modules/postman-collection/node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postman-collection/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
+ "node": ">=18"
}
},
- "node_modules/postman-collection/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
+ "node_modules/postman-collection/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
}
},
"node_modules/postman-url-encoder": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz",
- "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==",
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.8.tgz",
+ "integrity": "sha512-EOgUMBazo7JNP4TDrd64TsooCiWzzo4143Ws8E8WYGEpn2PKpq+S4XRTDhuRTYHm3VKOpUZs7ZYZq7zSDuesqA==",
+ "license": "Apache-2.0",
"dependencies": {
- "punycode": "^2.1.1"
+ "punycode": "^2.3.1"
},
"engines": {
"node": ">=10"
@@ -24317,6 +22586,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -24325,7 +22595,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": ">= 0.8.0"
}
@@ -24437,14 +22707,6 @@
}
}
},
- "node_modules/pretty-data": {
- "version": "0.40.0",
- "resolved": "https://registry.npmjs.org/pretty-data/-/pretty-data-0.40.0.tgz",
- "integrity": "sha512-YFLnEdDEDnkt/GEhet5CYZHCvALw6+Elyb/tp8kQG03ZSIuzeaDWpZYndCXwgqu4NAjh1PI534dhDS1mHarRnQ==",
- "engines": {
- "node": "*"
- }
- },
"node_modules/pretty-error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
@@ -24464,9 +22726,10 @@
}
},
"node_modules/prism-react-renderer": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz",
- "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz",
+ "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==",
+ "license": "MIT",
"dependencies": {
"@types/prismjs": "^1.26.0",
"clsx": "^2.0.0"
@@ -24476,9 +22739,10 @@
}
},
"node_modules/prismjs": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
- "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
+ "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -24487,7 +22751,6 @@
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
- "dev": true,
"engines": {
"node": ">= 0.6.0"
}
@@ -24524,6 +22787,7 @@
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz",
"integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==",
+ "dev": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -24560,7 +22824,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/pupa": {
@@ -24577,13 +22840,32 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/pvtsutils": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz",
+ "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.8.1"
+ }
+ },
+ "node_modules/pvutils": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.2.0.tgz",
+ "integrity": "sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "version": "6.15.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
+ "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
"license": "BSD-3-Clause",
"dependencies": {
- "side-channel": "^1.0.6"
+ "es-define-property": "^1.0.1",
+ "side-channel": "^1.1.1"
},
"engines": {
"node": ">=0.6"
@@ -24592,15 +22874,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/queue": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
- "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
- "license": "MIT",
- "dependencies": {
- "inherits": "~2.0.3"
- }
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -24649,15 +22922,15 @@
}
},
"node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
"license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
@@ -24672,6 +22945,18 @@
"node": ">= 0.8"
}
},
+ "node_modules/raw-body/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/raw-loader": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
@@ -24741,119 +23026,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/react-dev-utils": {
- "version": "12.0.1",
- "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
- "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.16.0",
- "address": "^1.1.2",
- "browserslist": "^4.18.1",
- "chalk": "^4.1.2",
- "cross-spawn": "^7.0.3",
- "detect-port-alt": "^1.1.6",
- "escape-string-regexp": "^4.0.0",
- "filesize": "^8.0.6",
- "find-up": "^5.0.0",
- "fork-ts-checker-webpack-plugin": "^6.5.0",
- "global-modules": "^2.0.0",
- "globby": "^11.0.4",
- "gzip-size": "^6.0.0",
- "immer": "^9.0.7",
- "is-root": "^2.1.0",
- "loader-utils": "^3.2.0",
- "open": "^8.4.0",
- "pkg-up": "^3.1.0",
- "prompts": "^2.4.2",
- "react-error-overlay": "^6.0.11",
- "recursive-readdir": "^2.2.2",
- "shell-quote": "^1.7.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/react-dev-utils/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/react-dev-utils/node_modules/loader-utils": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz",
- "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==",
- "license": "MIT",
- "engines": {
- "node": ">= 12.13.0"
- }
- },
- "node_modules/react-dev-utils/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/react-dev-utils/node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/react-dev-utils/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/react-devtools-inline": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/react-devtools-inline/-/react-devtools-inline-4.4.0.tgz",
- "integrity": "sha512-ES0GolSrKO8wsKbsEkVeiR/ZAaHQTY4zDh1UW8DImVmm8oaGLl3ijJDvSGe+qDRKPZdPRnDtWWnSvvrgxXdThQ==",
- "dependencies": {
- "es6-symbol": "^3"
- }
- },
"node_modules/react-dom": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
@@ -24866,27 +23038,6 @@
"react": "^18.2.0"
}
},
- "node_modules/react-error-boundary": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
- "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
- "dependencies": {
- "@babel/runtime": "^7.12.5"
- },
- "engines": {
- "node": ">=10",
- "npm": ">=6"
- },
- "peerDependencies": {
- "react": ">=16.13.1"
- }
- },
- "node_modules/react-error-overlay": {
- "version": "6.0.11",
- "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
- "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==",
- "license": "MIT"
- },
"node_modules/react-fast-compare": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
@@ -24919,19 +23070,20 @@
"react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/react-hot-toast": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz",
- "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==",
- "dependencies": {
- "goober": "^2.1.10"
- },
+ "node_modules/react-hook-form": {
+ "version": "7.85.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.85.0.tgz",
+ "integrity": "sha512-U2MTriFXnclmV4rOE20p2DcRFv5WEg3FIcBFOKcOLFHDVvGIMPvLTkTWefUsonmlaVy23khVDxDWym6uJVGOzw==",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-hook-form"
},
"peerDependencies": {
- "react": ">=16",
- "react-dom": ">=16"
+ "react": "^16.8.0 || ^17 || ^18 || ^19"
}
},
"node_modules/react-is": {
@@ -24940,24 +23092,31 @@
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/react-json-view-lite": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz",
- "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz",
+ "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==",
"license": "MIT",
"engines": {
- "node": ">=14"
+ "node": ">=18"
},
"peerDependencies": {
- "react": "^16.13.1 || ^17.0.0 || ^18.0.0"
+ "react": "^18.0.0 || ^19.0.0"
}
},
+ "node_modules/react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==",
+ "license": "MIT"
+ },
"node_modules/react-live": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/react-live/-/react-live-4.1.6.tgz",
- "integrity": "sha512-2oq3MADi3rupqZcdoHMrV9p+Eg/92BDds278ZuoOz8d68qw6ct0xZxX89MRxeChrnFHy1XPr8BVknDJNJNdvVw==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/react-live/-/react-live-4.1.8.tgz",
+ "integrity": "sha512-B2SgNqwPuS2ekqj4lcxi5TibEcjWkdVyYykBEUBshPAPDQ527x2zPEZg560n8egNtAjUpwXFQm7pcXV65aAYmg==",
+ "license": "MIT",
"dependencies": {
- "prism-react-renderer": "^2.0.6",
- "sucrase": "^3.31.0",
+ "prism-react-renderer": "^2.4.0",
+ "sucrase": "^3.35.0",
"use-editable": "^2.3.3"
},
"engines": {
@@ -24983,9 +23142,10 @@
}
},
"node_modules/react-loadable-ssr-addon-v5-slorber": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz",
- "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.3.tgz",
+ "integrity": "sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.10.3"
},
@@ -24997,10 +23157,17 @@
"webpack": ">=4.41.1 || 5.x"
}
},
+ "node_modules/react-magic-dropzone": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/react-magic-dropzone/-/react-magic-dropzone-1.0.1.tgz",
+ "integrity": "sha512-0BIROPARmXHpk4AS3eWBOsewxoM5ndk2psYP/JmbCq8tz3uR2LIV1XiroZ9PKrmDRMctpW+TvsBCtWasuS8vFA==",
+ "license": "MIT"
+ },
"node_modules/react-markdown": {
"version": "8.0.7",
"resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz",
"integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==",
+ "dev": true,
"dependencies": {
"@types/hast": "^2.0.0",
"@types/prop-types": "^15.0.0",
@@ -25030,12 +23197,14 @@
"node_modules/react-markdown/node_modules/react-is": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "dev": true
},
"node_modules/react-markdown/node_modules/unified": {
"version": "10.1.2",
"resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
"integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"bail": "^2.0.0",
@@ -25054,6 +23223,7 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
"integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
+ "dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -25063,6 +23233,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz",
"integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -25075,6 +23246,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz",
"integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0",
@@ -25089,6 +23261,7 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz",
"integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0"
@@ -25102,6 +23275,7 @@
"version": "5.3.6",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.6.tgz",
"integrity": "sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"is-buffer": "^2.0.0",
@@ -25117,6 +23291,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.3.tgz",
"integrity": "sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-stringify-position": "^3.0.0"
@@ -25126,45 +23301,54 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/react-overflow-list": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/react-overflow-list/-/react-overflow-list-0.5.0.tgz",
- "integrity": "sha512-+UegukgQ10E4ll3txz4DJyrnCgZ3eDVuv5dvR8ziyG5FfgCDZcUKeKhIgbU90oyqQa21aH4oLOoGKt0TiYJRmg==",
+ "node_modules/react-modal": {
+ "version": "3.16.3",
+ "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.3.tgz",
+ "integrity": "sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==",
+ "license": "MIT",
"dependencies": {
- "react-use": "^17.3.1"
- },
- "engines": {
- "node": ">=10"
+ "exenv": "^1.2.0",
+ "prop-types": "^15.7.2",
+ "react-lifecycles-compat": "^3.0.0",
+ "warning": "^4.0.3"
},
"peerDependencies": {
- "react": ">=16"
+ "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19",
+ "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19"
}
},
- "node_modules/react-query": {
- "version": "3.39.3",
- "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz",
- "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==",
+ "node_modules/react-redux": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.3.0.tgz",
+ "integrity": "sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==",
+ "license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.5.5",
- "broadcast-channel": "^3.4.1",
- "match-sorter": "^6.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/tannerlinsley"
+ "@types/use-sync-external-store": "^0.0.6",
+ "use-sync-external-store": "^1.4.0"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "@types/react": "^18.2.25 || ^19",
+ "react": "^18.0 || ^19",
+ "redux": "^5.0.0"
},
"peerDependenciesMeta": {
- "react-dom": {
+ "@types/react": {
"optional": true
},
- "react-native": {
+ "redux": {
"optional": true
}
}
},
+ "node_modules/react-redux/node_modules/use-sync-external-store": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
+ "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/react-remove-scroll": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz",
@@ -25260,18 +23444,6 @@
"react": ">=15"
}
},
- "node_modules/react-router-hash-link": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/react-router-hash-link/-/react-router-hash-link-2.4.3.tgz",
- "integrity": "sha512-NU7GWc265m92xh/aYD79Vr1W+zAIXDWp3L2YZOYP4rCqPnJ6LI6vh3+rKgkidtYijozHclaEQTAHaAaMWPVI4A==",
- "dependencies": {
- "prop-types": "^15.7.2"
- },
- "peerDependencies": {
- "react": ">=15",
- "react-router-dom": ">=4"
- }
- },
"node_modules/react-style-singleton": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz",
@@ -25294,40 +23466,6 @@
}
}
},
- "node_modules/react-universal-interface": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
- "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==",
- "peerDependencies": {
- "react": "*",
- "tslib": "*"
- }
- },
- "node_modules/react-use": {
- "version": "17.5.0",
- "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.0.tgz",
- "integrity": "sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==",
- "dependencies": {
- "@types/js-cookie": "^2.2.6",
- "@xobotyi/scrollbar-width": "^1.9.5",
- "copy-to-clipboard": "^3.3.1",
- "fast-deep-equal": "^3.1.3",
- "fast-shallow-equal": "^1.0.0",
- "js-cookie": "^2.2.1",
- "nano-css": "^5.6.1",
- "react-universal-interface": "^0.6.2",
- "resize-observer-polyfill": "^1.5.1",
- "screenfull": "^5.1.0",
- "set-harmonic-interval": "^1.0.1",
- "throttle-debounce": "^3.0.1",
- "ts-easing": "^0.2.0",
- "tslib": "^2.1.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
"node_modules/reactflow": {
"version": "11.10.4",
"resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.10.4.tgz",
@@ -25379,12 +23517,6 @@
"node": ">=8.10.0"
}
},
- "node_modules/reading-time": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz",
- "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==",
- "license": "MIT"
- },
"node_modules/rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
@@ -25412,9 +23544,9 @@
}
},
"node_modules/recma-jsx": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz",
- "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz",
+ "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==",
"license": "MIT",
"dependencies": {
"acorn-jsx": "^5.0.0",
@@ -25426,6 +23558,9 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/recma-parse": {
@@ -25460,16 +23595,34 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/recursive-readdir": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
- "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
+ "node_modules/redux": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
+ "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
+ "license": "MIT"
+ },
+ "node_modules/redux-thunk": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz",
+ "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==",
"license": "MIT",
- "dependencies": {
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=6.0.0"
+ "peerDependencies": {
+ "redux": "^5.0.0"
+ }
+ },
+ "node_modules/reflect-metadata": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
+ "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/reftools": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz",
+ "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==",
+ "license": "BSD-3-Clause",
+ "funding": {
+ "url": "https://github.com/Mermade/oas-kit?sponsor=1"
}
},
"node_modules/regenerate": {
@@ -25478,9 +23631,9 @@
"integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
},
"node_modules/regenerate-unicode-properties": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
- "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz",
+ "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==",
"license": "MIT",
"dependencies": {
"regenerate": "^1.4.2"
@@ -25494,360 +23647,74 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
},
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "node_modules/regexpu-core": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
- "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==",
- "license": "MIT",
- "dependencies": {
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.2.0",
- "regjsgen": "^0.8.0",
- "regjsparser": "^0.12.0",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/registry-auth-token": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz",
- "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==",
- "dependencies": {
- "@pnpm/npm-conf": "^2.1.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/registry-url": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz",
- "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==",
- "dependencies": {
- "rc": "1.2.8"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
- "license": "MIT"
- },
- "node_modules/regjsparser": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz",
- "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "jsesc": "~3.0.2"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/rehype-raw": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
- "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-raw": "^9.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-raw/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/rehype-raw/node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/rehype-raw/node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "license": "MIT"
- },
- "node_modules/rehype-raw/node_modules/hast-util-from-parse5": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz",
- "integrity": "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "devlop": "^1.0.0",
- "hastscript": "^9.0.0",
- "property-information": "^6.0.0",
- "vfile": "^6.0.0",
- "vfile-location": "^5.0.0",
- "web-namespaces": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-raw/node_modules/hast-util-parse-selector": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
- "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-raw/node_modules/hast-util-raw": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
- "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "hast-util-from-parse5": "^8.0.0",
- "hast-util-to-parse5": "^8.0.0",
- "html-void-elements": "^3.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "parse5": "^7.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0",
- "web-namespaces": "^2.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-raw/node_modules/hast-util-to-parse5": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
- "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "comma-separated-tokens": "^2.0.0",
- "devlop": "^1.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "web-namespaces": "^2.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-raw/node_modules/hastscript": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz",
- "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "comma-separated-tokens": "^2.0.0",
- "hast-util-parse-selector": "^4.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-raw/node_modules/html-void-elements": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
- "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/rehype-raw/node_modules/mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "node_modules/regexpu-core": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
+ "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==",
"license": "MIT",
"dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.2.2",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.13.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.2.1"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/rehype-raw/node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
+ "node_modules/registry-auth-token": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz",
+ "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==",
"dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
+ "@pnpm/npm-conf": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/rehype-raw/node_modules/micromark-util-encode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/rehype-raw/node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
+ "node_modules/registry-url": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz",
+ "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==",
"dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
+ "rc": "1.2.8"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/rehype-raw/node_modules/micromark-util-symbol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/rehype-raw/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
+ "node_modules/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
"license": "MIT"
},
- "node_modules/rehype-raw/node_modules/unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "license": "MIT",
+ "node_modules/regjsparser": {
+ "version": "0.13.2",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz",
+ "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "@types/unist": "^3.0.0"
+ "jsesc": "~3.1.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "bin": {
+ "regjsparser": "bin/parser"
}
},
- "node_modules/rehype-raw/node_modules/vfile-location": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
- "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
+ "node_modules/rehype-raw": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
+ "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
"license": "MIT",
"dependencies": {
- "@types/unist": "^3.0.0",
+ "@types/hast": "^3.0.0",
+ "hast-util-raw": "^9.0.0",
"vfile": "^6.0.0"
},
"funding": {
@@ -25855,6 +23722,15 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/rehype-raw/node_modules/@types/hast": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
"node_modules/rehype-recma": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz",
@@ -25871,9 +23747,9 @@
}
},
"node_modules/rehype-recma/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
+ "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
@@ -25963,9 +23839,9 @@
}
},
"node_modules/remark-gfm": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
- "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
+ "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -25990,9 +23866,9 @@
}
},
"node_modules/remark-gfm/node_modules/micromark-util-types": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
- "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -26021,25 +23897,10 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-gfm/node_modules/remark-stringify": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
- "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/remark-mdx": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz",
- "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz",
+ "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==",
"license": "MIT",
"dependencies": {
"mdast-util-mdx": "^3.0.0",
@@ -26054,6 +23915,7 @@
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz",
"integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==",
+ "dev": true,
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-from-markdown": "^1.0.0",
@@ -26068,6 +23930,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz",
"integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==",
+ "dev": true,
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
@@ -26091,6 +23954,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz",
"integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==",
+ "dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -26100,6 +23964,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz",
"integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==",
+ "dev": true,
"funding": [
{
"type": "GitHub Sponsors",
@@ -26134,6 +23999,7 @@
"version": "10.1.2",
"resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
"integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"bail": "^2.0.0",
@@ -26152,6 +24018,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz",
"integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -26164,6 +24031,7 @@
"version": "5.3.6",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.6.tgz",
"integrity": "sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"is-buffer": "^2.0.0",
@@ -26179,6 +24047,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.3.tgz",
"integrity": "sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-stringify-position": "^3.0.0"
@@ -26192,6 +24061,7 @@
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz",
"integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==",
+ "dev": true,
"dependencies": {
"@types/hast": "^2.0.0",
"@types/mdast": "^3.0.0",
@@ -26207,6 +24077,7 @@
"version": "12.2.5",
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.5.tgz",
"integrity": "sha512-EFNhT35ZR/VZ85/EedDdCNTq0oFM+NM/+qBomVGQ0+Lcg0nhI8xIwmdCzNMlVlCJNXRprpobtKP/IUh8cfz6zQ==",
+ "dev": true,
"dependencies": {
"@types/hast": "^2.0.0",
"@types/mdast": "^3.0.0",
@@ -26227,6 +24098,7 @@
"version": "10.1.2",
"resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
"integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"bail": "^2.0.0",
@@ -26245,6 +24117,7 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
"integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
+ "dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -26254,6 +24127,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz",
"integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -26266,6 +24140,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz",
"integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0",
@@ -26280,6 +24155,7 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz",
"integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0"
@@ -26293,6 +24169,7 @@
"version": "5.3.6",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.6.tgz",
"integrity": "sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"is-buffer": "^2.0.0",
@@ -26308,6 +24185,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.3.tgz",
"integrity": "sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-stringify-position": "^3.0.0"
@@ -26318,150 +24196,29 @@
}
},
"node_modules/remark-stringify": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz",
- "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==",
- "dependencies": {
- "mdast-util-to-markdown": "^0.6.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-stringify/node_modules/character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "dependencies": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/longest-streak": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
- "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/mdast-util-to-markdown": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
- "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
+ "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "longest-streak": "^2.0.0",
- "mdast-util-to-string": "^2.0.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.0.0",
- "zwitch": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-stringify/node_modules/mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "unified": "^11.0.0"
+ },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-stringify/node_modules/parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+ "node_modules/remark-stringify/node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
"dependencies": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/remark-stringify/node_modules/zwitch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
- "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "@types/unist": "*"
}
},
- "node_modules/remove-accents": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz",
- "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A=="
- },
"node_modules/renderkid": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
@@ -26555,12 +24312,13 @@
"entities": "^2.0.0"
}
},
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
"engines": {
- "node": ">=0.10"
+ "node": ">=0.10.0"
}
},
"node_modules/require-from-string": {
@@ -26586,18 +24344,20 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"license": "MIT"
},
- "node_modules/resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ "node_modules/reselect": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.2.0.tgz",
+ "integrity": "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==",
+ "license": "MIT"
},
"node_modules/resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "version": "1.22.12",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
"license": "MIT",
"dependencies": {
- "is-core-module": "^2.16.0",
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -26665,6 +24425,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
"dependencies": {
"glob": "^7.1.3"
},
@@ -26676,9 +24437,22 @@
}
},
"node_modules/robust-predicates": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
- "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",
+ "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==",
+ "license": "Unlicense"
+ },
+ "node_modules/roughjs": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz",
+ "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "hachure-fill": "^0.5.2",
+ "path-data-parser": "^0.1.0",
+ "points-on-curve": "^0.2.0",
+ "points-on-path": "^0.2.1"
+ }
},
"node_modules/rtl-css-js": {
"version": "1.16.1",
@@ -26706,6 +24480,18 @@
"node": ">=12.0.0"
}
},
+ "node_modules/run-applescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -26731,12 +24517,14 @@
"node_modules/rw": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
- "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
+ "license": "BSD-3-Clause"
},
"node_modules/sade": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
"integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "dev": true,
"dependencies": {
"mri": "^1.1.0"
},
@@ -26764,21 +24552,108 @@
],
"license": "MIT"
},
- "node_modules/safe-stable-stringify": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz",
- "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw=="
- },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/sass": {
+ "version": "1.103.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.103.0.tgz",
+ "integrity": "sha512-+QpdXUDw19lVqRDlYIyje1Lq/0gHsnNHIl4x1CqeUg13zRhaQN11UvTvouwHWLXc9Q3rQVT6oBhFGRYJ5Z8gHw==",
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^5.0.0",
+ "immutable": "^5.1.5",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/sass-loader": {
+ "version": "16.0.8",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.8.tgz",
+ "integrity": "sha512-hcov4ZwZJIGbEuyNr9EmiTmZueyrxSToE6GOzoZnq5JM7ecRO7ttyvilPn+VmRsqiP16+VYZzVnGZj/hzZgKBA==",
+ "license": "MIT",
+ "dependencies": {
+ "neo-async": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0",
+ "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
+ "sass": "^1.3.0",
+ "sass-embedded": "*",
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "node-sass": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz",
+ "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
},
"node_modules/sax": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
- "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
- "license": "ISC"
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz",
+ "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
},
"node_modules/scheduler": {
"version": "0.23.0",
@@ -26788,10 +24663,16 @@
"loose-envify": "^1.1.0"
}
},
+ "node_modules/schema-dts": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz",
+ "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==",
+ "license": "Apache-2.0"
+ },
"node_modules/schema-utils": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz",
- "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.9",
@@ -26808,9 +24689,9 @@
}
},
"node_modules/schema-utils/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -26823,6 +24704,23 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/schema-utils/node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
"node_modules/schema-utils/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -26841,25 +24739,6 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT"
},
- "node_modules/screenfull": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz",
- "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==",
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/sdp-transform": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.14.2.tgz",
- "integrity": "sha512-icY6jVao7MfKCieyo1AyxFYm1baiM+fA00qW/KrNNVlkxHAd34riEKuEkUe4bBb3gJwLJZM+xT60Yj1QL8rHiA==",
- "bin": {
- "sdp-verify": "checker.js"
- }
- },
"node_modules/search-insights": {
"version": "2.17.3",
"resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz",
@@ -26886,25 +24765,23 @@
"license": "MIT"
},
"node_modules/selfsigned": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
- "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz",
+ "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==",
"license": "MIT",
"dependencies": {
- "@types/node-forge": "^1.3.0",
- "node-forge": "^1"
+ "@peculiar/x509": "^1.14.2",
+ "pkijs": "^3.3.3"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -26927,24 +24804,24 @@
}
},
"node_modules/send": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
- "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
+ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
"license": "MIT",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.1",
"mime": "1.6.0",
"ms": "2.1.3",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"range-parser": "~1.2.1",
- "statuses": "2.0.1"
+ "statuses": "~2.0.2"
},
"engines": {
"node": ">= 0.8.0"
@@ -26965,21 +24842,18 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
- "node_modules/send/node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=4"
}
},
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "license": "MIT"
- },
"node_modules/send/node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -26998,15 +24872,15 @@
}
},
"node_modules/serve-handler": {
- "version": "6.1.6",
- "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz",
- "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==",
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz",
+ "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==",
"license": "MIT",
"dependencies": {
"bytes": "3.0.0",
"content-disposition": "0.5.2",
"mime-types": "2.1.18",
- "minimatch": "3.1.2",
+ "minimatch": "3.1.5",
"path-is-inside": "1.0.2",
"path-to-regexp": "3.3.0",
"range-parser": "1.2.0"
@@ -27019,21 +24893,25 @@
"license": "MIT"
},
"node_modules/serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz",
+ "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==",
"license": "MIT",
"dependencies": {
- "accepts": "~1.3.4",
+ "accepts": "~1.3.8",
"batch": "0.6.1",
"debug": "2.6.9",
"escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
+ "http-errors": "~1.8.0",
+ "mime-types": "~2.1.35",
+ "parseurl": "~1.3.3"
},
"engines": {
"node": ">= 0.8.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/serve-index/node_modules/debug": {
@@ -27055,25 +24933,41 @@
}
},
"node_modules/serve-index/node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
"license": "MIT",
"dependencies": {
"depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/serve-index/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "license": "ISC"
+ "node_modules/serve-index/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
},
"node_modules/serve-index/node_modules/ms": {
"version": "2.0.0",
@@ -27081,12 +24975,6 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
- "node_modules/serve-index/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "license": "ISC"
- },
"node_modules/serve-index/node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -27097,15 +24985,15 @@
}
},
"node_modules/serve-static": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
- "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
+ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
"license": "MIT",
"dependencies": {
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.19.0"
+ "send": "~0.19.1"
},
"engines": {
"node": ">= 0.8.0"
@@ -27115,6 +25003,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -27127,14 +25016,6 @@
"node": ">= 0.4"
}
},
- "node_modules/set-harmonic-interval": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz",
- "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==",
- "engines": {
- "node": ">=6.9"
- }
- },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -27177,9 +25058,13 @@
}
},
"node_modules/shell-quote": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
- "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz",
+ "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -27188,6 +25073,7 @@
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "license": "BSD-3-Clause",
"dependencies": {
"glob": "^7.0.0",
"interpret": "^1.0.0",
@@ -27218,15 +25104,69 @@
"integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
"dev": true
},
- "node_modules/side-channel": {
+ "node_modules/should": {
+ "version": "13.2.3",
+ "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz",
+ "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "should-equal": "^2.0.0",
+ "should-format": "^3.0.3",
+ "should-type": "^1.4.0",
+ "should-type-adaptors": "^1.0.1",
+ "should-util": "^1.0.0"
+ }
+ },
+ "node_modules/should-equal": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz",
+ "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==",
+ "license": "MIT",
+ "dependencies": {
+ "should-type": "^1.4.0"
+ }
+ },
+ "node_modules/should-format": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz",
+ "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==",
+ "license": "MIT",
+ "dependencies": {
+ "should-type": "^1.3.0",
+ "should-type-adaptors": "^1.0.1"
+ }
+ },
+ "node_modules/should-type": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz",
+ "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==",
+ "license": "MIT"
+ },
+ "node_modules/should-type-adaptors": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz",
+ "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==",
+ "license": "MIT",
+ "dependencies": {
+ "should-type": "^1.3.0",
+ "should-util": "^1.0.0"
+ }
+ },
+ "node_modules/should-util": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz",
+ "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==",
+ "license": "MIT"
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
+ "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
- "object-inspect": "^1.13.3",
- "side-channel-list": "^1.0.0",
+ "object-inspect": "^1.13.4",
+ "side-channel-list": "^1.0.1",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
@@ -27238,13 +25178,13 @@
}
},
"node_modules/side-channel-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
- "object-inspect": "^1.13.3"
+ "object-inspect": "^1.13.4"
},
"engines": {
"node": ">= 0.4"
@@ -27315,9 +25255,9 @@
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
},
"node_modules/sitemap": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz",
- "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.3.tgz",
+ "integrity": "sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==",
"license": "MIT",
"dependencies": {
"@types/node": "^17.0.5",
@@ -27359,40 +25299,23 @@
"node": ">=8"
}
},
- "node_modules/snake-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
- "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "node_modules/slugify": {
+ "version": "1.6.9",
+ "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz",
+ "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==",
"license": "MIT",
- "dependencies": {
- "dot-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
- "node_modules/socket.io-client": {
- "version": "4.7.5",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
- "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
- "dependencies": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.2",
- "engine.io-client": "~6.5.2",
- "socket.io-parser": "~4.2.4"
- },
"engines": {
- "node": ">=10.0.0"
+ "node": ">=8.0.0"
}
},
- "node_modules/socket.io-parser": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
- "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "license": "MIT",
"dependencies": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1"
- },
- "engines": {
- "node": ">=10.0.0"
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
}
},
"node_modules/sockjs": {
@@ -27406,6 +25329,16 @@
"websocket-driver": "^0.7.4"
}
},
+ "node_modules/sockjs/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/sort-css-media-queries": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz",
@@ -27488,7 +25421,8 @@
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
},
"node_modules/srcset": {
"version": "4.0.0",
@@ -27502,78 +25436,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/stack-generator": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
- "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
- "dependencies": {
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/stackframe": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
- "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
- },
- "node_modules/stacktrace-gps": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
- "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
- "dependencies": {
- "source-map": "0.5.6",
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/stacktrace-gps/node_modules/source-map": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
- "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stacktrace-js": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
- "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
- "dependencies": {
- "error-stack-parser": "^2.0.6",
- "stack-generator": "^2.0.5",
- "stacktrace-gps": "^3.0.4"
- }
- },
- "node_modules/static-browser-server": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/static-browser-server/-/static-browser-server-1.0.3.tgz",
- "integrity": "sha512-ZUyfgGDdFRbZGGJQ1YhiM930Yczz5VlbJObrQLlk24+qNHVQx4OlLcYswEUo3bIyNAbQUIUR9Yr5/Hqjzqb4zA==",
- "dependencies": {
- "@open-draft/deferred-promise": "^2.1.0",
- "dotenv": "^16.0.3",
- "mime-db": "^1.52.0",
- "outvariant": "^1.3.0"
- }
- },
- "node_modules/static-browser-server/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/std-env": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
- "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==",
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
+ "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
"license": "MIT"
},
"node_modules/stream-browserify": {
@@ -27586,10 +25461,11 @@
"readable-stream": "^3.5.0"
}
},
- "node_modules/strict-event-emitter": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz",
- "integrity": "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg=="
+ "node_modules/strictdom": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strictdom/-/strictdom-1.0.1.tgz",
+ "integrity": "sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==",
+ "license": "MIT"
},
"node_modules/string_decoder": {
"version": "1.3.0",
@@ -27676,6 +25552,7 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
"integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "license": "BSD-2-Clause",
"dependencies": {
"get-own-enumerable-property-symbols": "^3.0.0",
"is-obj": "^1.0.1",
@@ -27736,15 +25613,35 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/style-mod": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz",
- "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw=="
+ "node_modules/style-to-js": {
+ "version": "1.1.21",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
+ "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "style-to-object": "1.0.14"
+ }
+ },
+ "node_modules/style-to-js/node_modules/inline-style-parser": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
+ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
+ "license": "MIT"
+ },
+ "node_modules/style-to-js/node_modules/style-to-object": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
+ "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.7"
+ }
},
"node_modules/style-to-object": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
"integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
+ "dev": true,
"dependencies": {
"inline-style-parser": "0.1.1"
}
@@ -27820,9 +25717,10 @@
}
},
"node_modules/stylis": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
- "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz",
+ "integrity": "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==",
+ "license": "MIT"
},
"node_modules/sucrase": {
"version": "3.35.0",
@@ -27932,24 +25830,27 @@
}
},
"node_modules/svg-parser": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
- "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
- "license": "MIT"
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.5.tgz",
+ "integrity": "sha512-FuT74puvVMJQ8sgFxgOKPex5MbxPeltqCXJV3wR9Xq+vPHaF+tTdE1lhJcwspUxjtjvXy1NwqcSLZx9UNwHawg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
},
"node_modules/svgo": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz",
- "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.4.tgz",
+ "integrity": "sha512-GsNRis4e8jxn2Y9ENz/8lbJ93CstG8svtMnuRaHbiF2LTJ5tK0/q3t/URPq9Zc7zVWBJnNnJMIp6bevK7bSmNg==",
"license": "MIT",
"dependencies": {
- "@trysound/sax": "0.2.0",
"commander": "^7.2.0",
"css-select": "^5.1.0",
"css-tree": "^2.3.1",
"css-what": "^6.1.0",
"csso": "^5.0.5",
- "picocolors": "^1.0.0"
+ "picocolors": "^1.0.0",
+ "sax": "^1.5.0"
},
"bin": {
"svgo": "bin/svgo"
@@ -27971,25 +25872,33 @@
"node": ">= 10"
}
},
- "node_modules/svgo/node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
- "license": "MIT",
+ "node_modules/swagger2openapi": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz",
+ "integrity": "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
+ "call-me-maybe": "^1.0.1",
+ "node-fetch": "^2.6.1",
+ "node-fetch-h2": "^2.3.0",
+ "node-readfiles": "^0.2.0",
+ "oas-kit-common": "^1.0.8",
+ "oas-resolver": "^2.5.6",
+ "oas-schema-walker": "^1.1.5",
+ "oas-validator": "^5.0.8",
+ "reftools": "^1.1.9",
+ "yaml": "^1.10.0",
+ "yargs": "^17.0.1"
},
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ "bin": {
+ "boast": "boast.js",
+ "oas-validate": "oas-validate.js",
+ "swagger2openapi": "swagger2openapi.js"
+ },
+ "funding": {
+ "url": "https://github.com/Mermade/oas-kit?sponsor=1"
}
},
- "node_modules/svgo/node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "license": "CC0-1.0"
- },
"node_modules/swc-loader": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz",
@@ -28003,22 +25912,6 @@
"webpack": ">=2"
}
},
- "node_modules/swr": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.0.tgz",
- "integrity": "sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==",
- "dependencies": {
- "use-sync-external-store": "^1.2.0"
- },
- "peerDependencies": {
- "react": "^16.11.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/tabbable": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
- "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
- },
"node_modules/tailwindcss": {
"version": "3.4.17",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
@@ -28152,7 +26045,8 @@
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
},
"node_modules/thenify": {
"version": "3.3.1",
@@ -28173,12 +26067,20 @@
"node": ">=0.8"
}
},
- "node_modules/throttle-debounce": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
+ "node_modules/thingies": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.1.tgz",
+ "integrity": "sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw==",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=10.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "^2"
}
},
"node_modules/thunky": {
@@ -28197,15 +26099,22 @@
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
},
- "node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dependencies": {
- "os-tmpdir": "~1.0.2"
- },
+ "node_modules/tinyexec": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz",
+ "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==",
+ "license": "MIT",
"engines": {
- "node": ">=0.6.0"
+ "node": ">=18"
+ }
+ },
+ "node_modules/tinypool": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
+ "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
}
},
"node_modules/to-regex-range": {
@@ -28220,11 +26129,6 @@
"node": ">=8.0"
}
},
- "node_modules/toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
- },
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -28246,7 +26150,24 @@
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/tree-dump": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz",
+ "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
},
"node_modules/trim-lines": {
"version": "3.0.1",
@@ -28266,33 +26187,31 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/ts-algebra": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-1.2.2.tgz",
+ "integrity": "sha512-kloPhf1hq3JbCPOTYoOWDKxebWjNb2o/LKnNfkWhxVVisFFmMJPPdJeGoGmM+iRLyoXAR61e08Pb+vUXINg8aA==",
+ "license": "MIT"
+ },
"node_modules/ts-dedent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz",
- "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.3.0.tgz",
+ "integrity": "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==",
+ "license": "MIT",
"engines": {
"node": ">=6.10"
}
},
- "node_modules/ts-easing": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
- "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ=="
- },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
},
- "node_modules/ts-keycode-enum": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/ts-keycode-enum/-/ts-keycode-enum-1.0.6.tgz",
- "integrity": "sha512-DF8+Cf/FJJnPRxwz8agCoDelQXKZWQOS/gnnwx01nZ106tPJdB3BgJ9QTtLwXgR82D8O+nTjuZzWgf0Rg4vuRA=="
- },
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
},
"node_modules/tsutils": {
"version": "3.21.0",
@@ -28315,16 +26234,29 @@
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
},
- "node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
+ "node_modules/tsyringe": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz",
+ "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/tsyringe/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "license": "0BSD"
},
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -28347,6 +26279,7 @@
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -28359,6 +26292,7 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -28367,6 +26301,7 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -28443,6 +26378,7 @@
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz",
"integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==",
+ "devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -28464,6 +26400,15 @@
"node": ">=0.8.0"
}
},
+ "node_modules/undici": {
+ "version": "6.28.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.0.tgz",
+ "integrity": "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.17"
+ }
+ },
"node_modules/undici-types": {
"version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
@@ -28500,9 +26445,10 @@
}
},
"node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
+ "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -28556,6 +26502,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.1.tgz",
"integrity": "sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -28568,6 +26515,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz",
"integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==",
+ "dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -28594,6 +26542,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz",
"integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==",
+ "dev": true,
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -28639,21 +26588,6 @@
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
"integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
},
- "node_modules/unist-util-select": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-4.0.3.tgz",
- "integrity": "sha512-1074+K9VyR3NyUz3lgNtHKm7ln+jSZXtLJM4E22uVuoFn88a/Go2pX8dusrt/W+KWH1ncn8jcd8uCQuvXb/fXA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "css-selector-parser": "^1.0.0",
- "nth-check": "^2.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/unist-util-stringify-position": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
@@ -28716,15 +26650,6 @@
"node": ">= 10.0.0"
}
},
- "node_modules/unload": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz",
- "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==",
- "dependencies": {
- "@babel/runtime": "^7.6.2",
- "detect-node": "^2.0.4"
- }
- },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -28735,9 +26660,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
- "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz",
+ "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==",
"funding": [
{
"type": "opencollective",
@@ -28755,7 +26680,7 @@
"license": "MIT",
"dependencies": {
"escalade": "^3.2.0",
- "picocolors": "^1.1.0"
+ "picocolors": "^1.1.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -28850,16 +26775,10 @@
"node": ">=6"
}
},
- "node_modules/urijs": {
- "version": "1.19.11",
- "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz",
- "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ=="
- },
"node_modules/url": {
"version": "0.11.4",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
"integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"punycode": "^1.4.1",
@@ -28964,18 +26883,6 @@
"react": ">= 16.8.0"
}
},
- "node_modules/use-resize-observer": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz",
- "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==",
- "dependencies": {
- "@juggle/resize-observer": "^3.3.1"
- },
- "peerDependencies": {
- "react": "16.8.0 - 18",
- "react-dom": "16.8.0 - 18"
- }
- },
"node_modules/use-sidecar": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz",
@@ -29006,18 +26913,6 @@
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -29029,9 +26924,10 @@
"integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA=="
},
"node_modules/utility-types": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz",
- "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==",
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz",
+ "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -29046,17 +26942,23 @@
}
},
"node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.2.tgz",
+ "integrity": "sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
"bin": {
- "uuid": "dist/bin/uuid"
+ "uuid": "dist-node/bin/uuid"
}
},
"node_modules/uvu": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
"integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
+ "dev": true,
"dependencies": {
"dequal": "^2.0.0",
"diff": "^5.0.0",
@@ -29074,6 +26976,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
"integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+ "dev": true,
"engines": {
"node": ">=0.3.1"
}
@@ -29082,6 +26985,7 @@
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "dev": true,
"engines": {
"node": ">=6"
}
@@ -29089,7 +26993,8 @@
"node_modules/validate.io-array": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz",
- "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg=="
+ "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==",
+ "license": "MIT"
},
"node_modules/validate.io-function": {
"version": "1.0.2",
@@ -29128,77 +27033,44 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/vfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
- "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-location": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz",
- "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-location/node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/vfile-location/node_modules/vfile": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
+ "node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
"dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/vfile-location/node_modules/vfile-message": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "node_modules/vfile-location": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
+ "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/vfile-location/node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
"node_modules/vfile-message": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
@@ -29234,10 +27106,14 @@
"integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==",
"dev": true
},
- "node_modules/w3c-keyname": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
- "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+ "node_modules/warning": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+ "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
},
"node_modules/watchpack": {
"version": "2.4.2",
@@ -29265,28 +27141,17 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
"integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/web-streams-polyfill": {
- "version": "4.0.0-beta.3",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
- "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/web-worker": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz",
- "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA=="
- },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
},
"node_modules/webpack": {
"version": "5.97.1",
@@ -29370,107 +27235,125 @@
}
},
"node_modules/webpack-dev-middleware": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz",
- "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==",
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz",
+ "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==",
"license": "MIT",
"dependencies": {
"colorette": "^2.0.10",
- "memfs": "^3.4.3",
- "mime-types": "^2.1.31",
+ "memfs": "^4.43.1",
+ "mime-types": "^3.0.1",
+ "on-finished": "^2.4.1",
"range-parser": "^1.2.1",
"schema-utils": "^4.0.0"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 18.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
- "webpack": "^4.0.0 || ^5.0.0"
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack": {
+ "optional": true
+ }
}
},
+ "node_modules/webpack-dev-middleware/node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "license": "MIT"
+ },
"node_modules/webpack-dev-middleware/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/webpack-dev-middleware/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
"license": "MIT",
"dependencies": {
- "mime-db": "1.52.0"
+ "mime-db": "^1.54.0"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/webpack-dev-middleware/node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz",
+ "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/webpack-dev-server": {
- "version": "4.15.2",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz",
- "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==",
- "license": "MIT",
- "dependencies": {
- "@types/bonjour": "^3.5.9",
- "@types/connect-history-api-fallback": "^1.3.5",
- "@types/express": "^4.17.13",
- "@types/serve-index": "^1.9.1",
- "@types/serve-static": "^1.13.10",
- "@types/sockjs": "^0.3.33",
- "@types/ws": "^8.5.5",
+ "version": "5.2.6",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.6.tgz",
+ "integrity": "sha512-HNLRmamRvVavZQ+avceZifmv8hmdUjg43t6MI4SqJDwFdW7RPQwH5vzGhDRZSX59SgfbeHhLnq3g+uooWo7pVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/bonjour": "^3.5.13",
+ "@types/connect-history-api-fallback": "^1.5.4",
+ "@types/express": "^4.17.25",
+ "@types/express-serve-static-core": "^4.17.21",
+ "@types/serve-index": "^1.9.4",
+ "@types/serve-static": "^1.15.5",
+ "@types/sockjs": "^0.3.36",
+ "@types/ws": "^8.5.10",
"ansi-html-community": "^0.0.8",
- "bonjour-service": "^1.0.11",
- "chokidar": "^3.5.3",
+ "bonjour-service": "^1.2.1",
+ "chokidar": "^3.6.0",
"colorette": "^2.0.10",
- "compression": "^1.7.4",
+ "compression": "^1.8.1",
"connect-history-api-fallback": "^2.0.0",
- "default-gateway": "^6.0.3",
- "express": "^4.17.3",
+ "express": "^4.22.1",
"graceful-fs": "^4.2.6",
- "html-entities": "^2.3.2",
- "http-proxy-middleware": "^2.0.3",
- "ipaddr.js": "^2.0.1",
- "launch-editor": "^2.6.0",
- "open": "^8.0.9",
- "p-retry": "^4.5.0",
- "rimraf": "^3.0.2",
- "schema-utils": "^4.0.0",
- "selfsigned": "^2.1.1",
+ "http-proxy-middleware": "^2.0.9",
+ "ipaddr.js": "^2.1.0",
+ "launch-editor": "^2.14.1",
+ "open": "^10.0.3",
+ "p-retry": "^6.2.0",
+ "schema-utils": "^4.2.0",
+ "selfsigned": "^5.5.0",
"serve-index": "^1.9.1",
"sockjs": "^0.3.24",
"spdy": "^4.0.2",
- "webpack-dev-middleware": "^5.3.4",
- "ws": "^8.13.0"
+ "webpack-dev-middleware": "^7.4.2",
+ "ws": "^8.18.0"
},
"bin": {
"webpack-dev-server": "bin/webpack-dev-server.js"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 18.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
- "webpack": "^4.37.0 || ^5.0.0"
+ "webpack": "^5.0.0"
},
"peerDependenciesMeta": {
"webpack": {
@@ -29481,10 +27364,46 @@
}
}
},
+ "node_modules/webpack-dev-server/node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "license": "MIT"
+ },
+ "node_modules/webpack-dev-server/node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/open": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
+ "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+ "license": "MIT",
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "wsl-utils": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "version": "8.21.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz",
+ "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
@@ -29567,81 +27486,36 @@
}
},
"node_modules/webpackbar": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz",
- "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-7.0.0.tgz",
+ "integrity": "sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q==",
"license": "MIT",
"dependencies": {
- "ansi-escapes": "^4.3.2",
- "chalk": "^4.1.2",
+ "ansis": "^3.2.0",
"consola": "^3.2.3",
- "figures": "^3.2.0",
- "markdown-table": "^2.0.0",
"pretty-time": "^1.1.0",
- "std-env": "^3.7.0",
- "wrap-ansi": "^7.0.0"
+ "std-env": "^3.7.0"
},
"engines": {
"node": ">=14.21.3"
},
"peerDependencies": {
+ "@rspack/core": "*",
"webpack": "3 || 4 || 5"
- }
- },
- "node_modules/webpackbar/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "license": "MIT"
- },
- "node_modules/webpackbar/node_modules/markdown-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
- "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
- "license": "MIT",
- "dependencies": {
- "repeat-string": "^1.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/webpackbar/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/webpackbar/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
},
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
}
},
"node_modules/websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.5.tgz",
+ "integrity": "sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==",
"license": "Apache-2.0",
"dependencies": {
"http-parser-js": ">=0.5.1",
@@ -29661,15 +27535,11 @@
"node": ">=0.8.0"
}
},
- "node_modules/whatwg-fetch": {
- "version": "3.6.20",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
- "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="
- },
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
@@ -29689,24 +27559,6 @@
"node": ">= 8"
}
},
- "node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/widest-line": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
@@ -29726,16 +27578,11 @@
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
},
- "node_modules/wolfy87-eventemitter": {
- "version": "5.2.9",
- "resolved": "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.2.9.tgz",
- "integrity": "sha512-P+6vtWyuDw+MB01X7UeF8TaHBvbCovf4HPEMF/SV7BdDc1SMTiBy13SRD71lQh4ExFTG1d/WNzDGDCyOKSMblw=="
- },
"node_modules/word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "devOptional": true,
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -29746,37 +27593,6 @@
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true
},
- "node_modules/worker-timers": {
- "version": "7.0.60",
- "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.0.60.tgz",
- "integrity": "sha512-kom5j7+JQU0uuJAqAeFvxPpKlp21BH09YLMU/JLKA+0Zs3WTGk7WSBFYjdR3G+kjXr6qWD7zIcenv3oXaWBJzw==",
- "dependencies": {
- "@babel/runtime": "^7.20.6",
- "tslib": "^2.4.1",
- "worker-timers-broker": "^6.0.80",
- "worker-timers-worker": "^7.0.46"
- }
- },
- "node_modules/worker-timers-broker": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.4.tgz",
- "integrity": "sha512-y3D+Yfj37lrItEMIlcfCm/IRueYtYKgpLlTG2wgTIZ9PSw0n/K4kweilgk3gTC4ahbQNVGT90lU+Rf7W4M5bsw==",
- "dependencies": {
- "@babel/runtime": "^7.24.0",
- "fast-unique-numbers": "^8.0.13",
- "tslib": "^2.6.2",
- "worker-timers-worker": "^7.0.67"
- }
- },
- "node_modules/worker-timers-worker": {
- "version": "7.0.67",
- "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.67.tgz",
- "integrity": "sha512-0ZP2+v2fyiiiGaCEdWxMRUk5YxGFwWdRGB12ZfQy13vw8/27Xd+MW3ua56qlcM30nzjpddXXzLuEpHhGW+Pz7w==",
- "dependencies": {
- "@babel/runtime": "^7.24.0",
- "tslib": "^2.6.2"
- }
- },
"node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
@@ -29901,6 +27717,36 @@
}
}
},
+ "node_modules/wsl-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
+ "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wsl-utils/node_modules/is-wsl": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
+ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/xdg-basedir": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
@@ -29913,14 +27759,15 @@
}
},
"node_modules/xml-formatter": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-2.6.1.tgz",
- "integrity": "sha512-dOiGwoqm8y22QdTNI7A+N03tyVfBlQ0/oehAzxIZtwnFAHGeSlrfjF73YQvzSsa/Kt6+YZasKsrdu6OIpuBggw==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-3.7.0.tgz",
+ "integrity": "sha512-+8qTc3zv2UcJ1v9IsSIce37Dl4MQG14Cp7tWrwmy202UaI1wqRukw5QMX1JHsV+DX64yw77EgGsj2s5wGvuMbQ==",
+ "license": "MIT",
"dependencies": {
- "xml-parser-xo": "^3.2.0"
+ "xml-parser-xo": "^4.1.5"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 16"
}
},
"node_modules/xml-js": {
@@ -29936,38 +27783,90 @@
}
},
"node_modules/xml-parser-xo": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-3.2.0.tgz",
- "integrity": "sha512-8LRU6cq+d7mVsoDaMhnkkt3CTtAs4153p49fRo+HIB3I1FD1o5CeXRjRH29sQevIfVJIcPjKSsPU/+Ujhq09Rg==",
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-4.1.6.tgz",
+ "integrity": "sha512-mXbSNSM+rIwndoxSwmFa83bOdeP8G/cOGr7XvxA67X7ebCzoAuVez9JYDCDub3zRDNBZxIbfjuXLSsamr7NfwQ==",
+ "license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
},
- "node_modules/xmlhttprequest-ssl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
- "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
"engines": {
- "node": ">=0.4.0"
+ "node": ">=10"
}
},
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/yaml": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "license": "ISC",
"engines": {
"node": ">= 6"
}
},
+ "node_modules/yaml-ast-parser": {
+ "version": "0.0.43",
+ "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz",
+ "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/yargs": {
+ "version": "17.7.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
+ "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
"engines": {
"node": ">=10"
},
diff --git a/package.json b/package.json
index 698ce8fd2b..aa79dda9b4 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,8 @@
{
- "name": "dyte-docs",
- "version": "1.20.0",
+ "name": "ospi-docs",
+ "version": "0.1.0",
"private": true,
"scripts": {
- "postinstall": "patch-package",
"docusaurus": "docusaurus",
"start": "docusaurus start",
"dev": "docusaurus start",
@@ -19,32 +18,28 @@
"format": "prettier -w src docs",
"format:docs": "prettier -w docs",
"typecheck": "tsc",
- "spell-check": "npx cspell docs/**/*.mdx"
+ "spell-check": "npx cspell docs/**/*.mdx",
+ "gen-api-docs": "docusaurus gen-api-docs all",
+ "clean-api-docs": "docusaurus clean-api-docs all"
},
"dependencies": {
- "@codesandbox/sandpack-react": "^2.13.5",
- "@codesandbox/sandpack-themes": "^2.0.21",
- "@docsly/react": "^1.8.6",
- "@docusaurus/core": "^3.7.0",
- "@docusaurus/faster": "^3.7.0",
- "@docusaurus/module-type-aliases": "^3.7.0",
- "@docusaurus/plugin-client-redirects": "^3.7.0",
- "@docusaurus/preset-classic": "^3.7.0",
- "@docusaurus/remark-plugin-npm2yarn": "^3.7.0",
- "@docusaurus/theme-live-codeblock": "^3.7.0",
- "@docusaurus/theme-mermaid": "3.7.0",
- "@dytesdk/docs-ai-react": "^2.0.1",
- "@dytesdk/react-ui-kit": "^1.66.0",
- "@dytesdk/react-web-core": "file:modules/dytesdk-react-web-core-1.36.4-stripped.1.tgz",
- "@dytesdk/web-core": "file:modules/dytesdk-web-core-1.31.0-stripped.1.tgz",
+ "@docusaurus/core": "^3.10.0",
+ "@docusaurus/faster": "^3.10.0",
+ "@docusaurus/module-type-aliases": "^3.10.0",
+ "@docusaurus/plugin-client-redirects": "^3.10.0",
+ "@docusaurus/preset-classic": "^3.10.0",
+ "@docusaurus/remark-plugin-npm2yarn": "^3.10.0",
+ "@docusaurus/theme-live-codeblock": "^3.10.0",
+ "@docusaurus/theme-mermaid": "3.10.2",
"@fluentui/react-icons": "^2.0.271",
"@headlessui/react": "^1.7.14",
"@radix-ui/react-select": "^2.1.5",
- "@stoplight/elements": "^8.0.2",
"clsx": "^2.1.1",
+ "docusaurus-plugin-openapi-docs": "^5.2.0",
+ "docusaurus-plugin-sass": "^0.2.5",
+ "docusaurus-theme-openapi-docs": "^5.2.0",
"nanoid": "^5.0.6",
"param-case": "^3.0.4",
- "patch-package": "^6.5.1",
"prism-react-renderer": "^2.1.0",
"raw-loader": "^4.0.2",
"react": "^18.2.0",
@@ -54,7 +49,7 @@
"zustand": "^4.5.2"
},
"devDependencies": {
- "@docusaurus/tsconfig": "3.7.0",
+ "@docusaurus/tsconfig": "3.10.2",
"@styled-icons/boxicons-logos": "^10.47.0",
"@swc/core": "^1.10.11",
"@typescript-eslint/eslint-plugin": "^5.56.0",
diff --git a/patches/@stoplight+elements+8.0.2.patch b/patches/@stoplight+elements+8.0.2.patch
deleted file mode 100644
index d42dbf7348..0000000000
--- a/patches/@stoplight+elements+8.0.2.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff --git a/node_modules/@stoplight/elements/web-components.min.js b/node_modules/@stoplight/elements/web-components.min.js
-index 8b1ac97..9a34669 100644
---- a/node_modules/@stoplight/elements/web-components.min.js
-+++ b/node_modules/@stoplight/elements/web-components.min.js
-@@ -1,2 +1,2 @@
- /*! For license information please see web-components.min.js.LICENSE.txt */
--(()=>{var e,t,n={99195:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Ono:()=>m,default:()=>E,ono:()=>y});const r=!1,o=/\r?\n/,i=/\bono[ @]/;function a(e,t){let n=s(e.stack),r=t?t.stack:void 0;return n&&r?n+"\n\n"+r:n||r}function s(e){if(e){let t,n=e.split(o);for(let e=0;e0)return n.join("\n")}return e}const l=["function","symbol","undefined"],u=["constructor","prototype","__proto__"],c=Object.getPrototypeOf({});function f(){let e={},t=this;for(let n of d(t))if("string"==typeof n){let r=t[n],o=typeof r;l.includes(o)||(e[n]=r)}return e}function d(e,t=[]){let n=[];for(;e&&e!==c;)n=n.concat(Object.getOwnPropertyNames(e),Object.getOwnPropertySymbols(e)),e=Object.getPrototypeOf(e);let r=new Set(n);for(let e of t.concat(u))r.delete(e);return r}const p=["name","message","stack"];function h(e,t,n){let o=e;return function(e,t){let n=Object.getOwnPropertyDescriptor(e,"stack");!function(e){return Boolean(e&&e.configurable&&"function"==typeof e.get)}(n)?function(e){return Boolean(!e||e.writable||"function"==typeof e.set)}(n)&&(e.stack=a(e,t)):function(e,t,n){n?Object.defineProperty(t,"stack",{get:()=>a({stack:e.get.apply(t)},n),enumerable:!1,configurable:!0}):function(e,t){Object.defineProperty(e,"stack",{get:()=>s(t.get.apply(e)),enumerable:!1,configurable:!0})}(t,e)}(n,e,t)}(o,t),t&&"object"==typeof t&&function(e,t){let n=d(t,p),r=e,o=t;for(let e of n)if(void 0===r[e])try{r[e]=o[e]}catch(e){}}(o,t),o.toJSON=f,r&&r(o),n&&"object"==typeof n&&Object.assign(o,n),o}const m=g;function g(e,t){function n(...n){let{originalError:r,props:o,message:i}=function(e,t){let n,r,o,i="";return"string"==typeof e[0]?o=e:"string"==typeof e[1]?(e[0]instanceof Error?n=e[0]:r=e[0],o=e.slice(1)):(n=e[0],r=e[1],o=e.slice(2)),o.length>0&&(i=t.format?t.format.apply(void 0,o):o.join(" ")),t.concatMessages&&n&&n.message&&(i+=(i?" \n":"")+n.message),{originalError:n,props:r,message:i}}(n,t);return h(new e(i),r,o)}return t=function(e){return{concatMessages:void 0===(e=e||{}).concatMessages||Boolean(e.concatMessages),format:void 0!==e.format&&("function"==typeof e.format&&e.format)}}(t),n[Symbol.species]=e,n}g.toJSON=function(e){return f.call(e)},g.extend=function(e,t,n){return n||t instanceof Error?h(e,t,n):t?h(e,void 0,t):h(e)};const y=b;b.error=new m(Error),b.eval=new m(EvalError),b.range=new m(RangeError),b.reference=new m(ReferenceError),b.syntax=new m(SyntaxError),b.type=new m(TypeError),b.uri=new m(URIError);const v=b;function b(...e){let t=e[0];if("object"==typeof t&&"string"==typeof t.name)for(let n of Object.values(v))if("function"==typeof n&&"ono"===n.name){let r=n[Symbol.species];if(r&&r!==Error&&(t instanceof r||t.name===r.name))return n.apply(void 0,e)}return b.error.apply(void 0,e)}n(43335),e=n.hmd(e);const E=y;"object"==typeof e.exports&&(e.exports=Object.assign(e.exports.default,e.exports))},7288:(e,t,n)=>{"use strict";var r=n(2784),o=r.useState,i=r.useCallback,a=r.useLayoutEffect;function s(e){return e?{width:e.offsetWidth,height:e.offsetHeight}:{width:0,height:0}}e.exports=function(e){var t=o(s(e?e.current:{})),n=t[0],r=t[1],l=i((function(){e.current&&r(s(e.current))}),[e]);return a((function(){if(e.current){if(l(),"function"==typeof ResizeObserver){var t=new ResizeObserver((function(){l()}));return t.observe(e.current),function(){t.disconnect(e.current),t=null}}return window.addEventListener("resize",l),function(){window.removeEventListener("resize",l)}}}),[e.current]),n}},65907:(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var r=n(37392),o={};function i(){return(0,r.KV)()?n.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:o}},37392:(e,t,n)=>{"use strict";n.d(t,{KV:()=>o,l$:()=>i}),e=n.hmd(e);var r=n(34406);function o(){return"[object process]"===Object.prototype.toString.call(void 0!==r?r:0)}function i(e,t){return e.require(t)}},7790:(e,t,n)=>{"use strict";n.d(t,{ph:()=>u,yW:()=>l});var r=n(65907),o=n(37392);e=n.hmd(e);var i={nowSeconds:function(){return Date.now()/1e3}},a=(0,o.KV)()?function(){try{return(0,o.l$)(e,"perf_hooks").performance}catch(e){return}}():function(){var e=(0,r.R)().performance;if(e&&e.now)return{now:function(){return e.now()},timeOrigin:Date.now()-e.now()}}(),s=void 0===a?i:{nowSeconds:function(){return(a.timeOrigin+a.now())/1e3}},l=i.nowSeconds.bind(i),u=s.nowSeconds.bind(s);!function(){var e=(0,r.R)().performance;if(e&&e.now){var t=36e5,n=e.now(),o=Date.now(),i=e.timeOrigin?Math.abs(e.timeOrigin+n-o):t,a=i{"use strict";var r=n(60417),o=n(93503),i=n(73198),a=n(19003),s=n(35676),l=n(68632),u=n(30898),c=n(74186),f=n(18149),d=n(97030),p=n(78911),h=n(13888),m=n(829),g=n(59756),y=n(75652),v=n(49599),b=n(67304),E=(e,...t)=>b.apply(null,[e].concat(s(t))),w=e=>_(Y,e),x=e=>_(Q,e),_=(e,t)=>-1!==e.indexOf(t),T=e=>!U(e).length&&!1!==e&&!0!==e,k=e=>d(e)||!0===e||!1===e,O=e=>!1===e,S=e=>!0===e,C=e=>null!==e,A=(e,t,n)=>n(e),P=e=>m(y(l(e))),N=e=>void 0!==e,I=e=>y(l(e.map(U))),R=function(e){return e in this},j=e=>e[0],D=e=>e[e.length-1],F=e=>Math.max.apply(Math,e),L=e=>Math.min.apply(Math,e);function M(e){let{allOf:t,...n}=e;return n=d(e)?n:e,Array.isArray(t)?ee.some(R,n)?[n,...t.filter(C).map(M),h(n,ee)]:[n,...t.filter(C).map(M)]:[n]}function B(e,t){return e.map((e=>e&&e[t]))}function $(e,t){return e.map((function(e){if(e){if(!Array.isArray(e.items))return e.items;var n=e.items[t];return k(n)?n:e.hasOwnProperty("additionalItems")?e.additionalItems:void 0}}))}function U(e){return d(e)||Array.isArray(e)?Object.keys(e):[]}function H(e,t){if(t=t||[],!e.length)return t;var n=e.slice(0).shift(),r=e.slice(1);return t.length?H(r,s(t.map((e=>n.map((t=>[t].concat(e))))))):H(r,n.map((e=>e)))}function z(e,t){var n;try{n=e.map((function(e){return JSON.stringify(e,null,2)})).join("\n")}catch(t){n=e.join(", ")}throw new Error('Could not resolve values for path:"'+t.join(".")+'". They are probably incompatible. Values: \n'+n)}function K(e,t,n){return function(r,o){if(void 0===o)throw new Error("You need to call merger with a key for the property name or index if array.");return o=String(o),e(r,null,n.concat(t,o))}}function q(e,t,n,r,i,a){if(e.length){var s=i.resolvers[t];if(!s)throw new Error("No resolver found for "+t);var l=v(n.map((function(t){return e.reduce((function(e,n){return void 0!==t[n]&&(e[n]=t[n]),e}),{})})).filter(N),o),u=("properties"===t?Y:Q).reduce((function(e,t){return _(X,t)?e[t]=K(r,t,a):e[t]=function(e){return r(e,null,a.concat(t))},e}),{});"items"===t&&(u.itemsArray=K(r,"items",a),u.items=function(e){return r(e,null,a.concat("items"))});var c=s(l,a.concat(t),u,i);return d(c)||z(l,a.concat(t)),function(e){for(var t in e)e.hasOwnProperty(t)&&T(e[t])&&delete e[t];return e}(c)}}function V(e,t,n){var r=I(n||e),i=n?$:B;return r.reduce((function(n,r){var a=i(e,r),s=v(a.filter(N),o);return n[r]=t(s,r),n}),n?[]:{})}function W(e){return{required:e}}function G(e){return{$ref:e}}var Y=["properties","patternProperties","additionalProperties"],Q=["items","additionalItems"],X=["properties","patternProperties","definitions","dependencies"],J=["anyOf","oneOf"],Z=["additionalProperties","additionalItems","contains","propertyNames","not","items"],ee=["title","description"],te={object:[...Y,"required"],array:[...Q,"contains","uniqueItems","minContains","maxContains"],number:["multipleOf","minimum","maximum","exclusiveMinimum","exclusiveMaximum"],get integer(){return this.number},string:["pattern","minLength","maxLength"]},ne={type(e){if(e.some(Array.isArray)){var t=e.map((function(e){return Array.isArray(e)?e:[e]})),n=u.apply(null,t);if(1===n.length)return n[0];if(n.length>1)return y(n)}},properties(e,t,n,r){r.ignoreAdditionalProperties||(e.forEach((function(t){var r=e.filter((e=>e!==t)),o=U(t.properties),i=U(t.patternProperties).map((e=>new RegExp(e)));r.forEach((function(e){var r=U(e.properties),a=r.filter((e=>i.some((t=>t.test(e))))),s=E(r,o,a);e.properties=Object.assign({},e.properties),s.forEach((function(r){e.properties[r]=n.properties([e.properties[r],t.additionalProperties],r)}))}))})),e.forEach((function(t){var n=e.filter((e=>e!==t)),r=U(t.patternProperties);!1===t.additionalProperties&&n.forEach((function(e){e.patternProperties=Object.assign({},e.patternProperties);var t=U(e.patternProperties);E(t,r).forEach((t=>delete e.patternProperties[t]))}))})));var o,i={additionalProperties:n.additionalProperties(e.map((e=>e.additionalProperties))),patternProperties:V(e.map((e=>e.patternProperties)),n.patternProperties),properties:V(e.map((e=>e.properties)),n.properties)};return!1===i.additionalProperties&&g(o=i.properties,(function(e,t){!1===e&&delete o[t]})),i},dependencies:(e,t,n)=>I(e).reduce((function(t,r){var i=B(e,r),a=v(i.filter(N),f),s=a.filter(Array.isArray);if(s.length){if(s.length===a.length)t[r]=P(a);else{var l=a.filter(k),u=s.map(W);t[r]=n(l.concat(u),r)}return t}return a=v(a,o),t[r]=n(a,r),t}),{}),items(e,t,n){var r,o,i=e.map((e=>e.items)),a=i.filter(N),s={};return a.every(k)?s.items=n.items(i):s.items=V(e,n.itemsArray,i),a.every(Array.isArray)?r=e.map((e=>e.additionalItems)):a.some(Array.isArray)&&(r=e.map((function(e){if(e)return Array.isArray(e.items)?e.additionalItems:e.items}))),r&&(s.additionalItems=n.additionalItems(r)),!1===s.additionalItems&&Array.isArray(s.items)&&(o=s.items,g(o,(function(e,t){!1===e&&o.splice(t,1)}))),s},oneOf(e,t,n){var r=function(e,t){return e.map((function(e,n){try{return t(e,n)}catch(e){return}})).filter(N)}(H(e),n),i=v(r,o);if(i.length)return i},not:e=>({anyOf:e}),pattern:e=>e.map((e=>"(?="+e+")")).join(""),multipleOf(e){for(var t=e.slice(0),n=1;t.some((e=>!Number.isInteger(e)));)t=t.map((e=>10*e)),n*=10;return i(t)/n},enum(e){var t=c.apply(null,e.concat(f));if(t.length)return m(t)}};function re(e,t,n){n=n||[],t=a(t,{ignoreAdditionalProperties:!1,resolvers:ne,deep:!0,$refResolver:G});var r=function e(r,i,a){r=r.filter(N),a=a||[];var s=d(i)?Object.assign({},i):{};if(r.length){if(r.some(O))return!1;if(r.every(S))return!0;var l=(r=(r=r.filter(d)).map((e=>{return"$ref"in e?(n=e,r=t.$refResolver(e.$ref),d(r)&&d(n)&&("summary"in n||"description"in n)?{...r,..."description"in n?{description:n.description}:null,..."summary"in n?{summary:n.summary}:null}:r):Object.assign({},e);var n,r}))).map((e=>function(e){if(d(e)){if("type"in e)return"string"==typeof e.type?e.type:void 0;var t=Object.keys(te).filter((t=>te[t].some((t=>t in e))));return t.length>0?t:void 0}}(e))).filter(N);if(l.length>1){let e=Array.isArray(l[0])?l[0]:[l[0]];l.slice(1).forEach((function(t){(Array.isArray(t)?u(e,t).length:e.includes(t))||z(l,a.concat("type"))}))}var c=I(r);if(t.deep&&_(c,"allOf"))return re({allOf:r},t,n);var f=c.filter(w);p(c,f);var h=c.filter(x);return p(c,h),c.forEach((function(n){var i=B(r,n).filter(N),l=ee.includes(n)?i:v(i,function(e){return function(t,n){return o({[e]:t},{[e]:n})}}(n));if(1===l.length&&_(J,n))s[n]=l[0].map((function(t){return e([t],t)}));else if(1!==l.length||_(X,n)||_(Z,n)){var u,c=t.resolvers[n]||t.resolvers.defaultResolver;if(!c)throw new Error("No resolver found for key "+n+". You can provide a resolver for this keyword in the options, or provide a default resolver.");u=_(X,n)||_(J,n)?K(e,n,a):function(t){return e(t,null,a.concat(n))};var f=!1;s[n]=c(l,a.concat(n),u,t,(function(e){return f=Array.isArray(e),function(e){s.allOf=function(e,t){return Array.isArray(e)?(e.splice.apply(e,[0,0].concat(t)),e):t}(s.allOf,e)}(e)})),void 0!==s[n]||f?void 0===s[n]&&delete s[n]:z(l,a.concat(n))}else s[n]=l[0]})),Object.assign(s,q(f,"properties",r,e,t,a)),Object.assign(s,q(h,"items",r,e,t,a)),s}}(l(M(e)));return r}ne.$id=j,ne.$ref=j,ne.$schema=j,ne.additionalItems=A,ne.additionalProperties=A,ne.anyOf=ne.oneOf,ne.contains=A,ne.default=D,ne.definitions=ne.dependencies,ne.description=D,ne.examples=e=>v(s(e),f),ne.exclusiveMaximum=L,ne.exclusiveMinimum=F,ne.maximum=L,ne.maxItems=L,ne.maxLength=L,ne.maxProperties=L,ne.minimum=F,ne.minItems=F,ne.minLength=F,ne.minProperties=F,ne.propertyNames=A,ne.required=e=>P(e),ne.title=D,ne.uniqueItems=e=>e.some(S),re.options={resolvers:ne},re.stoplightResolvers={defaultResolver:e=>Array.isArray(e)?e:Object.assign({},...Object(e)),example:e=>ne.enum(e)||null,enum:e=>ne.enum(r(e))||[],$ref:e=>({})},e.exports=re},44042:(e,t,n)=>{"use strict";const r=n(46100),o=n(5990),i=n(69283),{safePathToPointer:a,safePointerToPath:s}=n(69283),{get:l,set:u}=n(69176);function c(e,t,n,i,a,s,l,u,d){let p=null===t?e:e[t];if(p&&"object"==typeof p&&!ArrayBuffer.isView(p))if(r.isAllowed$Ref(p))f(e,t,n,i,a,s,l,u,d);else{let e=Object.keys(p).sort(((e,t)=>{let n=`${i}/${e}`.lastIndexOf(u.bundle.defaultRoot),r=`${i}/${t}`.lastIndexOf(u.bundle.defaultRoot);return n!==r?r-n:e.length-t.length}));for(let t of e){let e=o.join(n,t),h=o.join(i,t),m=p[t];r.isAllowed$Ref(m)?f(p,t,n,h,a,s,l,u,d):c(p,t,e,h,a,s,l,u,d)}}}function f(e,t,n,a,s,l,u,f,d){let p=null===t?e:e[t],h=i.resolve(n,p.$ref),m=u._resolve(h,a,f);if(null===m)return;let g=o.parse(a).length,y=i.stripHash(m.path),v=i.getHash(m.path),b=y!==u._root$Ref.path,E=r.isExtended$Ref(p);s+=m.indirections;let w=a,x=function(e,t,n){for(let r=0;rnull!==e[t])),r.sort(((e,t)=>t.length-e.length));let o=r.find((e=>t.startsWith(e)));return void 0===o?n:e[o]+t.replace(o,"")}(d[y],v,a)),l.push({$ref:p,parent:e,key:t,pathFromRoot:a,mappedPathFromRoot:w,depth:g,file:y,hash:v,value:m.value,circular:m.circular,extended:E,external:b,indirections:s}),x||c(m.value,null,m.path,a,s+1,l,u,f,d)}e.exports=function(e,t){e.$refs.propertyMap={};let n=[],i={};c(e,"schema",e.$refs._root$Ref.path+"#","#",0,n,e.$refs,t,i),function(e,t,n,i,c){let f,d,p;t.sort(((e,t)=>{if(e.file!==t.file)return e.file{"use strict";const r=n(5990);e.exports.get=function(e,t){let n=r.parse(t);if(0===n.length)throw new TypeError("Path cannot point at root");let o=e;for(let e=0;e{"use strict";const r=n(46100),o=n(5990),{ono:i}=n(99195),a=n(69283);function s(e,t,n,i,a,c,f){let d,p={value:e,circular:!1};if(e&&"object"==typeof e&&!ArrayBuffer.isView(e)){if(i.push(e),r.isAllowed$Ref(e,f))d=l(e,t,n,i,a,c,f),p.circular=d.circular,p.value=d.value;else for(let h of Object.keys(e)){let m=o.join(t,h),g=o.join(n,h),y=e[h],v=!1;r.isAllowed$Ref(y,f)?(d=l(y,m,g,i,a,c,f),v=d.circular,e[h]!==d.value&&(e[h]=d.value)):-1===i.indexOf(y)?(d=s(y,m,g,i,a,c,f),v=d.circular,e[h]!==d.value&&(e[h]=d.value)):v=u(m,c,f),p.circular=p.circular||v}i.pop()}return p}function l(e,t,n,o,i,l,c){let f=a.resolve(t,e.$ref),d=l._resolve(f,t,c);if(null===d)return{circular:!1,value:null};if(l.propertyMap[n]=f,i[f]){const t=i[f],n=Object.keys(e);if(n.length>1){const r={};for(let o of n)"$ref"===o||o in t.value||(r[o]=e[o]);return{circular:t.circular,value:Object.assign({},t.value,r)}}return t}let p=d.circular,h=p||-1!==o.indexOf(d.value);h&&u(t,l,c);let m=r.dereference(e,d.value);if(!h){let e=s(m,d.path,n,o,i,l,c);h=e.circular,m=e.value}h&&!p&&"ignore"===c.dereference.circular&&(m=e),p&&(m.$ref=n);const g={circular:h,value:m};return 1===Object.keys(e).length&&(i[f]=g),g}function u(e,t,n){if(t.circular=!0,!n.dereference.circular)throw i.reference(`Circular $ref pointer found at ${e}`);return!0}e.exports=function(e,t){e.$refs.propertyMap={};let n=s(e.schema,e.$refs._root$Ref.path,"#",[],{},e.$refs,t);e.$refs.circular=n.circular,e.schema=n.value}},62663:(e,t,n)=>{"use strict";const r=n(50809),o=n(78536),i=n(61118),a=n(75330),s=n(44042),l=n(80396),u=n(69283),{JSONParserError:c,InvalidPointerError:f,MissingPointerError:d,ResolverError:p,ParserError:h,UnmatchedParserError:m,UnmatchedResolverError:g,isHandledError:y,JSONParserErrorGroup:v}=n(8946),b=n(76220),{ono:E}=n(99195);function w(){this.schema=null,this.$refs=new r}function x(e){if(v.getParserErrors(e).length>0)throw new v(e)}e.exports=w,e.exports.default=w,e.exports.JSONParserError=c,e.exports.JSONParserErrorGroup=v,e.exports.InvalidPointerError=f,e.exports.MissingPointerError=d,e.exports.ResolverError=p,e.exports.ParserError=h,e.exports.UnmatchedParserError=m,e.exports.UnmatchedResolverError=g,w.parse=function(e,t,n,r){let o=new this;return o.parse.apply(o,arguments)},w.prototype.parse=async function(e,t,n,a){let s,l=i(arguments);if(!l.path&&!l.schema){let e=E(`Expected a file path, URL, or object. Got ${l.path||l.schema}`);return b(l.callback,Promise.reject(e))}this.schema=null,this.$refs=new r;let c="http";if(u.isFileSystemPath(l.path)&&(l.path=u.fromFileSystemPath(l.path),c="file"),l.path=u.resolve(u.cwd(),l.path),l.schema&&"object"==typeof l.schema){let e=this.$refs._add(l.path);e.value=l.schema,e.pathType=c,s=Promise.resolve(l.schema)}else s=o(l.path,this.$refs,l.options);let f=this;try{let e=await s;if(null===e||"object"!=typeof e||ArrayBuffer.isView(e)){if(l.options.continueOnError)return f.schema=null,b(l.callback,Promise.resolve(f.schema));throw E.syntax(`"${f.$refs._root$Ref.path||e}" is not a valid JSON Schema`)}return f.schema=e,b(l.callback,Promise.resolve(f.schema))}catch(e){return l.options.continueOnError&&y(e)?(this.$refs._$refs[u.stripHash(l.path)]&&this.$refs._$refs[u.stripHash(l.path)].addError(e),b(l.callback,Promise.resolve(null))):b(l.callback,Promise.reject(e))}},w.resolve=function(e,t,n,r){let o=new this;return o.resolve.apply(o,arguments)},w.prototype.resolve=async function(e,t,n,r){let o=this,s=i(arguments);try{return await this.parse(s.path,s.schema,s.options),await a(o,s.options),x(o),b(s.callback,Promise.resolve(o.$refs))}catch(e){return b(s.callback,Promise.reject(e))}},w.bundle=function(e,t,n,r){let o=new this;return o.bundle.apply(o,arguments)},w.prototype.bundle=async function(e,t,n,r){let o=this,a=i(arguments);try{return await this.resolve(a.path,a.schema,a.options),s(o,a.options),x(o),b(a.callback,Promise.resolve(o.schema))}catch(e){return b(a.callback,Promise.reject(e))}},w.dereference=function(e,t,n,r){let o=new this;return o.dereference.apply(o,arguments)},w.prototype.dereference=async function(e,t,n,r){let o=this,a=i(arguments);try{return await this.resolve(a.path,a.schema,a.options),l(o,a.options),x(o),b(a.callback,Promise.resolve(o.schema))}catch(e){return b(a.callback,Promise.reject(e))}}},61118:(e,t,n)=>{"use strict";const r=n(96482);e.exports=function(e){let t,n,o,i;return"function"==typeof(e=Array.prototype.slice.call(e))[e.length-1]&&(i=e.pop()),"string"==typeof e[0]?(t=e[0],"object"==typeof e[2]?(n=e[1],o=e[2]):(n=void 0,o=e[1])):(t="",n=e[0],o=e[1]),o instanceof r||(o=new r(o)),{path:t,schema:n,options:o,callback:i}}},96482:(e,t,n)=>{"use strict";const r=n(90755),o=n(65053),i=n(43429),a=n(71692),s=n(88292),l=n(79961);function u(e){c(this,u.defaults),c(this,e)}function c(e,t){if(f(t)){let n=Object.keys(t);for(let r=0;r{"use strict";const{ono:r}=n(99195),o=n(69283),i=n(64771),{ResolverError:a,ParserError:s,UnmatchedParserError:l,UnmatchedResolverError:u,isHandledError:c}=n(8946);e.exports=async function(e,t,n){e=o.stripHash(e);let f=t._add(e),d={url:e,extension:o.getExtension(e)};try{const e=await function(e,t,n){return new Promise(((o,s)=>{let l=i.all(t.resolve);l=i.filter(l,"canRead",e),i.sort(l),i.run(l,"read",e,n).then(o,(function(n){!n&&t.continueOnError?s(new u(e.url)):n&&"error"in n?n.error instanceof a?s(n.error):s(new a(n,e.url)):s(r.syntax(`Unable to resolve $ref pointer "${e.url}"`))}))}))}(d,n,t);f.pathType=e.plugin.name,d.data=e.result;const o=await function(e,t,n){return new Promise(((o,a)=>{let u=i.all(t.parse),c=i.filter(u,"canParse",e),f=c.length>0?c:u;i.sort(f),i.run(f,"parse",e,n).then((function(t){var n;!t.plugin.allowEmpty&&(void 0===(n=t.result)||"object"==typeof n&&0===Object.keys(n).length||"string"==typeof n&&0===n.trim().length||ArrayBuffer.isView(n)&&0===n.length)?a(r.syntax(`Error parsing "${e.url}" as ${t.plugin.name}. \nParsed value is empty`)):o(t)}),(function(n){!n&&t.continueOnError?a(new l(e.url)):n&&"error"in n?n.error instanceof s?a(n.error):a(new s(n.error.message,e.url)):a(r.syntax(`Unable to parse ${e.url}`))}))}))}(d,n,t);return f.value=o.result,o.result}catch(e){throw c(e)&&(f.value=e),e}}},71692:e=>{"use strict";let t=/\.(jpeg|jpg|gif|png|bmp|ico)$/i;e.exports={order:400,allowEmpty:!0,canParse:e=>ArrayBuffer.isView(e.data)&&t.test(e.url),parse:e=>ArrayBuffer.isView(e.data)?new Uint8Array(e.data):new Uint8Array(Buffer.from(e.data))}},90755:(e,t,n)=>{"use strict";const{ParserError:r}=n(8946),o=new(n(96837));e.exports={order:100,allowEmpty:!0,canParse:".json",async parse(e){let t=e.data;if(ArrayBuffer.isView(t)&&(t=o.decode(t)),"string"!=typeof t)return t;if(0!==t.trim().length)try{return JSON.parse(t)}catch(t){throw new r(t.message,e.url)}}}},43429:(e,t,n)=>{"use strict";const{ParserError:r}=n(8946),o=n(96837);let i=/\.(txt|htm|html|md|xml|js|min|map|css|scss|less|svg)$/i;e.exports={order:300,allowEmpty:!0,encoding:"utf8",canParse:e=>("string"==typeof e.data||ArrayBuffer.isView(e.data))&&i.test(e.url),parse(e){if("string"==typeof e.data)return e.data;if(ArrayBuffer.isView(e.data))return new o(this.encoding).decode(e.data);throw new r("data is not text",e.url)}}},65053:(e,t,n)=>{"use strict";const{ParserError:r}=n(8946),o=n(96837),i=n(7854),a=new o;e.exports={order:200,allowEmpty:!0,canParse:[".yaml",".yml",".json"],async parse(e){let t=e.data;if(ArrayBuffer.isView(t)&&(t=a.decode(t)),"string"!=typeof t)return t;try{const n=i.parseWithPointers(t,{ignoreDuplicateKeys:!0,mergeKeys:!1});if(n.diagnostics.some((e=>0===e.severity))){const{message:t,range:{start:{line:o,character:i}}}=n.diagnostics[0];throw new r(`${t} at line ${o+1}, column ${i+1}:`,e.url)}return n.data}catch(t){throw new r(t.message,e.url)}}}},5990:(e,t,n)=>{"use strict";e.exports=p;const r=n(46100),o=n(69283),{JSONParserError:i,InvalidPointerError:a,MissingPointerError:s,isHandledError:l}=n(8946),u=/\//g,c=/~/g,f=/~1/g,d=/~0/g;function p(e,t,n){this.$ref=e,this.path=t,this.originalPath=n||t,this.value=void 0,this.circular=!1,this.indirections=0}function h(e,t){if(r.isAllowed$Ref(e.value,t)){let n=o.resolve(e.path,e.value.$ref);if(n!==e.path){let o=e.$ref.$refs._resolve(n,e.path,t);if(null===o)return;return e.indirections+=o.indirections+1,r.isExtended$Ref(e.value)?(e.value=r.dereference(e.value,o.value),!1):(e.$ref=o.$ref,e.path=o.path,e.value=o.value,!0)}e.circular=!0}}function m(e,t,n){if(!e.value||"object"!=typeof e.value)throw new i(`Error assigning $ref pointer "${e.path}". \nCannot set "${t}" of a non-object.`);return"-"===t&&Array.isArray(e.value)?e.value.push(n):e.value[t]=n,n}function g(e){if(l(e))throw e;return e}p.prototype.resolve=function(e,t,n){let r=p.parse(this.path,this.originalPath);this.value=g(e);for(let e=0;e{"use strict";e.exports=c;const r=n(5990),{InvalidPointerError:o,isHandledError:i,normalizeError:a}=n(8946),{safePointerToPath:s,stripHash:l,getHash:u}=n(69283);function c(){this.path=void 0,this.value=void 0,this.$refs=void 0,this.pathType=void 0,this.errors=void 0}c.prototype.addError=function(e){void 0===this.errors&&(this.errors=[]),Array.isArray(e.errors)?this.errors.push(...e.errors.map(a)):this.errors.push(a(e))},c.prototype.exists=function(e,t){try{return this.resolve(e,t),!0}catch(e){return!1}},c.prototype.get=function(e,t){return this.resolve(e,t).value},c.prototype.resolve=function(e,t,n,a){let c=new r(this,e,n);try{return c.resolve(this.value,t,a)}catch(e){if(!t||!t.continueOnError||!i(e))throw e;return null===e.path&&(e.path=s(u(a))),e instanceof o&&(e.source=l(a)),this.addError(e),null}},c.prototype.set=function(e,t){let n=new r(this,e);this.value=n.set(this.value,t)},c.is$Ref=function(e){return e&&"object"==typeof e&&"string"==typeof e.$ref&&e.$ref.length>0},c.isExternal$Ref=function(e){return c.is$Ref(e)&&"#"!==e.$ref[0]},c.isAllowed$Ref=function(e,t){if(c.is$Ref(e)){if("#/"===e.$ref.substr(0,2)||"#"===e.$ref)return!0;if("#"!==e.$ref[0]&&(!t||t.resolve.external))return!0}},c.isExtended$Ref=function(e){return c.is$Ref(e)&&Object.keys(e).length>1},c.dereference=function(e,t){if(t&&"object"==typeof t&&c.isExtended$Ref(e)){let n={};for(let t of Object.keys(e))"$ref"!==t&&(n[t]=e[t]);for(let e of Object.keys(t))e in n||(n[e]=t[e]);return n}return t}},50809:(e,t,n)=>{"use strict";const{ono:r}=n(99195),o=n(46100),i=n(69283);function a(){this.circular=!1,this.propertyMap={},this._$refs={},this._root$Ref=null}function s(e,t){let n=Object.keys(e);return(t=Array.isArray(t[0])?t[0]:Array.prototype.slice.call(t)).length>0&&t[0]&&(n=n.filter((n=>-1!==t.indexOf(e[n].pathType)))),n.map((t=>({encoded:t,decoded:"file"===e[t].pathType?i.toFileSystemPath(t,!0):t})))}e.exports=a,a.prototype.paths=function(e){return s(this._$refs,arguments).map((e=>e.decoded))},a.prototype.values=function(e){let t=this._$refs;return s(t,arguments).reduce(((e,n)=>(e[n.decoded]=t[n.encoded].value,e)),{})},a.prototype.toJSON=a.prototype.values,a.prototype.exists=function(e,t){try{return this._resolve(e,"",t),!0}catch(e){return!1}},a.prototype.get=function(e,t){return this._resolve(e,"",t).value},a.prototype.set=function(e,t){let n=i.resolve(this._root$Ref.path,e),o=i.stripHash(n),a=this._$refs[o];if(!a)throw r(`Error resolving $ref pointer "${e}". \n"${o}" not found.`);a.set(n,t)},a.prototype._add=function(e){let t=i.stripHash(e),n=new o;return n.path=t,n.$refs=this,this._$refs[t]=n,this._root$Ref=this._root$Ref||n,n},a.prototype._resolve=function(e,t,n){let o=i.resolve(this._root$Ref.path,e),a=i.stripHash(o),s=this._$refs[a];if(!s)throw r(`Error resolving $ref pointer "${e}". \n"${a}" not found.`);return s.resolve(o,n,e,t)},a.prototype._get$Ref=function(e){e=i.resolve(this._root$Ref.path,e);let t=i.stripHash(e);return this._$refs[t]}},75330:(e,t,n)=>{"use strict";const r=n(46100),o=n(5990),i=n(78536),a=n(69283),{isHandledError:s}=n(8946);function l(e,t,n,i){let a=[];if(e&&"object"==typeof e&&!ArrayBuffer.isView(e))if(r.isExternal$Ref(e))a.push(u(e,t,n,i));else for(let s of Object.keys(e)){let c=o.join(t,s),f=e[s];r.isExternal$Ref(f)?a.push(u(f,c,n,i)):a=a.concat(l(f,c,n,i))}return a}async function u(e,t,n,r){let o=a.resolve(t,e.$ref),u=a.stripHash(o);if(e=n._$refs[u])return Promise.resolve(e.value);try{let e=l(await i(o,n,r),u+"#",n,r);return Promise.all(e)}catch(e){if(!r.continueOnError||!s(e))throw e;return n._$refs[u]&&(e.source=a.stripHash(t),e.path=a.safePointerToPath(a.getHash(t))),[]}}e.exports=function(e,t){if(!t.resolve.external)return Promise.resolve();try{let n=l(e.schema,e.$refs._root$Ref.path+"#",e.$refs,t);return Promise.all(n)}catch(e){return Promise.reject(e)}}},88292:(e,t,n)=>{"use strict";const r=n(50810),{ono:o}=n(99195),i=n(69283),{ResolverError:a}=n(8946);e.exports={order:100,canRead:e=>i.isFileSystemPath(e.url),read:e=>new Promise(((t,n)=>{let s;try{s=i.toFileSystemPath(e.url)}catch(t){n(new a(o.uri(t,`Malformed URI: ${e.url}`),e.url))}try{r.readFile(s,((e,r)=>{e?n(new a(o(e,`Error opening file "${s}"`),s)):t(r)}))}catch(e){n(new a(o(e,`Error opening file "${s}"`),s))}}))}},79961:(e,t,n)=>{"use strict";var r=n(34406);n(89307),n(46533);const{ono:o}=n(99195),i=n(69283),{ResolverError:a}=n(8946);async function s(e,t,n){e=i.parse(e),n.push(e.href);const l=new AbortController,u={method:"GET",headers:t.headers||{},credentials:t.withCredentials?"include":"omit",signal:l.signal,redirect:r.browser?"follow":0===t.redirects?"error":"manual"};let c;t.timeout>0&&isFinite(t.timeout)&&(c=setTimeout((()=>{l.abort()}),t.timeout));try{let r=await fetch(e.href,u);if(r.status>=300&&r.status<400){if(n.length>t.redirects)throw new a(o({status:r.status},`Error downloading ${n[0]}. \nToo many redirects: \n ${n.join(" \n ")}`));let l=r.headers.get("Location");if(!l)throw new a(o({status:r.status},`HTTP ${r.status} redirect with no location header`));let u=i.resolve(e,l);return await s(u,t,n)}if(!r.ok)throw new Error(r.statusText);return new Uint8Array(await r.arrayBuffer())}catch(t){if(t instanceof a)throw t;throw new a(o(t,`Error downloading ${e.href}`),e.href)}finally{void 0!==c&&clearTimeout(c)}}e.exports={order:200,headers:null,timeout:5e3,redirects:5,withCredentials:!1,canRead:e=>i.isHttp(e.url),read(e){let t=i.parse(e.url);return r.browser&&!t.protocol&&(t.protocol=i.parse(location.href).protocol),s(t,this,[])}}},8946:(e,t,n)=>{"use strict";const{Ono:r}=n(99195),{stripHash:o,toFileSystemPath:i}=n(69283),a=t.JSONParserError=class extends Error{constructor(e,t){super(),this.code="EUNKNOWN",this.message=e,this.source=t,this.path=null,r.extend(this)}};l(a);const s=t.JSONParserErrorGroup=class e extends Error{constructor(e){super(),this.files=e,this.message=`${this.errors.length} error${this.errors.length>1?"s":""} occurred while reading '${i(e.$refs._root$Ref.path)}'`,r.extend(this)}static getParserErrors(e){const t=[];for(const n of Object.values(e.$refs._$refs))n.errors&&t.push(...n.errors);return t}get errors(){return e.getParserErrors(this.files)}};function l(e){Object.defineProperty(e.prototype,"name",{value:e.name,enumerable:!0})}l(s),l(t.ParserError=class extends a{constructor(e,t){super(`Error parsing ${t}: ${e}`,t),this.code="EPARSER"}}),l(t.UnmatchedParserError=class extends a{constructor(e){super(`Could not find parser for "${e}"`,e),this.code="EUNMATCHEDPARSER"}}),l(t.ResolverError=class extends a{constructor(e,t){super(e.message||`Error reading file "${t}"`,t),this.code="ERESOLVER","code"in e&&(this.ioErrorCode=String(e.code))}}),l(t.UnmatchedResolverError=class extends a{constructor(e){super(`Could not find resolver for "${e}"`,e),this.code="EUNMATCHEDRESOLVER"}}),l(t.MissingPointerError=class extends a{constructor(e,t){super(`Token "${e}" does not exist.`,o(t)),this.code="EMISSINGPOINTER"}}),l(t.InvalidPointerError=class extends a{constructor(e,t){super(`Invalid $ref pointer "${e}". Pointers must begin with "#/"`,o(t)),this.code="EINVALIDPOINTER"}}),t.isHandledError=function(e){return e instanceof a||e instanceof s},t.normalizeError=function(e){return null===e.path&&(e.path=[]),e}},64771:(e,t)=>{"use strict";function n(e,t,n,r,o){let i=e[t];if("function"==typeof i)return i.apply(e,[n,r,o]);if(!r){if(i instanceof RegExp)return i.test(n.url);if("string"==typeof i)return i===n.extension;if(Array.isArray(i))return-1!==i.indexOf(n.extension)}return i}t.all=function(e){return Object.keys(e).filter((t=>"object"==typeof e[t])).map((t=>(e[t].name=t,e[t])))},t.filter=function(e,t,r){return e.filter((e=>!!n(e,t,r)))},t.sort=function(e){for(let t of e)t.order=t.order||Number.MAX_SAFE_INTEGER;return e.sort(((e,t)=>e.order-t.order))},t.run=function(e,t,r,o){let i,a,s=0;return new Promise(((l,u)=>{function c(){if(i=e[s++],!i)return u(a);try{let e=n(i,t,r,f,o);e&&"function"==typeof e.then?e.then(d,p):void 0!==e&&d(e)}catch(e){p(e)}}function f(e,t){e?p(e):d(t)}function d(e){l({plugin:i,result:e})}function p(e){a={plugin:i,error:e},c()}c()}))}},96837:(e,t,n)=>{"use strict";const{TextDecoder:r}=n(94469);e.exports="undefined"==typeof TextDecoder?r:TextDecoder},69283:(e,t,n)=>{"use strict";var r=n(34406);let o=/^win/.test(r.platform),i=/\//g,a=/^(\w{2,}):\/\//i,s=e.exports,l=/\//g,u=/~/g,c=/~1/g,f=/~0/g,d=[/\?/g,"%3F",/\#/g,"%23"],p=[/\%23/g,"#",/\%24/g,"$",/\%26/g,"&",/\%2C/g,",",/\%40/g,"@"];t.parse=n(883).parse,t.resolve=n(883).resolve,t.cwd=function(){if(r.browser)return location.href;let e=r.cwd(),t=e.slice(-1);return"/"===t||"\\"===t?e:e+"/"},t.getProtocol=function(e){let t=a.exec(e);if(t)return t[1].toLowerCase()},t.getExtension=function(e){let t=e.lastIndexOf(".");return t>=0?e.substr(t).toLowerCase():""},t.getHash=function(e){let t=e.indexOf("#");return t>=0?e.substr(t):"#"},t.stripHash=function(e){let t=e.indexOf("#");return t>=0&&(e=e.substr(0,t)),e},t.isHttp=function(e){let t=s.getProtocol(e);return"http"===t||"https"===t||void 0===t&&r.browser},t.isFileSystemPath=function(e){if(r.browser)return!1;let t=s.getProtocol(e);return void 0===t||"file"===t},t.fromFileSystemPath=function(e){o&&(e=e.replace(/\\/g,"/")),e=encodeURI(e);for(let t=0;tdecodeURIComponent(e).replace(c,"/").replace(f,"~")))},t.safePathToPointer=function(e){return 0===e.length?"#":`#/${e.map((e=>"number"==typeof e?String(e):e.replace(u,"~0").replace(l,"~1"))).join("/")}`}},76094:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BUNDLE_ROOT:()=>ne,ERRORS_ROOT:()=>re,KEYS:()=>Ie,bundleTarget:()=>oe,decodePointer:()=>V,decodePointerFragment:()=>ae,decycle:()=>se,encodePointer:()=>le,encodePointerFragment:()=>U,extractPointerFromRef:()=>ue,extractSourceFromRef:()=>Y,getFirstPrimitiveProperty:()=>ce,getJsonPathForPosition:()=>fe,getLastPathSegment:()=>de,getLocationForJsonPath:()=>pe,hasRef:()=>M,isLocalRef:()=>B,isPlainObject:()=>j,parseTree:()=>me,parseWithPointers:()=>he,pathToPointer:()=>H,pointerToPath:()=>W,renameObjectKey:()=>be,reparentBundleTarget:()=>we,resolveExternalRef:()=>_e,resolveExternalRefWithLocation:()=>Te,resolveInlineRef:()=>J,resolveInlineRefWithLocation:()=>Z,safeParse:()=>ke,safeStringify:()=>Se,startsWith:()=>Ce,stringify:()=>Ae,toPropertyPath:()=>Pe,trapAccess:()=>je,traverse:()=>te,trimStart:()=>De});var r=n(76635);function o(e){let t="";return e.absolute&&("file"===e.protocol?(e.drive&&(t+=e.drive),t+="/"):(t+=e.protocol+"://",e.origin&&(t+=e.origin+"/"))),""===(t+=e.path.join("/"))&&(t="."),t}function i(e,t,n,r){this.message=e,this.expected=t,this.found=n,this.location=r,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,i)}!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(i,Error),i.buildMessage=function(e,t){var n={literal:function(e){return'"'+o(e.text)+'"'},class:function(e){var t,n="";for(t=0;t0){for(t=1,r=1;tG&&(G=V,Y=[]),Y.push(e))}function te(){var t;return(t=function(){var e,t,n,r,o;return e=V,(t=ne())!==s&&(n=re())!==s&&(r=ie())!==s&&(o=ae())!==s?e=t=c(t,n,r,o):(V=e,e=s),e===s&&(e=V,(t=ne())!==s&&(n=re())!==s&&(r=function(){var e;return(e=v)!==s&&(e=R()),e}())!==s?e=t=f(t,n,r):(V=e,e=s)),e}())===s&&(t=function(){var t,n,r,o;return t=V,(n=function(){var t;return e.substr(V,7).toLowerCase()===w?(t=e.substr(V,7),V+=7):(t=s,ee(x)),t===s&&(e.substr(V,5).toLowerCase()===_?(t=e.substr(V,5),V+=5):(t=s,ee(T))),t!==s&&(t=k()),t}())!==s&&(r=oe())!==s&&(o=ae())!==s?t=n=E(n,r,o):(V=t,t=s),t}())===s&&(t=function(){var e,t,n;return e=V,(t=oe())!==s&&(n=ae())!==s?e=t=O(t,n):(V=e,e=s),e}())===s&&(t=function(){var t,n;return t=V,function(){var t;return(t=function(){var t,n,r;return t=V,46===e.charCodeAt(V)?(n=M,V++):(n=s,ee(B)),n!==s&&(r=le())!==s?t=n=[n,r]:(V=t,t=s),t}())===s&&(t=v),t}()!==s&&(n=ae())!==s?t=j(n):(V=t,t=s),t}()),t}function ne(){var t,n;return e.substr(V,7).toLowerCase()===d?(n=e.substr(V,7),V+=7):(n=s,ee(p)),n!==s&&(n=h()),(t=n)===s&&(t=function(){var t;return e.substr(V,8).toLowerCase()===m?(t=e.substr(V,8),V+=8):(t=s,ee(g)),t!==s&&(t=y()),t}()),t}function re(){var t,n,r;if(t=V,n=[],(r=ue())!==s)for(;r!==s;)n.push(r),r=ue();else n=s;return(t=n!==s?e.substring(t,V):n)===s&&(t=V,(n=v)!==s&&(n=b()),t=n),t}function oe(){var t;return(t=function(){var t,n,r,o;return t=V,(n=le())===s&&(n=null),n!==s?(S.test(e.charAt(V))?(r=e.charAt(V),V++):(r=s,ee(C)),r!==s?(58===e.charCodeAt(V)?(o=A,V++):(o=s,ee(P)),o!==s&&le()!==s?t=n=N(r):(V=t,t=s)):(V=t,t=s)):(V=t,t=s),t}())===s&&(t=ie()),t}function ie(){var e;return(e=le())!==s&&(e=I()),e}function ae(){var e;return(e=function e(){var t,n,r;return t=V,(n=se())!==s&&le()!==s&&(r=e())!==s?t=n=F(n,r):(V=t,t=s),t===s&&(t=V,(n=se())!==s&&(n=L(n)),t=n),t}())!==s&&(e=D(e)),e}function se(){var t,n,r;if(t=V,n=[],(r=ue())!==s)for(;r!==s;)n.push(r),r=ue();else n=s;return(t=n!==s?e.substring(t,V):n)===s&&(t=v),t}function le(){var t;return 47===e.charCodeAt(V)?(t=$,V++):(t=s,ee(U)),t===s&&(92===e.charCodeAt(V)?(t=H,V++):(t=s,ee(z))),t}function ue(){var t;return K.test(e.charAt(V))?(t=e.charAt(V),V++):(t=s,ee(q)),t}if((n=u())!==s&&V===e.length)return n;throw n!==s&&V""!==e&&"."!==e));const n=[];for(const r of t)".."===r&&n.length&&".."!==n[n.length-1]?n.pop():".."===r&&e.absolute||n.push(r);return e.path=n,e}const u=e=>{const t=l(s(e));return t.path.pop(),o(l(t))};function c(e){return s(e).absolute}const f=(...e)=>{if(0===e.length)return".";const t=e.map(s),n=Object.assign({},t[0]);for(let r=1;r=48&&a<=57)i=16*i+a-48;else if(a>=65&&a<=70)i=16*i+a-65+10;else{if(!(a>=97&&a<=102))break;i=16*i+a-97+10}r++,o++}return o=n)return i=n,a=17;var t=e.charCodeAt(r);if(p(t)){do{r++,o+=String.fromCharCode(t),t=e.charCodeAt(r)}while(p(t));return a=15}if(h(t))return r++,o+=String.fromCharCode(t),13===t&&10===e.charCodeAt(r)&&(r++,o+="\n"),s++,u=r,a=14;switch(t){case 123:return r++,a=1;case 125:return r++,a=2;case 91:return r++,a=3;case 93:return r++,a=4;case 58:return r++,a=6;case 44:return r++,a=5;case 34:return r++,o=function(){for(var t="",o=r;;){if(r>=n){t+=e.substring(o,r),f=2;break}var i=e.charCodeAt(r);if(34===i){t+=e.substring(o,r),r++;break}if(92!==i){if(i>=0&&i<=31){if(h(i)){t+=e.substring(o,r),f=2;break}f=6}r++}else{if(t+=e.substring(o,r),++r>=n){f=2;break}switch(e.charCodeAt(r++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:var a=d(4,!0);a>=0?t+=String.fromCharCode(a):f=4;break;default:f=5}o=r}}return t}(),a=10;case 47:var g=r-1;if(47===e.charCodeAt(r+1)){for(r+=2;r=12&&e<=15);return e}:g,getToken:function(){return a},getTokenValue:function(){return o},getTokenOffset:function(){return i},getTokenLength:function(){return r-i},getTokenStartLine:function(){return l},getTokenStartCharacter:function(){return i-c},getTokenError:function(){return f}}}function p(e){return 32===e||9===e||11===e||12===e||160===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function h(e){return 10===e||13===e||8232===e||8233===e}function m(e){return e>=48&&e<=57}var g;!function(e){e.DEFAULT={allowTrailingComma:!1}}(g||(g={}));var y=d,v=function e(t,n,r){if(void 0===r&&(r=!1),function(e,t,n){return void 0===n&&(n=!1),t>=e.offset&&t0)for(var o=r.getToken();17!==o;){if(-1!==t.indexOf(o)){b();break}if(-1!==n.indexOf(o))break;o=b()}}function w(e){var t=r.getTokenValue();return e?f(t):s(t),b(),!0}return b(),17===r.getToken()?!!n.allowEmptyContent||(E(4,[],[]),!1):function e(){switch(r.getToken()){case 3:return function(){u(),b();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||E(4,[],[]),p(","),b(),4===r.getToken()&&v)break}else t&&E(6,[],[]);e()||E(4,[],[4,5]),t=!0}return c(),4!==r.getToken()?E(8,[4],[]):b(),!0}();case 1:return function(){a(),b();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||E(4,[],[]),p(","),b(),2===r.getToken()&&v)break}else t&&E(6,[],[]);(10!==r.getToken()?(E(3,[],[2,5]),0):(w(!1),6===r.getToken()?(p(":"),b(),e()||E(4,[],[2,5])):E(5,[],[2,5]),1))||E(4,[],[2,5]),t=!0}return l(),2!==r.getToken()?E(7,[2],[]):b(),!0}();case 10:return w(!0);default:return function(){switch(r.getToken()){case 11:var e=0;try{"number"!=typeof(e=JSON.parse(r.getTokenValue()))&&(E(2),e=0)}catch(e){E(2)}f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return b(),!0}()}}()?(17!==r.getToken()&&E(9,[],[]),!0):(E(4,[],[]),!1)};function w(e){switch(e){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return""}var x=n(34406);const _=`__object_order_${Math.floor(Date.now()/36e5)}__`,T=Symbol.for(_),k=(String(T),{defineProperty:(e,t,n)=>(!(t in e)&&T in e?e[T].push(t):"value"in n&&t===T&&-1===n.value.lastIndexOf(T)&&n.value.push(T),Reflect.defineProperty(e,t,n)),deleteProperty(e,t){const n=t in e,r=Reflect.deleteProperty(e,t);if(r&&n&&T in e){const n=e[T].indexOf(t);-1!==n&&e[T].splice(n,1)}return r},ownKeys:e=>T in e?e[T]:Reflect.ownKeys(e),set(e,t,n){const r=t in e,o=Reflect.set(e,t,n);return o&&!r&&T in e&&e[T].push(t),o}});function O(e,t=Reflect.ownKeys(e)){void 0!==x&&S(x)&&S(x.env);const n=new Proxy(e,k);return function(e,t){T in e?(e[T].length=0,e[T].push(...t)):Reflect.defineProperty(e,T,{configurable:!0,value:t})}(n,t),n}function S(e){return null!==e&&"object"==typeof e}var C,A,P,N;!function(e){e.Simple="simple",e.Matrix="matrix",e.Label="label",e.Form="form",e.CommaDelimited="commaDelimited",e.SpaceDelimited="spaceDelimited",e.PipeDelimited="pipeDelimited",e.DeepObject="deepObject"}(C||(C={})),function(e){e[e.Error=0]="Error",e[e.Warning=1]="Warning",e[e.Information=2]="Information",e[e.Hint=3]="Hint"}(A||(A={})),function(e){e.Article="article",e.HttpService="http_service",e.HttpServer="http_server",e.HttpOperation="http_operation",e.Model="model",e.Generic="generic",e.Unknown="unknown",e.TableOfContents="table_of_contents",e.SpectralRuleset="spectral_ruleset",e.Styleguide="styleguide",e.Image="image"}(P||(P={})),function(e){e.Json="json",e.Markdown="markdown",e.Yaml="yaml",e.Apng="apng",e.Avif="avif",e.Bmp="bmp",e.Gif="gif",e.Jpeg="jpeg",e.Png="png",e.Svg="svg",e.Webp="webp"}(N||(N={}));var I=n(27822),R=n.n(I);function j(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype||"function"==typeof e.constructor&&Function.toString.call(Object)===Function.toString.call(e.constructor)}function D(e,t,n){if(!j(e)&&!Array.isArray(e)||!(t in e))throw new ReferenceError(`Could not resolve '${n}'`)}function F(e){if("string"!=typeof e.$ref)throw new TypeError("$ref should be a string")}const L=e=>j(e)&&"$ref"in e,M=e=>L(e)&&"string"==typeof e.$ref,B=e=>e.length>0&&("#"===e||/^#\S*$/.test(e)),$=(e,t,n)=>{const r=e.toString();let o="",i=r,a=0,s=i.indexOf(t);for(;s>-1;)o+=r.substring(a,a+s)+n,i=i.substring(s+t.length,i.length),a+=s+t.length,s=i.indexOf(t);return i.length>0&&(o+=r.substring(r.length-i.length,r.length)),o},U=e=>"number"==typeof e?e:$($(e,"~","~0"),"/","~1"),H=e=>z(e),z=e=>{if(e&&"object"!=typeof e)throw new TypeError("Invalid type: path must be an array of segments.");return 0===e.length?"#":`#/${e.map(U).join("/")}`};function K(e){try{return decodeURIComponent(e)}catch(t){return e}}const q=/%[0-9a-f]+/gi,V=e=>{let t;try{t=decodeURIComponent(e)}catch(n){t=e.replace(q,K)}return $($(t,"~1","/"),"~0","~")},W=e=>G(e),G=e=>{if("string"!=typeof e)throw new TypeError("Invalid type: JSON Pointers are represented as strings.");if(0===e.length||"#"!==e[0])throw new URIError("Invalid JSON Pointer syntax; URI fragment identifiers must begin with a hash.");if(1===e.length)return[];if("/"!==e[1])throw new URIError("Invalid JSON Pointer syntax.");return(e=>{const t=e.length,n=[];let r=-1;for(;++r{if("string"!=typeof e||0===e.length||B(e))return null;const t=e.indexOf("#");return-1===t?e:e.slice(0,t)};function Q(e,t){return j(t)&&j(e)&&("summary"in e||"description"in e)?Object.assign(Object.assign(Object.assign({},t),"description"in e?{description:e.description}:null),"summary"in e?{summary:e.summary}:null):t}function*X(e,t,n){L(e.value)&&(F(e.value),yield[-1,e.value]);for(const[r,o]of t.entries())D(e.value,o,n),e.value=e.value[o],L(e.value)&&(F(e.value),yield[r,e.value])}function J(e,t){return Z(e,t).value}function Z(e,t){return function e(t,n,r,o){if(null!==Y(n))throw new ReferenceError("Cannot resolve external references");const i=W(n);let a=[...i];"#"===n&&L(t)&&(F(t),i.unshift(...W(t.$ref)));const s={value:t};for(const[l,u]of X(s,i,n)){if(r.includes(u))return{source:null,location:null!=o?o:a,value:r[r.length-1]};r.push(u);const n=e(t,u.$ref,r,a);s.value=n.value,(a=n.location).push(...i.slice(l+1))}return{source:null,location:a,value:r.length>0?Q(r[r.length-1],s.value):s.value}}(e,t,[])}const ee=(e,t,n)=>{const r={value:e,path:n};t.onEnter&&t.onEnter(r);for(const r of Object.keys(e)){const o=e[r];t.onProperty&&t.onProperty({parent:e,parentPath:n,property:r,propertyValue:o}),"object"==typeof o&&null!==o&&ee(o,t,n.concat(r))}t.onLeave&&t.onLeave(r)},te=(e,t)=>{"object"==typeof e&&null!==e&&ee(e,"function"==typeof t?{onProperty:t}:t,[])},ne="#/__bundled__",re="#/__errors__",oe=({document:e,path:t,bundleRoot:n="#/__bundled__",errorsRoot:o="#/__errors__",cloneDocument:i=!0,keyProvider:a},s)=>{if(t===n||t===o)throw new Error("Roots do not make any sense");const l=i?(0,r.cloneDeep)(e):e;return ie(l,W(n),W(o),a)(t,{[t]:!0},s)},ie=(e,t,n,o)=>{const i=new Set,a=(s,l,u,c={},f={},d={})=>{const p=W(s),h=(0,r.get)(e,p);te(u||h,{onEnter:({value:n})=>{if(M(n)&&B(n.$ref)){const u=n.$ref;if(d[u])return;if(u===s&&(c[u]="#"),c[u])return void(n.$ref=c[u]);let p,h,m,g,y;try{let n;p=W(u),o&&(n=o({document:e,path:p})),n||(n=(({document:e,path:t})=>Array.isArray((0,r.get)(e,t.slice(0,-1)))?`${t[t.length-2]}_${t[t.length-1]}`:String(t[t.length-1]))({document:e,path:p})),m=n;let a=1;for(;i.has(m);)if(m=`${n}_${++a}`,a>20)throw new Error(`Keys ${n}_2 through ${n}_20 already taken.`);i.add(m),h=[...t,m],g=H(h)}catch(e){d[u]=e instanceof Error?e.message:String(e)}if(!p||!h||!g)return;if("object"==typeof e&&null!==e&&!(y=(0,r.get)(e,p)))try{y=J(Object(e),u)}catch(e){}void 0!==y&&(c[u]=g,n.$ref=g,(0,r.has)(f,h)||(Array.isArray(y)?(0,r.set)(f,h,new Array(y.length).fill(null)):"object"==typeof y&&(0,r.setWith)(f,h,{},Object),(0,r.set)(f,h,y),l[u]||(l[u]=!0,a(s,l,y,c,f,d),l[u]=!1)))}}});const m=(0,r.get)(f,t);return m&&Object.keys(m).length&&(0,r.set)(h,t,m),(Object.keys(d).length||(0,r.has)(e,n))&&(0,r.set)(h,n,(0,r.has)(e,n)?(0,r.get)(e,n):d),h};return a},ae=e=>$($(e,"~1","/"),"~0","~"),se=(e,t)=>{const n=new WeakMap;return function e(r,o){let i;if(t&&(r=t(r)),j(r)||Array.isArray(r)){const t=n.get(r);return t?{$ref:t}:(n.set(r,H(o)),Array.isArray(r)?i=r.map(((t,n)=>e(t,[...o,String(n)]))):(i={},Object.keys(r).forEach((t=>{i[t]=e(r[t],[...o,t])}))),n.delete(r),i)}return r}(e,[])},le=e=>$($(e,"~","~0"),"//","/~1"),ue=e=>{if("string"!=typeof e||0===e.length)return null;const t=e.indexOf("#");return-1===t?null:e.slice(t)},ce=e=>{const t=y(e,!0);if(t.scan(),1!==t.getToken())return;if(t.scan(),2===t.getToken())return;if(10!==t.getToken())throw new SyntaxError("Unexpected character");const n=t.getTokenValue();if(t.scan(),6!==t.getToken())throw new SyntaxError("Colon expected");switch(t.scan(),t.getToken()){case 10:return[n,t.getTokenValue()];case 11:return[n,Number(t.getTokenValue())];case 8:return[n,!0];case 9:return[n,!1];case 7:return[n,null];case 16:throw new SyntaxError("Unexpected character");case 17:throw new SyntaxError("Unexpected end of file");default:return}},fe=({lineMap:e,ast:t},n)=>{const r=e[n.line],o=e[n.line+1];if(void 0===r)return;const i=v(t,void 0===o?r+n.character:Math.min(o,r+n.character),!0);if(void 0===i)return;const a=b(i);return 0!==a.length?a:void 0};function de(e){return ae(e.split("/").pop()||"")}const pe=({ast:e},t,n=!1)=>{const r=function(e,t,n){e:for(const r of t){const t=Number.isInteger(Number(r))?Number(r):r;if("string"==typeof t||"number"==typeof t&&"array"!==e.type){if("object"!==e.type||!Array.isArray(e.children))return n?e:void 0;for(const n of e.children)if(Array.isArray(n.children)&&n.children[0].value===String(t)&&2===n.children.length){e=n.children[1];continue e}return n?e:void 0}if("array"!==e.type||t<0||!Array.isArray(e.children)||t>=e.children.length)return n?e:void 0;e=e.children[t]}return e}(e,t,n);if(void 0!==r&&void 0!==r.range)return{range:r.range}},he=(e,t={disallowComments:!0})=>{const n=[],{ast:r,data:o,lineMap:i}=me(e,n,t);return{data:o,diagnostics:n,ast:r,lineMap:i}};function me(e,t=[],n){const r=ye(e);let o={type:"array",offset:-1,length:-1,children:[],parent:void 0},i=null,a=[];const s=new WeakMap,l=[];function u(e){"property"===o.type&&(o.length=e-o.offset,o=o.parent)}function c(e,t,n){return{start:{line:e,character:t},end:{line:e,character:t+n}}}function f(e){return o.children.push(e),e}function d(e){Array.isArray(a)?a.push(e):null!==i&&(a[i]=e)}function p(e){d(e),l.push(a),a=e,i=null}function h(){a=l.pop()}E(e,{onObjectBegin:(e,t,r,i)=>{o=f({type:"object",offset:e,length:-1,parent:o,children:[],range:c(r,i,t)}),!1===n.ignoreDuplicateKeys&&s.set(o,[]),p(function(e){return e?O({}):{}}(!0===n.preserveKeyOrder))},onObjectProperty:(e,r,l,u,d)=>{if((o=f({type:"property",offset:r,length:-1,parent:o,children:[]})).children.push({type:"string",value:e,offset:r,length:l,parent:o}),!1===n.ignoreDuplicateKeys){const n=s.get(o.parent);n&&(0!==n.length&&n.includes(e)?t.push({range:c(u,d,l),message:"DuplicateKey",severity:A.Error,path:ve(o),code:20}):n.push(e))}!0===n.preserveKeyOrder&&function(e,t){if(!(t in e))return;const n=e[T],r=n.indexOf(t);-1!==r&&(n.splice(r,1),n.push(t))}(a,e),i=e},onObjectEnd:(e,t,r,i)=>{!1===n.ignoreDuplicateKeys&&s.delete(o),o.length=e+t-o.offset,o.range&&(o.range.end.line=r,o.range.end.character=i+t),o=o.parent,u(e+t),h()},onArrayBegin:(e,t,n,r)=>{o=f({type:"array",offset:e,length:-1,parent:o,children:[],range:c(n,r,t)}),p([])},onArrayEnd:(e,t,n,r)=>{o.length=e+t-o.offset,o.range&&(o.range.end.line=n,o.range.end.character=r+t),o=o.parent,u(e+t),h()},onLiteralValue:(e,t,n,r,i)=>{f({type:ge(e),offset:t,length:n,parent:o,value:e,range:c(r,i,n)}),u(t+n),d(e)},onSeparator:(e,t)=>{"property"===o.type&&(":"===e?o.colonOffset=t:","===e&&u(t))},onError:(e,n,r,o,i)=>{t.push({range:c(o,i,r),message:w(e),severity:A.Error,code:e})}},n);const m=o.children[0];return m&&delete m.parent,{ast:m,data:a[0],lineMap:r}}function ge(e){switch(typeof e){case"boolean":return"boolean";case"number":return"number";case"string":return"string";default:return"null"}}const ye=e=>{const t=[0];let n=0;for(;n{if(!e||!Object.hasOwnProperty.call(e,t)||t===n)return e;const r={};for(const[o,i]of Object.entries(e))o===t?r[n]=i:o in r||(r[o]=i);return r};function Ee(e){return j(e)||Array.isArray(e)}function we(e,t,n){if(n.length<=1||t.length<=1)throw Error("Source/target path must not be empty and point at root");if(0===t.indexOf(n))throw Error("Target path cannot be contained within source");const r=W(t);let o=e;for(const e of r){if(!Ee(o))return;o=o[e]}if(!Ee(o))return;const i=W(n);let a=e;for(const[e,t]of i.entries()){if(!Ee(a)||t in a)return;const n=e===i.length-1?o:{};a[t]=n,a=n}delete e[r[0]],function e(t,n,r){for(const o of Object.keys(t)){const i=t[o];if("$ref"!==o)Ee(i)&&e(i,n,r);else{if("string"!=typeof i||!B(i))continue;0===i.indexOf(n)&&(t[o]=i.replace(n,r))}}}(e,t,n)}async function xe(e,t,n,r,o){let i=function(e,t){const n=Y(t);return null===n?e:c(n)?n:f(u(e),n)}(t,n);const a=ue(n)||"#",s=await e[i],l=W(a);let d=[...l];const p={value:s};for(const[n,s]of X(p,l,a)){if(r.includes(s))return{source:t,location:null!=o?o:d,value:r[r.length-1]};r.push(s);const a=await xe(e,i,s.$ref,r,d);({source:i,location:d}=a),p.value=a.value,d.push(...l.slice(n+1))}return{source:i,location:d,value:r.length>0?Q(r[r.length-1],p.value):p.value}}async function _e(e,t,n){return(await Te(e,t,n)).value}function Te(e,t,n){return xe(e,t,n,[])}const ke=(e,t)=>{if("string"!=typeof e)return e;try{const n=Oe(e);return"string"==typeof n?n:JSON.parse(e,t)}catch(e){return}},Oe=e=>{const t=Number(e);return Number.isFinite(t)?String(t)===e?t:e:NaN},Se=(e,t,n)=>{if("string"==typeof e)return e;try{return JSON.stringify(e,t,n)}catch(r){return R()(e,t,n)}},Ce=(e,t)=>{if(e instanceof Array){if(t instanceof Array){if(t.length>e.length)return!1;for(const n in t){if(!t.hasOwnProperty(n))continue;const r=parseInt(e[n]),o=parseInt(t[n]);if(isNaN(r)&&isNaN(o)){if(e[n]!==t[n])return!1}else if(r!==o)return!1}}}else{if("string"!=typeof e)return!1;if("string"==typeof t)return e.startsWith(t)}return!0},Ae=(e,t,n)=>{const r=Se(e,t,n);if(void 0===r)throw new Error("The value could not be stringified");return r};function Pe(e){return e.replace(/^(\/|#\/)/,"").split("/").map(ae).map(Ne).join(".")}function Ne(e){return e.includes(".")?`["${e.replace(/"/g,'\\"')}"]`:e}const Ie=Symbol.for(_),Re={ownKeys:e=>Ie in e?e[Ie]:Reflect.ownKeys(e)},je=e=>new Proxy(e,Re);function De(e,t){if("string"==typeof e&&"string"==typeof t)return(0,r.trimStart)(e,t);if(!(e&&Array.isArray(e)&&e.length&&t&&Array.isArray(t)&&t.length))return e;let n=0;for(const r in e)if(e.hasOwnProperty(r)){if(e[r]!==t[r])break;n++}return e.slice(n)}},82890:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(5163);class o{constructor(){this._state="deactivated"}get state(){return this._state}activate(){return r.__awaiter(this,void 0,void 0,(function*(){switch(this._state){case"activated":return;case"deactivated":try{return this._state="isActivating",yield this.doActivate(),void(this._state="activated")}catch(e){throw this._state="deactivated",e}default:throw new Error(`Cannot call activate on an Activatable in state '${this._state}'`)}}))}deactivate(){return r.__awaiter(this,void 0,void 0,(function*(){switch(this._state){case"deactivated":return;case"activated":try{return this._state="isDeactivating",yield this.doDeactivate(),void(this._state="deactivated")}catch(e){throw this._state="activated",e}default:throw new Error(`Cannot call deactivate on an Activatable in state '${this._state}'`)}}))}}t.Activatable=o,t.ActivatableCollection=class extends o{constructor(){super(...arguments),this.activatables=[]}doActivate(){return r.__awaiter(this,void 0,void 0,(function*(){const e=[];try{for(const t of this.activatables)yield t.activate(),e.push(t)}catch(t){e.reverse();for(const t of e)try{yield t.deactivate()}catch(e){}throw t}}))}doDeactivate(){return r.__awaiter(this,void 0,void 0,(function*(){for(const e of[...this.activatables].reverse())yield e.deactivate()}))}push(e){this.activatables.push(e)}}},29371:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(5163).__exportStar(n(82890),t)},52798:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(5163);t.AsyncDisposableSet=class{constructor(){this.disposables=new Set}get disposed(){return 0===this.disposables.size}dispose(){return r.__awaiter(this,void 0,void 0,(function*(){for(;!this.disposed;)yield Promise.all([...this.disposables].map((e=>e.dispose())))}))}push(e){this.disposables.add(e);const t=e.dispose.bind(e);return e.dispose=()=>r.__awaiter(this,void 0,void 0,(function*(){yield t(),this.disposables.delete(e)})),e}pushAll(e){return e.map((e=>this.push(e)))}}},9353:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncDisposer=class{constructor(e){this.dispose=e}}},54374:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(82879);t.DisposableCollection=class{constructor(){this.disposables=[]}get disposed(){return 0===this.disposables.length}dispose(){if(!this.disposed)for(;!this.disposed;)this.disposables.pop().dispose()}push(e){this.disposables.push(e);const t=e.dispose.bind(e),n=r.createDisposable((()=>{const t=this.disposables.indexOf(e);-1!==t&&this.disposables.splice(t,1)}));return e.dispose=()=>{n.dispose(),t()},n}pushAll(e){return e.map((e=>this.push(e)))}}},95081:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DisposableSet=class{constructor(){this.disposables=new Set}get disposed(){return 0===this.disposables.size}dispose(){for(const e of this.disposables)e.dispose()}push(e){this.disposables.add(e);const t=e.dispose.bind(e);return e.dispose=()=>{t(),this.disposables.delete(e)},e}pushAll(e){return e.map((e=>this.push(e)))}}},58345:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Disposer=class{constructor(e){this.dispose=e}}},82879:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createDisposable=function(e){return{dispose:e}}},38865:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(5163);r.__exportStar(n(9353),t),r.__exportStar(n(52798),t),r.__exportStar(n(58345),t),r.__exportStar(n(95081),t),r.__exportStar(n(82879),t),r.__exportStar(n(54374),t)},93749:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(68302),o=n(38865);t.EventEmitter=class{constructor(){this._emitter=new r,this._registeredListeners=new Map}on(e,t){let n=this._registeredListeners.get(e);if(void 0===n)n=new WeakSet,this._registeredListeners.set(e,n);else if(n.has(t))throw new Error(`Double-registered for '${e}' event.`);const r=(...e)=>{try{t(...e)}catch(e){console.error(e)}};return n.add(t),this._emitter.on(String(e),r),o.createDisposable((()=>{var o;null===(o=n)||void 0===o||o.delete(t),this._emitter.off(String(e),r)}))}emit(e,...t){this._emitter.trigger(String(e),t)}get hasListeners(){const e=this._emitter.getListeners(/.*/);for(const t in e){if(!{}.hasOwnProperty.call(e,t))continue;const n=e[t];if(void 0!==n&&n.length>0)return!0}return!1}dispose(){this._registeredListeners.clear(),this._emitter.removeAllListeners()}createEmitGroup(){const e=this,t=[];let n=!1;return{get queueCount(){return t.length},emit(r,...o){n?e.emit(r,...o):t.push([r,o])},flush(){for(const[n,r]of t)try{e.emit(n,...r)}catch(e){}this.reset(),n=!0},reset(){t.length=0,n=!1}}}}},86086:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(5163).__exportStar(n(93749),t)},68642:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(5163);r.__exportStar(n(29371),t),r.__exportStar(n(38865),t),r.__exportStar(n(86086),t)},94169:(e,t)=>{"use strict";var n;t.__esModule=!0,(n=t.DiagnosticSeverity||(t.DiagnosticSeverity={}))[n.Error=0]="Error",n[n.Warning=1]="Warning",n[n.Information=2]="Information",n[n.Hint=3]="Hint"},77086:(e,t)=>{"use strict";var n;t.__esModule=!0,(n=t.HttpParamStyles||(t.HttpParamStyles={})).Simple="simple",n.Matrix="matrix",n.Label="label",n.Form="form",n.CommaDelimited="commaDelimited",n.SpaceDelimited="spaceDelimited",n.PipeDelimited="pipeDelimited",n.DeepObject="deepObject"},92749:(e,t,n)=>{"use strict";function r(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}t.__esModule=!0,r(n(77086)),r(n(31441)),r(n(94169)),r(n(88617))},31441:(e,t)=>{"use strict";t.__esModule=!0},88617:(e,t)=>{"use strict";var n,r;t.__esModule=!0,(r=t.NodeType||(t.NodeType={})).Article="article",r.HttpService="http_service",r.HttpServer="http_server",r.HttpOperation="http_operation",r.Model="model",r.Generic="generic",r.Unknown="unknown",r.TableOfContents="table_of_contents",r.SpectralRuleset="spectral_ruleset",(n=t.NodeFormat||(t.NodeFormat={})).Json="json",n.Markdown="markdown",n.Yaml="yaml"},89001:(e,t)=>{"use strict";function n(e){return null==e}Object.defineProperty(t,"__esModule",{value:!0}),t.isNothing=n,t.isObject=function(e){return"object"==typeof e&&null!==e},t.toArray=function(e){return Array.isArray(e)?e:n(e)?[]:[e]},t.extend=function(e,t){var n,r,o,i;if(t)for(n=0,r=(i=Object.keys(t)).length;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(89001),o=n(94196),i=n(45898),a=n(19096),s=Object.prototype.toString,l=Object.prototype.hasOwnProperty,u=9,c=10,f=13,d=32,p=33,h=34,m=35,g=37,y=38,v=39,b=42,E=44,w=45,x=58,_=61,T=62,k=63,O=64,S=91,C=93,A=96,P=123,N=124,I=125,R={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},j=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function D(e){var t,n,i;if(t=e.toString(16).toUpperCase(),e<=255)n="x",i=2;else if(e<=65535)n="u",i=4;else{if(!(e<=4294967295))throw new o("code point within a string may not be greater than 0xFFFFFFFF");n="U",i=8}return"\\"+n+r.repeat("0",i-t.length)+t}function F(e){this.schema=e.schema||i,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=r.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=function(e,t){var n,r,o,i,a,s,u;if(null===t)return{};for(n={},o=0,i=(r=Object.keys(t)).length;o-1&&n>=e.flowLevel;switch(function(e,t,n,r,o){var i,a,s,l,u=!1,f=!1,d=-1!==r,R=-1,j=$(l=e.charCodeAt(0))&&65279!==l&&!B(l)&&l!==w&&l!==k&&l!==x&&l!==E&&l!==S&&l!==C&&l!==P&&l!==I&&l!==m&&l!==y&&l!==b&&l!==p&&l!==N&&l!==_&&l!==T&&l!==v&&l!==h&&l!==g&&l!==O&&l!==A&&!B(e.charCodeAt(e.length-1));if(t)for(i=0;i0?e.charCodeAt(i-1):null,j=j&&U(a,s)}else{for(i=0;ir&&" "!==e[R+1],R=i);else if(!$(a))return W;s=i>0?e.charCodeAt(i-1):null,j=j&&U(a,s)}f=f||d&&i-R-1>r&&" "!==e[R+1]}return u||f?n>9&&H(e)?W:f?V:q:j&&!o(e)?z:K}(t,s,e.indent,a,(function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n"+Y(t,e.indent)+Q(L(function(e,t){for(var n,r,o,i=/(\n+)([^\n]*)/g,a=(o=-1!==(o=e.indexOf("\n"))?o:e.length,i.lastIndex=o,X(e.slice(0,o),t)),s="\n"===e[0]||" "===e[0];r=i.exec(e);){var l=r[1],u=r[2];n=" "===u[0],a+=l+(s||n||""===u?"":"\n")+X(u,t),s=n}return a}(t,a),i));case W:return'"'+function(e){for(var t,n,r,o="",i=0;i=55296&&t<=56319&&(n=e.charCodeAt(i+1))>=56320&&n<=57343?(o+=D(1024*(t-55296)+n-56320+65536),i++):o+=!(r=R[t])&&$(t)?e[i]:r||D(t);return o}(t)+'"';default:throw new o("impossible error: invalid scalar style")}}()}function Y(e,t){var n=H(e)?String(t):"",r="\n"===e[e.length-1];return n+(!r||"\n"!==e[e.length-2]&&"\n"!==e?r?"":"-":"+")+"\n"}function Q(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function X(e,t){if(""===e||" "===e[0])return e;for(var n,r,o=/ [^ ]/g,i=0,a=0,s=0,l="";n=o.exec(e);)(s=n.index)-i>t&&(r=a>i?a:s,l+="\n"+e.slice(i,r),i=r+1),a=s;return l+="\n",e.length-i>t&&a>i?l+=e.slice(i,a)+"\n"+e.slice(a+1):l+=e.slice(i),l.slice(1)}function J(e,t,n){var r,i,a,u,c,f;for(a=0,u=(i=n?e.explicitTypes:e.implicitTypes).length;a tag resolver accepts not "'+f+'" style');r=c.represent[f](t,f)}e.dump=r}return!0}return!1}function Z(e,t,n,r,i,a){e.tag=null,e.dump=n,J(e,n,!1)||J(e,n,!0);var l=s.call(e.dump);r&&(r=e.flowLevel<0||e.flowLevel>t);var u,f,d="[object Object]"===l||"[object Array]"===l;if(d&&(f=-1!==(u=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||f||2!==e.indent&&t>0)&&(i=!1),f&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(d&&f&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),"[object Object]"===l)r&&0!==Object.keys(e.dump).length?(function(e,t,n,r){var i,a,s,l,u,f,d="",p=e.tag,h=Object.keys(n);if(!0===e.sortKeys)h.sort();else if("function"==typeof e.sortKeys)h.sort(e.sortKeys);else if(e.sortKeys)throw new o("sortKeys must be a boolean or a function");for(i=0,a=h.length;i1024)&&(e.dump&&c===e.dump.charCodeAt(0)?f+="?":f+="? "),f+=e.dump,u&&(f+=M(e,t)),Z(e,t+1,l,!0,u)&&(e.dump&&c===e.dump.charCodeAt(0)?f+=":":f+=": ",d+=f+=e.dump));e.tag=p,e.dump=d||"{}"}(e,t,e.dump,i),f&&(e.dump="&ref_"+u+e.dump)):(function(e,t,n){var r,o,i,a,s,l="",u=e.tag,c=Object.keys(n);for(r=0,o=c.length;r1024&&(s+="? "),s+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Z(e,t,a,!1,!1)&&(l+=s+=e.dump));e.tag=u,e.dump="{"+l+"}"}(e,t,e.dump),f&&(e.dump="&ref_"+u+" "+e.dump));else if("[object Array]"===l){var p=e.noArrayIndent&&t>0?t-1:t;r&&0!==e.dump.length?(function(e,t,n,r){var o,i,a="",s=e.tag;for(o=0,i=n.length;o "+e.dump)}return!0}function ee(e,t){var n,r,o=[],i=[];for(te(e,o,i),n=0,r=i.length;n{"use strict";class t{constructor(e,t=null,n=!1){this.name="YAMLException",this.reason=e,this.mark=t,this.message=this.toString(!1),this.isWarning=n}static isInstance(e){if(null!=e&&e.getClassIdentifier&&"function"==typeof e.getClassIdentifier)for(let n of e.getClassIdentifier())if(n==t.CLASS_IDENTIFIER)return!0;return!1}getClassIdentifier(){return[].concat(t.CLASS_IDENTIFIER)}toString(e=!1){var t;return t="JS-YAML: "+(this.reason||"(unknown reason)"),!e&&this.mark&&(t+=" "+this.mark.toString()),t}}t.CLASS_IDENTIFIER="yaml-ast-parser.YAMLException",e.exports=t},23139:(e,t,n)=>{"use strict";function r(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0});var o=n(65258);t.load=o.load,t.loadAll=o.loadAll,t.safeLoad=o.safeLoad,t.safeLoadAll=o.safeLoadAll;var i=n(86265);t.dump=i.dump,t.safeDump=i.safeDump,t.YAMLException=n(94196),r(n(55991)),r(n(76206))},65258:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(55991),o=n(89001),i=n(94196),a=n(65324),s=n(19096),l=n(45898);var u=Object.prototype.hasOwnProperty,c=1,f=2,d=3,p=4,h=1,m=2,g=3,y=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,v=/[\x85\u2028\u2029]/,b=/[,\[\]\{\}]/,E=/^(?:!|!!|![a-z\-]+!)$/i,w=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function x(e){return 10===e||13===e}function _(e){return 9===e||32===e}function T(e){return 9===e||32===e||10===e||13===e}function k(e){return 44===e||91===e||93===e||123===e||125===e}function O(e){var t;return 48<=e&&e<=57?e-48:97<=(t=32|e)&&t<=102?t-97+10:-1}function S(e){return 120===e?2:117===e?4:85===e?8:0}function C(e){return 48<=e&&e<=57?e-48:-1}function A(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}for(var P,N=new Array(256),I=new Array(256),R=new Array(256),j=new Array(256),D=0;D<256;D++)j[D]=I[D]=48===(P=D)?"\0":97===P?"":98===P?"\b":116===P||9===P?"\t":110===P?"\n":118===P?"\v":102===P?"\f":114===P?"\r":101===P?"":32===P?" ":34===P?'"':47===P?"/":92===P?"\\":78===P?"
":95===P?" ":76===P?"\u2028":80===P?"\u2029":"",N[D]=I[D]?1:0,R[D]=1,N[D]||(j[D]="\\"+String.fromCharCode(D));class F{constructor(e,t){this.errorMap={},this.errors=[],this.lines=[],this.input=e,this.filename=t.filename||null,this.schema=t.schema||l,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.allowAnyEscape=t.allowAnyEscape||!1,this.ignoreDuplicateKeys=t.ignoreDuplicateKeys||!1,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}}function L(e,t,n=!1){return new i(t,new a(e.filename,e.input,e.position,e.line,e.position-e.lineStart),n)}function M(e,t,n,r=!1,o=!1){var s=function(e,t){for(var n,r=0;rt);r++)n=e.lines[r];return n||{start:0,line:0}}(e,t);if(s){var l=n+t;if(!e.errorMap[l]){var u=new a(e.filename,e.input,t,s.line,t-s.start);o&&(u.toLineEnd=!0);var c=new i(n,u,r);e.errors.push(c)}}}function B(e,t){var n=L(e,t),r=n.message+n.mark.position;if(!e.errorMap[r]){e.errors.push(n),e.errorMap[r]=1;for(var o=e.position;;){if(e.position>=e.input.length-1)return;var i=e.input.charAt(e.position);if("\n"==i)return e.position--,void(e.position==o&&(e.position+=1));if("\r"==i)return e.position--,void(e.position==o&&(e.position+=1));e.position++}}}function $(e,t){var n=L(e,t);e.onWarning&&e.onWarning.call(null,n)}var U={YAML:function(e,t,n){var r,o,i;null!==e.version&&B(e,"duplication of %YAML directive"),1!==n.length&&B(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&B(e,"ill-formed argument of the YAML directive"),o=parseInt(r[1],10),i=parseInt(r[2],10),1!==o&&B(e,"found incompatible YAML document (version 1.2 is required)"),e.version=n[0],e.checkLineBreaks=i<2,2!==i&&B(e,"found incompatible YAML document (version 1.2 is required)")},TAG:function(e,t,n){var r,o;2!==n.length&&B(e,"TAG directive accepts exactly two arguments"),r=n[0],o=n[1],E.test(r)||B(e,"ill-formed tag handle (first argument) of the TAG directive"),u.call(e.tagMap,r)&&B(e,'there is a previously declared suffix for "'+r+'" tag handle'),w.test(o)||B(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[r]=o}};function H(e,t,n,r){var o,i,a,s,l=e.result;if(-1==l.startPosition&&(l.startPosition=t),t<=n){if(s=e.input.slice(t,n),r)for(o=0,i=s.length;o{t.key&&t.key.value===(a.key&&a.key.value)&&(M(e,a.key.startPosition,"duplicate key"),M(e,t.key.startPosition,"duplicate key"))})),t.mappings.push(a),t.endPosition=i?i.endPosition:o.endPosition+1,t}}function K(e){var t;10===(t=e.input.charCodeAt(e.position))?e.position++:13===t?(e.position++,10===e.input.charCodeAt(e.position)&&e.position++):B(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.lines.push({start:e.lineStart,line:e.line})}function q(e,t,n){for(var r=0,o=e.input.charCodeAt(e.position);0!==o;){for(;_(o);)9===o&&e.errors.push(L(e,"Using tabs can lead to unpredictable results",!0)),o=e.input.charCodeAt(++e.position);if(t&&35===o)do{o=e.input.charCodeAt(++e.position)}while(10!==o&&13!==o&&0!==o);if(!x(o))break;for(K(e),o=e.input.charCodeAt(e.position),r++,e.lineIndent=0;32===o;)e.lineIndent++,o=e.input.charCodeAt(++e.position)}return-1!==n&&0!==r&&e.lineIndent1&&(t.value+=o.repeat("\n",n-1))}function G(e,t){var n,o,i=e.tag,a=e.anchor,s=r.newItems(),l=!1;for(null!==e.anchor&&(s.anchorId=e.anchor,e.anchorMap[e.anchor]=s),s.startPosition=e.position,o=e.input.charCodeAt(e.position);0!==o&&45===o&&T(e.input.charCodeAt(e.position+1));)if(l=!0,e.position++,q(e,!0,-1)&&e.lineIndent<=t)s.items.push(null),o=e.input.charCodeAt(e.position);else if(n=e.line,X(e,t,d,!1,!0),e.result&&(e.result.parent=s,s.items.push(e.result)),q(e,!0,-1),o=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==o)B(e,"bad indentation of a sequence entry");else if(e.lineIndentt?D=1:e.lineIndent===t?D=0:e.lineIndentt?D=1:e.lineIndent===t?D=0:e.lineIndent0;)if(x(s=e.input.charCodeAt(--e.position))){e.position++;break}}}else 63===s?(m&&(z(e,c,0,d,null),d=h=null),g=!0,m=!0,i=!0):m?(m=!1,i=!0):B(e,"incomplete explicit mapping pair; a key node is missed"),e.position+=1,s=o;if((e.line===a||e.lineIndent>t)&&(X(e,t,p,!0,i)&&(m?d=e.result:h=e.result),m||(z(e,c,0,d,h),d=h=null),q(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)B(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===a?B(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?B(e,"repeat of an indentation width identifier"):(c=t+a-1,u=!0)}if(_(s)){do{s=e.input.charCodeAt(++e.position)}while(_(s));if(35===s)do{s=e.input.charCodeAt(++e.position)}while(!x(s)&&0!==s)}for(;0!==s;){for(K(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!u||e.lineIndentc&&(c=e.lineIndent),x(s))f++;else{if(e.lineIndent0){for(i=s,a=0;i>0;i--)(s=O(l=e.input.charCodeAt(++e.position)))>=0?a=(a<<4)+s:B(e,"expected hexadecimal character");u.value+=A(a),e.position++}else B(e,"unknown escape sequence");n=o=e.position}else x(l)?(H(e,n,o,!0),W(0,u,q(e,!1,t)),n=o=e.position):e.position===e.lineStart&&V(e)?B(e,"unexpected end of the document within a double quoted scalar"):(e.position++,o=e.position)}B(e,"unexpected end of the stream within a double quoted scalar")}(e,w)?L=!0:function(e){var t,n,o;if(e.length,e.input,42!==(o=e.input.charCodeAt(e.position)))return!1;for(o=e.input.charCodeAt(++e.position),t=e.position;0!==o&&!T(o)&&!k(o);)o=e.input.charCodeAt(++e.position);return e.position<=t&&(B(e,"name of an alias node must contain at least one character"),e.position=t+1),n=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(n)||(B(e,'unidentified alias "'+n+'"'),e.position<=t&&(e.position=t+1)),e.result=r.newAnchorRef(n,t,e.position,e.anchorMap[n]),q(e,!0,-1),!0}(e)?(L=!0,null===e.tag&&null===e.anchor||B(e,"alias node should not have any properties")):function(e,t,n){var o,i,a,s,l,u,c,f,d=e.kind,p=e.result,h=r.newScalar();if(h.plainScalar=!0,e.result=h,T(f=e.input.charCodeAt(e.position))||k(f)||35===f||38===f||42===f||33===f||124===f||62===f||39===f||34===f||37===f||64===f||96===f)return!1;if((63===f||45===f)&&(T(o=e.input.charCodeAt(e.position+1))||n&&k(o)))return!1;for(e.kind="scalar",i=a=e.position,s=!1;0!==f;){if(58===f){if(T(o=e.input.charCodeAt(e.position+1))||n&&k(o))break}else if(35===f){if(T(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&V(e)||n&&k(f))break;if(x(f)){if(l=e.line,u=e.lineStart,c=e.lineIndent,q(e,!1,-1),e.lineIndent>=t){s=!0,f=e.input.charCodeAt(e.position);continue}e.position=a,e.line=l,e.lineStart=u,e.lineIndent=c;break}}if(s&&(H(e,i,a,!1),W(0,h,e.line-l),i=a=e.position,s=!1),_(f)||(a=e.position+1),f=e.input.charCodeAt(++e.position),e.position>=e.input.length)return!1}return H(e,i,a,!1),-1!=e.result.startPosition?(h.rawValue=e.input.substring(h.startPosition,h.endPosition),!0):(e.kind=d,e.result=p,!1)}(e,w,c===n)&&(L=!0,null===e.tag&&(e.tag="?")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result,e.result.anchorId=e.anchor)):0===D&&(L=y&&G(e,P))),null!==e.tag&&"!"!==e.tag)if("!include"==e.tag)e.result||(e.result=r.newScalar(),e.result.startPosition=e.position,e.result.endPosition=e.position,B(e,"!include without value")),e.result.kind=r.Kind.INCLUDE_REF;else if("?"===e.tag)for(v=0,b=e.implicitTypes.length;v tag; it should be "'+E.kind+'", not "'+e.kind+'"'),E.resolve(e.result)?(e.result=E.construct(e.result),null!==e.anchor&&(e.result.anchorId=e.anchor,e.anchorMap[e.anchor]=e.result)):B(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):M(e,$,"unknown tag <"+e.tag+">",!1,!0);return null!==e.tag||null!==e.anchor||L}function J(e){var t,n,r,o,i=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(o=e.input.charCodeAt(e.position))&&(q(e,!0,-1),o=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==o));){for(a=!0,o=e.input.charCodeAt(++e.position),t=e.position;0!==o&&!T(o);)o=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&B(e,"directive name must not be less than one character in length");0!==o;){for(;_(o);)o=e.input.charCodeAt(++e.position);if(35===o){do{o=e.input.charCodeAt(++e.position)}while(0!==o&&!x(o));break}if(x(o))break;for(t=e.position;0!==o&&!T(o);)o=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==o&&K(e),u.call(U,n)?U[n](e,n,r):($(e,'unknown document directive "'+n+'"'),e.position++)}q(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,q(e,!0,-1)):a&&B(e,"directives end mark is expected"),X(e,e.lineIndent-1,p,!1,!0),q(e,!0,-1),e.checkLineBreaks&&v.test(e.input.slice(i,e.position))&&$(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&V(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,q(e,!0,-1)):e.position0&&(i[a-1].endPosition=n);for(let e of i)e.errors=r.errors,e.startPosition>e.endPosition&&(e.startPosition=e.endPosition);return i}function ee(e,t,n={}){var r,o,i=Z(e,n);for(r=0,o=i.length;r