diff --git a/astro.config.mjs b/astro.config.mjs index 86b18213..f0a6fe2c 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -25,6 +25,10 @@ export default defineConfig({ site: 'https://docs.scalekit.com', redirects, integrations: [ + react({ + include: ['**/*.tsx', '**/*.jsx'], + experimentalReactChildren: true, + }), starlight({ title: 'Scalekit Docs', routeMiddleware: './src/routeData.ts', @@ -203,9 +207,9 @@ export default defineConfig({ }, ], }), - react(), vue({ - jsx: true, + include: ['**/*.vue'], + jsx: false, template: { compilerOptions: { isCustomElement: (tag) => tag.includes('-'), @@ -234,11 +238,16 @@ export default defineConfig({ alias: { '@': path.resolve('./src'), '@components': path.resolve('./src/components'), + '@styles': path.resolve('./src/styles'), }, + dedupe: ['react', 'react-dom'], + conditions: ['import', 'module', 'browser', 'default'], }, optimizeDeps: { - include: ['vue'], - exclude: [], + include: ['vue', 'react', 'react-dom', '@sampleapp.ai/sdk'], + esbuildOptions: { + jsx: 'automatic', + }, }, // Provide a safe fallback for libraries that reference the CommonJS // global `__dirname` (e.g. canvaskit-wasm used by astro-og-canvas). @@ -255,6 +264,7 @@ export default defineConfig({ output: { manualChunks(id) { if (id.includes('@scalar')) return 'scalar' + if (id.includes('react') || id.includes('react-dom')) return 'react-vendor' }, }, }, diff --git a/package.json b/package.json index 6b522d05..bcf856bd 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "@fontsource/jetbrains-mono": "^5.2.8", "@hideoo/starlight-plugins-docs-components": "^0.4.1", "@iconify/json": "^2.2.425", + "@sampleapp.ai/sdk": "^1.0.36", "@scalar/api-reference": "^1.40.9", "@scalar/astro": "^0.1.6", "@tailwindcss/vite": "^4.1.18", @@ -41,7 +42,7 @@ "astro": "^5.16.6", "astro-d2": "^0.8.1", "astro-loader-github-releases": "^2.1.1", - "astro-og-canvas": "^0.10.0", + "astro-og-canvas": "^0.9.0", "canvaskit-wasm": "0.39.1", "pnpm": "^10.27.0", "react": "^19.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b8af41b..3543dee5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,6 +58,9 @@ importers: '@iconify/json': specifier: ^2.2.425 version: 2.2.425 + '@sampleapp.ai/sdk': + specifier: ^1.0.36 + version: 1.0.36(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(monaco-editor@0.55.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.1.18)(zod@4.3.5) '@scalar/api-reference': specifier: ^1.40.9 version: 1.40.9(jwt-decode@4.0.0)(tailwindcss@4.1.18)(typescript@5.9.3) @@ -86,8 +89,8 @@ importers: specifier: ^2.1.1 version: 2.1.1(astro@5.16.6(@netlify/blobs@10.5.0)(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.49.0)(typescript@5.9.3)(yaml@2.8.2)) astro-og-canvas: - specifier: ^0.10.0 - version: 0.10.0(astro@5.16.6(@netlify/blobs@10.5.0)(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.49.0)(typescript@5.9.3)(yaml@2.8.2)) + specifier: ^0.9.0 + version: 0.9.0(astro@5.16.6(@netlify/blobs@10.5.0)(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.49.0)(typescript@5.9.3)(yaml@2.8.2)) canvaskit-wasm: specifier: 0.39.1 version: 0.39.1 @@ -1208,6 +1211,12 @@ packages: '@floating-ui/dom@1.7.4': resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} @@ -1495,6 +1504,16 @@ packages: '@cfworker/json-schema': optional: true + '@monaco-editor/loader@1.7.0': + resolution: {integrity: sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==} + + '@monaco-editor/react@4.7.0': + resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@netlify/ai@0.3.5': resolution: {integrity: sha512-7suwHOBy9s14yeWRxt+w3Zh6Rrx8gX7zP/xmsxqxLyJlcBykWm6siBJs2mMtJgbWvcrgI5BEgNLh5qfXlTCsRQ==} engines: {node: '>=20.6.1'} @@ -1925,153 +1944,674 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@replit/codemirror-css-color-picker@6.3.0': - resolution: {integrity: sha512-19biDANghUm7Fz7L1SNMIhK48tagaWuCOHj4oPPxc7hxPGkTVY2lU/jVZ8tsbTKQPVG7BO2CBDzs7CBwb20t4A==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 + '@radix-ui/primitive@1.0.1': + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - '@repomix/strip-comments@2.4.2': - resolution: {integrity: sha512-7a18ODb043eszMBr6mpVWz802xIRMzdmptarVxTtnMIW7ZQzba/v8jLp3kcHUHb76uRkyJRPpGSwdm7+8GmsEA==} - engines: {node: '>=10'} + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} - '@repomix/tree-sitter-wasms@0.1.16': - resolution: {integrity: sha512-CIINozBWFwjhH4DQALN/b4n1S08fHhXQOdjX2G7s4w+Urew37aLU0AHVyCjHM5Pbnh63tDYt4YyUkS6vRUV38A==} + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} + 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 - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + 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 - '@rolldown/pluginutils@1.0.0-beta.34': - resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} + 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 - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} - engines: {node: '>=14.0.0'} + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + '@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: - rollup: + '@types/react': + optional: true + '@types/react-dom': optional: true - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} + '@radix-ui/react-compose-refs@1.0.1': + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: - rollup: + '@types/react': optional: true - '@rollup/rollup-android-arm-eabi@4.49.0': - resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==} - cpu: [arm] - os: [android] + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-android-arm64@4.49.0': - resolution: {integrity: sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==} - cpu: [arm64] - os: [android] + '@radix-ui/react-context@1.0.1': + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-darwin-arm64@4.49.0': - resolution: {integrity: sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==} - cpu: [arm64] - os: [darwin] + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-darwin-x64@4.49.0': - resolution: {integrity: sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==} - cpu: [x64] - os: [darwin] + '@radix-ui/react-dialog@1.0.5': + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-freebsd-arm64@4.49.0': - resolution: {integrity: sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==} - cpu: [arm64] - os: [freebsd] + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + 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 - '@rollup/rollup-freebsd-x64@4.49.0': - resolution: {integrity: sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==} - cpu: [x64] - os: [freebsd] + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.49.0': - resolution: {integrity: sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==} - cpu: [arm] - os: [linux] + '@radix-ui/react-dismissable-layer@1.0.5': + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-arm-musleabihf@4.49.0': - resolution: {integrity: sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==} - cpu: [arm] - os: [linux] + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + 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 - '@rollup/rollup-linux-arm64-gnu@4.49.0': - resolution: {integrity: sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==} - cpu: [arm64] - os: [linux] + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} + 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 - '@rollup/rollup-linux-arm64-musl@4.49.0': - resolution: {integrity: sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==} - cpu: [arm64] - os: [linux] + '@radix-ui/react-focus-guards@1.0.1': + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.49.0': - resolution: {integrity: sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==} - cpu: [loong64] - os: [linux] + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-linux-ppc64-gnu@4.49.0': - resolution: {integrity: sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==} - cpu: [ppc64] - os: [linux] + '@radix-ui/react-focus-scope@1.0.4': + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-riscv64-gnu@4.49.0': - resolution: {integrity: sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==} - cpu: [riscv64] - os: [linux] + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + 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 - '@rollup/rollup-linux-riscv64-musl@4.49.0': - resolution: {integrity: sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==} - cpu: [riscv64] - os: [linux] + '@radix-ui/react-id@1.0.1': + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-linux-s390x-gnu@4.49.0': - resolution: {integrity: sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==} - cpu: [s390x] - os: [linux] + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-linux-x64-gnu@4.49.0': - resolution: {integrity: sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==} - cpu: [x64] - os: [linux] + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} + 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 - '@rollup/rollup-linux-x64-musl@4.49.0': - resolution: {integrity: sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==} - cpu: [x64] - os: [linux] + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + 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 - '@rollup/rollup-win32-arm64-msvc@4.49.0': - resolution: {integrity: sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==} - cpu: [arm64] - os: [win32] + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + 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 - '@rollup/rollup-win32-ia32-msvc@4.49.0': - resolution: {integrity: sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==} - cpu: [ia32] - os: [win32] + '@radix-ui/react-portal@1.0.4': + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-win32-x64-msvc@4.49.0': - resolution: {integrity: sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==} - cpu: [x64] - os: [win32] + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + 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 - '@scalar/analytics-client@1.0.1': - resolution: {integrity: sha512-ai4DJuxsNLUEgJIlYDE3n8/oF47M31Rgjz3LxbefzejxE8LiidUud/fcEzMYtdxqJYi3ketzhSbTWK0o6gg4mQ==} - engines: {node: '>=20'} + '@radix-ui/react-presence@1.0.1': + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@scalar/api-client@2.17.1': - resolution: {integrity: sha512-KSH7L9ixzIlX12ZiUtMsFgGnWcdKMJVdR/cjFkajWIGoAtMGcltTHXPYejwy+6mvuNZ3p9lrHsTvUDwFPeO9bA==} - engines: {node: '>=20'} + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + 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 - '@scalar/api-reference@1.40.9': + '@radix-ui/react-primitive@1.0.3': + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + 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 + + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} + 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 + + '@radix-ui/react-slot@1.0.2': + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + 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 + + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + 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 + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@replit/codemirror-css-color-picker@6.3.0': + resolution: {integrity: sha512-19biDANghUm7Fz7L1SNMIhK48tagaWuCOHj4oPPxc7hxPGkTVY2lU/jVZ8tsbTKQPVG7BO2CBDzs7CBwb20t4A==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + + '@repomix/strip-comments@2.4.2': + resolution: {integrity: sha512-7a18ODb043eszMBr6mpVWz802xIRMzdmptarVxTtnMIW7ZQzba/v8jLp3kcHUHb76uRkyJRPpGSwdm7+8GmsEA==} + engines: {node: '>=10'} + + '@repomix/tree-sitter-wasms@0.1.16': + resolution: {integrity: sha512-CIINozBWFwjhH4DQALN/b4n1S08fHhXQOdjX2G7s4w+Urew37aLU0AHVyCjHM5Pbnh63tDYt4YyUkS6vRUV38A==} + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rolldown/pluginutils@1.0.0-beta.34': + resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} + + '@rollup/pluginutils@5.2.0': + resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.49.0': + resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.49.0': + resolution: {integrity: sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.49.0': + resolution: {integrity: sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.49.0': + resolution: {integrity: sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.49.0': + resolution: {integrity: sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.49.0': + resolution: {integrity: sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.49.0': + resolution: {integrity: sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.49.0': + resolution: {integrity: sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.49.0': + resolution: {integrity: sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.49.0': + resolution: {integrity: sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.49.0': + resolution: {integrity: sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.49.0': + resolution: {integrity: sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.49.0': + resolution: {integrity: sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.49.0': + resolution: {integrity: sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.49.0': + resolution: {integrity: sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.49.0': + resolution: {integrity: sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.49.0': + resolution: {integrity: sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.49.0': + resolution: {integrity: sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.49.0': + resolution: {integrity: sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.49.0': + resolution: {integrity: sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==} + cpu: [x64] + os: [win32] + + '@sampleapp.ai/sdk@1.0.36': + resolution: {integrity: sha512-s5Bou1+/OwGhVkUfz0PROQqE1pcWf+F6I23Djw94aqWQX2B8QpCiytiK1CJ1gDdyVYeWJQ3ILmv/tdl463Gq5w==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@scalar/analytics-client@1.0.1': + resolution: {integrity: sha512-ai4DJuxsNLUEgJIlYDE3n8/oF47M31Rgjz3LxbefzejxE8LiidUud/fcEzMYtdxqJYi3ketzhSbTWK0o6gg4mQ==} + engines: {node: '>=20'} + + '@scalar/api-client@2.17.1': + resolution: {integrity: sha512-KSH7L9ixzIlX12ZiUtMsFgGnWcdKMJVdR/cjFkajWIGoAtMGcltTHXPYejwy+6mvuNZ3p9lrHsTvUDwFPeO9bA==} + engines: {node: '>=20'} + + '@scalar/api-reference@1.40.9': resolution: {integrity: sha512-7Rojl1WjC0+CpGJ/bCm52OkhoodlEUT4Jqld+tvNXUkv6XpUgqbqecImZACx4FU+fxooubQ7PpA7Q/gqthXU0A==} engines: {node: '>=20'} @@ -2345,7 +2885,34 @@ packages: '@types/babel__traverse@7.28.0': resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/debug@4.1.12': + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/estree-jsx@1.0.5': @@ -2360,6 +2927,9 @@ packages: '@types/har-format@1.2.16': resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -2417,6 +2987,9 @@ packages: '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -2924,8 +3497,8 @@ packages: peerDependencies: astro: '>=4.14.0 <6.0.0' - astro-og-canvas@0.10.0: - resolution: {integrity: sha512-JkSIYEo2sTJiuht7iVQ2CNT38+rrlvkRpJkqjA58WDFHdymgWktoT9zLkjEkn2u9K2zeZx2GTev16IBJzIoZNQ==} + astro-og-canvas@0.9.0: + resolution: {integrity: sha512-hAQUyzZON5QI9q4AG95/V9s1E2zDJQLMGlR3jN9S/SM2nkrbMRXJoWsBPe+mQY9/csuQS1zZE+ldhmg+QG9Kxg==} peerDependencies: astro: ^5.0.0 || ^6.0.0-alpha @@ -3089,6 +3662,9 @@ packages: caniuse-lite@1.0.30001737: resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} + canvas-confetti@1.9.4: + resolution: {integrity: sha512-yxQbJkAVrFXWNbTUjPqjF7G+g6pDotOUHGbkZq2NELZUMDpiJ85rIEazVb8GTaAptNW2miJAXbs1BtioA251Pw==} + canvaskit-wasm@0.39.1: resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} @@ -3113,12 +3689,21 @@ packages: character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} @@ -3144,6 +3729,9 @@ packages: cjs-module-lexer@1.4.3: resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -3172,6 +3760,12 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + cmdk@1.0.0: + resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -3201,6 +3795,9 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -3358,6 +3955,50 @@ packages: typescript: optional: true + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -3383,6 +4024,9 @@ packages: decache@4.6.2: resolution: {integrity: sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==} + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} @@ -3428,6 +4072,9 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + detective-amd@6.0.1: resolution: {integrity: sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g==} engines: {node: '>=18'} @@ -3498,6 +4145,9 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -3508,6 +4158,9 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + dompurify@3.2.7: + resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} @@ -3693,6 +4346,9 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -3753,6 +4409,10 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-equals@5.4.0: + resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} + engines: {node: '>=6.0.0'} + fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -3773,6 +4433,9 @@ packages: fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fault@1.0.4: + resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} + fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -3845,6 +4508,10 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -3856,6 +4523,20 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + framer-motion@12.24.12: + resolution: {integrity: sha512-W+tBOI1SDGNMH4D4mADY95qYd16Drke2Tj9zlGlwTGSCi6yy8wbMmPY1mvirfcTK8HBeuuCd2PflHdN/zbL4ew==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fresh@2.0.0: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} @@ -3900,6 +4581,10 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-own-enumerable-keys@1.0.0: resolution: {integrity: sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==} engines: {node: '>=14.16'} @@ -4013,6 +4698,9 @@ packages: hast-util-minify-whitespace@1.0.1: resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} + hast-util-parse-selector@2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} @@ -4049,9 +4737,15 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hastscript@6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + hastscript@9.0.1: resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + highlight.js@11.11.1: resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} @@ -4059,6 +4753,9 @@ packages: highlightjs-curl@1.3.0: resolution: {integrity: sha512-50UEfZq1KR0Lfk2Tr6xb/MUIZH3h10oNC0OTy9g7WELcs5Fgy/mKN1vEhuKTkKbdo8vr5F9GXstu2eLhApfQ3A==} + highlightjs-vue@1.0.0: + resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} + hono@4.11.1: resolution: {integrity: sha512-KsFcH0xxHes0J4zaQgWbYwmz3UPOOskdqZmItstUG93+Wk1ePBLkLGwbP9zlmh1BFUiL8Qp+Xfu9P7feJWpGNg==} engines: {node: '>=16.9.0'} @@ -4076,6 +4773,9 @@ packages: html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -4130,6 +4830,9 @@ packages: engines: {node: '>=16.x'} hasBin: true + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + import-in-the-middle@1.15.0: resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==} @@ -4154,6 +4857,10 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -4169,9 +4876,15 @@ packages: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} @@ -4187,6 +4900,9 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -4211,6 +4927,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} @@ -4366,6 +5085,9 @@ packages: resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} engines: {node: '>=12', npm: '>=6'} + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + junk@4.0.1: resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} engines: {node: '>=12.20'} @@ -4424,6 +5146,9 @@ packages: resolution: {integrity: sha512-puehA3YKku3osqPlNuzGDUHq8WpwXupUg1V6NXdV38G+gr+gkBwFC8g1b/+YcIvp8gnqVIus+eJCH/eGsRmJNw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lightningcss-android-arm64@1.30.2: resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} engines: {node: '>= 12.0.0'} @@ -4551,6 +5276,13 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lowlight@1.20.0: + resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} + lowlight@3.3.0: resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} @@ -4564,6 +5296,11 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@0.544.0: + resolution: {integrity: sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + luxon@3.7.2: resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} @@ -4588,6 +5325,11 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@14.0.0: + resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} + engines: {node: '>= 18'} + hasBin: true + marked@16.4.2: resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} engines: {node: '>= 20'} @@ -4848,6 +5590,15 @@ packages: module-details-from-path@1.0.4: resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + monaco-editor@0.55.1: + resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} + + motion-dom@12.24.11: + resolution: {integrity: sha512-DlWOmsXMJrV8lzZyd+LKjG2CXULUs++bkq8GZ2Sr0R0RRhs30K2wtY+LKiTjhmJU3W61HK+rB0GLz6XmPvTA1A==} + + motion-utils@12.24.10: + resolution: {integrity: sha512-x5TFgkCIP4pPsRLpKoI86jv/q8t8FQOiM/0E8QKBzfMozWHfkKap2gA1hOki+B5g3IsBNpxbUnfOum1+dgvYww==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -5068,6 +5819,12 @@ packages: pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -5311,6 +6068,10 @@ packages: peerDependencies: prettier: ^3.0.0 + prismjs@1.27.0: + resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} + engines: {node: '>=6'} + prismjs@1.30.0: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} @@ -5326,6 +6087,12 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} @@ -5379,10 +6146,85 @@ packages: peerDependencies: react: ^19.2.3 + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + react-refresh@0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-resizable-panels@2.1.9: + resolution: {integrity: sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==} + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + react-smooth@4.0.4: + resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-syntax-highlighter@15.6.6: + resolution: {integrity: sha512-DgXrc+AZF47+HvAPEmn7Ua/1p10jNoVZVI/LoPiYdtY+OM+/nG5yefLHKJwdKqY1adMuHFbeyBaG9j64ML7vTw==} + peerDependencies: + react: '>= 0.14.0' + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + react@19.2.3: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} @@ -5417,6 +6259,16 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + + recharts@2.15.4: + resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -5431,6 +6283,9 @@ packages: recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + refractor@3.6.0: + resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} + regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -5623,6 +6478,9 @@ packages: server-dom-shim@1.0.2: resolution: {integrity: sha512-6MTS2ouF/fXZMUdPzAzPOXgeuIwj3wNianF4BYEmFC5XdCLIAkNkUSxHk0kW58nObQnyHc6wp4wL7xdt3m7X+Q==} + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -5719,6 +6577,9 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -5823,6 +6684,9 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.34.0' + state-local@1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -5939,6 +6803,11 @@ packages: tailwind-merge@2.6.0: resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + tailwindcss@4.1.18: resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} @@ -5973,6 +6842,9 @@ packages: tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} @@ -6329,6 +7201,26 @@ packages: urlpattern-polyfill@8.0.2: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -6365,6 +7257,9 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + victory-vendor@36.9.2: + resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + vite-hot-client@2.1.0: resolution: {integrity: sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==} peerDependencies: @@ -6555,6 +7450,10 @@ packages: engines: {node: '>= 0.10.0'} hasBin: true + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + xxhash-wasm@1.1.0: resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} @@ -6650,6 +7549,13 @@ snapshots: '@vercel/oidc': 3.0.5 zod: 4.2.1 + '@ai-sdk/gateway@2.0.23(zod@4.3.5)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5) + '@vercel/oidc': 3.0.5 + zod: 4.3.5 + '@ai-sdk/provider-utils@3.0.19(zod@4.2.1)': dependencies: '@ai-sdk/provider': 2.0.0 @@ -6657,6 +7563,13 @@ snapshots: eventsource-parser: 3.0.6 zod: 4.2.1 + '@ai-sdk/provider-utils@3.0.19(zod@4.3.5)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.1.0 + eventsource-parser: 3.0.6 + zod: 4.3.5 + '@ai-sdk/provider@2.0.0': dependencies: json-schema: 0.4.0 @@ -6671,6 +7584,16 @@ snapshots: optionalDependencies: zod: 4.2.1 + '@ai-sdk/react@2.0.118(react@19.2.3)(zod@4.3.5)': + dependencies: + '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5) + ai: 5.0.116(zod@4.3.5) + react: 19.2.3 + swr: 2.3.8(react@19.2.3) + throttleit: 2.1.0 + optionalDependencies: + zod: 4.3.5 + '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)': dependencies: '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3) @@ -7819,6 +8742,12 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 + '@floating-ui/react-dom@2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + '@floating-ui/utils@0.2.10': {} '@floating-ui/vue@1.1.9(vue@3.5.26(typescript@5.9.3))': @@ -8138,6 +9067,17 @@ snapshots: - hono - supports-color + '@monaco-editor/loader@1.7.0': + dependencies: + state-local: 1.0.7 + + '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@monaco-editor/loader': 1.7.0 + monaco-editor: 0.55.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + '@netlify/ai@0.3.5(@netlify/api@14.0.12)': dependencies: '@netlify/api': 14.0.12 @@ -8772,17 +9712,522 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.4 '@parcel/watcher-win32-x64': 2.5.4 - '@phosphor-icons/core@2.1.1': {} + '@phosphor-icons/core@2.1.1': {} + + '@pkgr/core@0.2.9': {} + + '@polka/url@1.0.0-next.29': {} + + '@preact/signals-core@1.11.0': {} + + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.28.3 + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-compose-refs@1.0.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-context@1.0.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-context@1.1.2(@types/react@19.2.7)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-dialog@1.0.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.0.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@19.2.7)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.5.5(@types/react@19.2.7)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.7)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-direction@1.1.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-focus-guards@1.0.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.7)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-id@1.0.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-id@1.1.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.7)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.2(@types/react@19.2.7)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/rect': 1.1.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-portal@1.0.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-presence@1.0.1(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-slot': 1.0.2(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-slot@1.0.2(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-slot@1.2.3(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-slot@1.2.4(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 - '@pkgr/core@0.2.9': {} + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@babel/runtime': 7.28.3 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 - '@polka/url@1.0.0-next.29': {} + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 - '@preact/signals-core@1.11.0': {} + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.7)(react@19.2.3)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 - '@quansync/fs@1.0.0': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.7)(react@19.2.3)': dependencies: - quansync: 1.0.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/rect@1.1.1': {} '@replit/codemirror-css-color-picker@6.3.0(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)': dependencies: @@ -8874,6 +10319,42 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.49.0': optional: true + '@sampleapp.ai/sdk@1.0.36(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(monaco-editor@0.55.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.1.18)(zod@4.3.5)': + dependencies: + '@ai-sdk/react': 2.0.118(react@19.2.3)(zod@4.3.5) + '@monaco-editor/react': 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.7)(react@19.2.3) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + canvas-confetti: 1.9.4 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + cmdk: 1.0.0(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + framer-motion: 12.24.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + jszip: 3.10.1 + lucide-react: 0.544.0(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-markdown: 10.1.0(@types/react@19.2.7)(react@19.2.3) + react-resizable-panels: 2.1.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react-syntax-highlighter: 15.6.6(react@19.2.3) + recharts: 2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rehype-raw: 7.0.0 + remark-gfm: 4.0.1 + tailwind-merge: 2.6.0 + tailwindcss-animate: 1.0.7(tailwindcss@4.1.18) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - '@types/react-dom' + - monaco-editor + - supports-color + - tailwindcss + - zod + '@scalar/analytics-client@1.0.1': dependencies: zod: 4.2.1 @@ -9385,6 +10866,30 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@types/d3-array@3.2.2': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -9401,6 +10906,10 @@ snapshots: '@types/har-format@1.2.16': {} + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.11 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -9458,6 +10967,9 @@ snapshots: '@types/triple-beam@1.3.5': {} + '@types/trusted-types@2.0.7': + optional: true + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -9999,6 +11511,14 @@ snapshots: '@opentelemetry/api': 1.9.0 zod: 4.2.1 + ai@5.0.116(zod@4.3.5): + dependencies: + '@ai-sdk/gateway': 2.0.23(zod@4.3.5) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5) + '@opentelemetry/api': 1.9.0 + zod: 4.3.5 + ajv-draft-04@1.0.0(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -10121,7 +11641,7 @@ snapshots: astro: 5.16.6(@netlify/blobs@10.5.0)(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.49.0)(typescript@5.9.3)(yaml@2.8.2) octokit: 5.0.5 - astro-og-canvas@0.10.0(astro@5.16.6(@netlify/blobs@10.5.0)(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.49.0)(typescript@5.9.3)(yaml@2.8.2)): + astro-og-canvas@0.9.0(astro@5.16.6(@netlify/blobs@10.5.0)(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.49.0)(typescript@5.9.3)(yaml@2.8.2)): dependencies: astro: 5.16.6(@netlify/blobs@10.5.0)(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.49.0)(typescript@5.9.3)(yaml@2.8.2) canvaskit-wasm: 0.40.0 @@ -10376,6 +11896,8 @@ snapshots: caniuse-lite@1.0.30001737: {} + canvas-confetti@1.9.4: {} + canvaskit-wasm@0.39.1: dependencies: '@webgpu/types': 0.1.21 @@ -10397,10 +11919,16 @@ snapshots: character-entities-html4@2.1.0: {} + character-entities-legacy@1.1.4: {} + character-entities-legacy@3.0.0: {} + character-entities@1.2.4: {} + character-entities@2.0.2: {} + character-reference-invalid@1.1.4: {} + character-reference-invalid@2.0.1: {} chokidar@3.6.0: @@ -10429,6 +11957,10 @@ snapshots: cjs-module-lexer@1.4.3: {} + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + cli-boxes@3.0.0: {} cli-cursor@5.0.0: @@ -10458,6 +11990,16 @@ snapshots: clsx@2.1.1: {} + cmdk@1.0.0(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + collapse-white-space@2.1.0: {} color-convert@2.0.1: @@ -10483,6 +12025,8 @@ snapshots: colorette@2.0.20: {} + comma-separated-tokens@1.0.8: {} + comma-separated-tokens@2.0.3: {} commander@10.0.1: {} @@ -10610,6 +12154,44 @@ snapshots: optionalDependencies: typescript: 5.9.3 + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-color@3.1.0: {} + + d3-ease@3.0.1: {} + + d3-format@3.1.0: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + data-uri-to-buffer@4.0.1: {} debug@4.4.1: @@ -10624,6 +12206,8 @@ snapshots: dependencies: callsite: 1.0.0 + decimal.js-light@2.5.1: {} + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -10651,6 +12235,8 @@ snapshots: detect-libc@2.1.2: {} + detect-node-es@1.1.0: {} + detective-amd@6.0.1: dependencies: ast-module-types: 6.0.1 @@ -10727,6 +12313,11 @@ snapshots: dlv@1.1.3: {} + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.3 + csstype: 3.2.3 + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -10739,6 +12330,10 @@ snapshots: dependencies: domelementtype: 2.3.0 + dompurify@3.2.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 @@ -10976,6 +12571,8 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} events-universal@1.0.1: @@ -11096,6 +12693,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-equals@5.4.0: {} + fast-fifo@1.3.2: {} fast-glob@3.3.3: @@ -11118,6 +12717,10 @@ snapshots: dependencies: reusify: 1.1.0 + fault@1.0.4: + dependencies: + format: 0.2.2 + fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -11198,6 +12801,8 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + format@0.2.2: {} + formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 @@ -11206,6 +12811,15 @@ snapshots: fraction.js@4.3.7: {} + framer-motion@12.24.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + motion-dom: 12.24.11 + motion-utils: 12.24.10 + tslib: 2.8.1 + optionalDependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + fresh@2.0.0: {} fs-extra@11.3.1: @@ -11247,6 +12861,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} + get-own-enumerable-keys@1.0.0: {} get-port-please@3.2.0: {} @@ -11400,6 +13016,8 @@ snapshots: hast-util-whitespace: 3.0.0 unist-util-is: 6.0.0 + hast-util-parse-selector@2.2.5: {} + hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 @@ -11532,6 +13150,14 @@ snapshots: dependencies: '@types/hast': 3.0.4 + hastscript@6.0.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + hastscript@9.0.1: dependencies: '@types/hast': 3.0.4 @@ -11540,10 +13166,14 @@ snapshots: property-information: 7.1.0 space-separated-tokens: 2.0.2 + highlight.js@10.7.3: {} + highlight.js@11.11.1: {} highlightjs-curl@1.3.0: {} + highlightjs-vue@1.0.0: {} + hono@4.11.1: {} hookable@5.5.3: {} @@ -11556,6 +13186,8 @@ snapshots: html-escaper@3.0.3: {} + html-url-attributes@3.0.1: {} + html-void-elements@3.0.0: {} html-whitespace-sensitive-tag-names@3.0.1: {} @@ -11606,6 +13238,8 @@ snapshots: image-size@2.0.2: {} + immediate@3.0.6: {} + import-in-the-middle@1.15.0: dependencies: acorn: 8.15.0 @@ -11625,6 +13259,8 @@ snapshots: inline-style-parser@0.2.7: {} + internmap@2.0.3: {} + ipaddr.js@1.9.1: {} ipx@3.1.1(@netlify/blobs@10.5.0): @@ -11670,8 +13306,15 @@ snapshots: is-absolute-url@4.0.1: {} + is-alphabetical@1.0.4: {} + is-alphabetical@2.0.1: {} + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 @@ -11689,6 +13332,8 @@ snapshots: dependencies: hasown: 2.0.2 + is-decimal@1.0.4: {} + is-decimal@2.0.1: {} is-docker@3.0.0: {} @@ -11705,6 +13350,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hexadecimal@1.0.4: {} + is-hexadecimal@2.0.1: {} is-inside-container@1.0.0: @@ -11818,6 +13465,13 @@ snapshots: ms: 2.1.3 semver: 7.7.3 + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + junk@4.0.1: {} just-clone@6.2.0: {} @@ -11863,6 +13517,10 @@ snapshots: leven@4.0.0: {} + lie@3.3.0: + dependencies: + immediate: 3.0.6 + lightningcss-android-arm64@1.30.2: optional: true @@ -11990,6 +13648,15 @@ snapshots: longest-streak@3.1.0: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lowlight@1.20.0: + dependencies: + fault: 1.0.4 + highlight.js: 10.7.3 + lowlight@3.3.0: dependencies: '@types/hast': 3.0.4 @@ -12004,6 +13671,10 @@ snapshots: dependencies: yallist: 3.1.1 + lucide-react@0.544.0(react@19.2.3): + dependencies: + react: 19.2.3 + luxon@3.7.2: {} magic-string@0.30.18: @@ -12026,6 +13697,8 @@ snapshots: markdown-table@3.0.4: {} + marked@14.0.0: {} + marked@16.4.2: {} math-intrinsics@1.1.0: {} @@ -12560,6 +14233,17 @@ snapshots: module-details-from-path@1.0.4: {} + monaco-editor@0.55.1: + dependencies: + dompurify: 3.2.7 + marked: 14.0.0 + + motion-dom@12.24.11: + dependencies: + motion-utils: 12.24.10 + + motion-utils@12.24.10: {} + mri@1.2.0: {} mrmime@2.0.1: {} @@ -12759,6 +14443,17 @@ snapshots: pako@0.2.9: {} + pako@1.0.11: {} + + parse-entities@2.0.0: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -12952,6 +14647,8 @@ snapshots: tinyexec: 0.3.2 tslib: 2.8.1 + prismjs@1.27.0: {} + prismjs@1.30.0: {} process-nextick-args@2.0.1: {} @@ -12963,6 +14660,16 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@5.6.0: + dependencies: + xtend: 4.0.2 + property-information@6.5.0: {} property-information@7.1.0: {} @@ -13024,8 +14731,100 @@ snapshots: react: 19.2.3 scheduler: 0.27.0 + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-markdown@10.1.0(@types/react@19.2.7)(react@19.2.3): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 19.2.7 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.1 + react: 19.2.3 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + react-refresh@0.17.0: {} + react-remove-scroll-bar@2.3.8(@types/react@19.2.7)(react@19.2.3): + dependencies: + react: 19.2.3 + react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.3) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.7 + + react-remove-scroll@2.5.5(@types/react@19.2.7)(react@19.2.3): + dependencies: + react: 19.2.3 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.7)(react@19.2.3) + react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.3) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.7)(react@19.2.3) + use-sidecar: 1.1.3(@types/react@19.2.7)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + + react-remove-scroll@2.7.2(@types/react@19.2.7)(react@19.2.3): + dependencies: + react: 19.2.3 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.7)(react@19.2.3) + react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.3) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.7)(react@19.2.3) + use-sidecar: 1.1.3(@types/react@19.2.7)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + + react-resizable-panels@2.1.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + react-smooth@4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + fast-equals: 5.4.0 + prop-types: 15.8.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + + react-style-singleton@2.2.3(@types/react@19.2.7)(react@19.2.3): + dependencies: + get-nonce: 1.0.1 + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.7 + + react-syntax-highlighter@15.6.6(react@19.2.3): + dependencies: + '@babel/runtime': 7.28.3 + highlight.js: 10.7.3 + highlightjs-vue: 1.0.0 + lowlight: 1.20.0 + prismjs: 1.30.0 + react: 19.2.3 + refractor: 3.6.0 + + react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@babel/runtime': 7.28.3 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react@19.2.3: {} read-package-up@11.0.0: @@ -13076,6 +14875,23 @@ snapshots: readdirp@4.1.2: {} + recharts-scale@0.4.5: + dependencies: + decimal.js-light: 2.5.1 + + recharts@2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + clsx: 2.1.1 + eventemitter3: 4.0.7 + lodash: 4.17.21 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-is: 18.3.1 + react-smooth: 4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + recharts-scale: 0.4.5 + tiny-invariant: 1.3.3 + victory-vendor: 36.9.2 + recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.8 @@ -13105,6 +14921,12 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + refractor@3.6.0: + dependencies: + hastscript: 6.0.0 + parse-entities: 2.0.0 + prismjs: 1.27.0 + regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -13430,6 +15252,8 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.4.0 + setimmediate@1.0.5: {} + setprototypeof@1.2.0: {} sharp@0.34.5: @@ -13568,6 +15392,8 @@ snapshots: source-map@0.7.6: {} + space-separated-tokens@1.1.5: {} + space-separated-tokens@2.0.2: {} spdx-correct@3.2.0: @@ -13697,6 +15523,8 @@ snapshots: transitivePeerDependencies: - astro + state-local@1.0.7: {} + statuses@2.0.2: {} std-env@3.10.0: {} @@ -13822,6 +15650,10 @@ snapshots: tailwind-merge@2.6.0: {} + tailwindcss-animate@1.0.7(tailwindcss@4.1.18): + dependencies: + tailwindcss: 4.1.18 + tailwindcss@4.1.18: {} tapable@2.2.3: {} @@ -13862,6 +15694,8 @@ snapshots: tiny-inflate@1.0.3: {} + tiny-invariant@1.3.3: {} + tinyexec@0.3.2: {} tinyexec@1.0.1: {} @@ -14167,6 +16001,21 @@ snapshots: urlpattern-polyfill@8.0.2: {} + use-callback-ref@1.3.3(@types/react@19.2.7)(react@19.2.3): + dependencies: + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.7 + + use-sidecar@1.1.3(@types/react@19.2.7)(react@19.2.3): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.3 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.7 + use-sync-external-store@1.6.0(react@19.2.3): dependencies: react: 19.2.3 @@ -14201,6 +16050,23 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 + victory-vendor@36.9.2: + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + vite-hot-client@2.1.0(vite@6.4.1(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)): dependencies: vite: 6.4.1(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) @@ -14381,6 +16247,8 @@ snapshots: commander: 2.20.3 cssfilter: 0.0.10 + xtend@4.0.2: {} + xxhash-wasm@1.1.0: {} y18n@5.0.8: {} diff --git a/public/api/scalekit.scalar.yaml b/public/api/scalekit.scalar.yaml index 424f9f1b..76aa1368 100644 --- a/public/api/scalekit.scalar.yaml +++ b/public/api/scalekit.scalar.yaml @@ -175,18 +175,18 @@ info: ``` title: Scalekit APIs contact: - name: "Scalekit Inc" - url: "https://scalekit.com" - email: "support@scalekit.com" + name: 'Scalekit Inc' + url: 'https://scalekit.com' + email: 'support@scalekit.com' license: - name: "Apache 2.0" - url: "http://www.apache.org/licenses/LICENSE-2.0" - version: "1.0.0" + name: 'Apache 2.0' + url: 'http://www.apache.org/licenses/LICENSE-2.0' + version: '1.0.0' x-scalar-sdk-installation: - lang: shell - description: "Set up OAuth 2.0 Client Credentials authentication to access Scalekit + description: 'Set up OAuth 2.0 Client Credentials authentication to access Scalekit APIs. Includes credential configuration, token exchange, and authenticated - API request examples." + API request examples.' source: |2 # 1. Obtain API Credentials @@ -211,9 +211,9 @@ info: paths: /api/v1/connected_accounts: get: - description: Retrieves a paginated list of connected accounts for - third-party integrations. Filter by organization, user, connector type, - provider, or identifier. Returns OAuth tokens, API keys, and connection + description: Retrieves a paginated list of connected accounts for + third-party integrations. Filter by organization, user, connector type, + provider, or identifier. Returns OAuth tokens, API keys, and connection status for each account. Use pagination tokens to navigate through large result sets. tags: @@ -223,79 +223,79 @@ paths: parameters: - schema: type: string - description: Filter by organization ID. Returns only connected + description: Filter by organization ID. Returns only connected accounts associated with this organization. name: organization_id in: query - schema: type: string - description: Filter by user ID. Returns only connected accounts + description: Filter by user ID. Returns only connected accounts associated with this user. name: user_id in: query - schema: type: string - description: Filter by connector type. Connector identifier such as - 'notion', 'slack', 'google', etc. Alphanumeric with hyphens and + description: Filter by connector type. Connector identifier such as + 'notion', 'slack', 'google', etc. Alphanumeric with hyphens and underscores allowed. name: connector in: query - schema: type: string - description: Filter by account identifier. The unique identifier for - the connected account within the third-party service (e.g., email + description: Filter by account identifier. The unique identifier for + the connected account within the third-party service (e.g., email address, workspace ID). name: identifier in: query - schema: type: string - description: Filter by OAuth provider. The authentication provider + description: Filter by OAuth provider. The authentication provider name such as 'google', 'microsoft', 'github', etc. name: provider in: query - schema: type: integer format: int64 - description: Maximum number of connected accounts to return per page. + description: Maximum number of connected accounts to return per page. Must be between 0 and 100. Default is typically 10. name: page_size in: query - schema: type: string - description: Pagination token from a previous response. Use the - next_page_token value from ListConnectedAccountsResponse to fetch + description: Pagination token from a previous response. Use the + next_page_token value from ListConnectedAccountsResponse to fetch the next page. name: page_token in: query - schema: type: string - description: Text search query to filter connected accounts by name, + description: Text search query to filter connected accounts by name, identifier, or other searchable fields. Case-insensitive. name: query in: query responses: - "200": - description: Successfully retrieved the list of connected accounts + '200': + description: Successfully retrieved the list of connected accounts with their authentication details and status content: application/json: schema: - $ref: "#/components/schemas/connected_accountsListConnectedAccountsResponse" - "400": - description: Invalid request - occurs when query parameters are + $ref: '#/components/schemas/connected_accountsListConnectedAccountsResponse' + '400': + description: Invalid request - occurs when query parameters are malformed or validation fails content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: schema: {} put: - description: Updates authentication credentials and configuration for an - existing connected account. Modify OAuth tokens, refresh tokens, access - scopes, or API configuration settings. Specify the account by ID, or by + description: Updates authentication credentials and configuration for an + existing connected account. Modify OAuth tokens, refresh tokens, access + scopes, or API configuration settings. Specify the account by ID, or by combination of organization/user, connector, and identifier. Returns the updated account with new token expiry and status information. tags: @@ -303,26 +303,26 @@ paths: summary: Update connected account credentials operationId: ConnectedAccountService_UpdateConnectedAccount responses: - "200": - description: Connected account updated successfully with new + '200': + description: Connected account updated successfully with new credentials or configuration content: application/json: schema: - $ref: "#/components/schemas/connected_accountsUpdateConnectedAccountResponse" - "400": - description: Invalid request - missing required fields, invalid + $ref: '#/components/schemas/connected_accountsUpdateConnectedAccountResponse' + '400': + description: Invalid request - missing required fields, invalid authorization details, or validation failed content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: schema: {} - "404": - description: Connected account not found - the specified account does + '404': + description: Connected account not found - the specified account does not exist content: application/json: @@ -331,40 +331,40 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/connected_accountsUpdateConnectedAccountRequest" + $ref: '#/components/schemas/connected_accountsUpdateConnectedAccountRequest' required: true post: - description: Creates a new connected account with OAuth tokens or API - credentials for third-party service integration. Supply authorization - details including access tokens, refresh tokens, scopes, and optional + description: Creates a new connected account with OAuth tokens or API + credentials for third-party service integration. Supply authorization + details including access tokens, refresh tokens, scopes, and optional API configuration. The account can be scoped to an organization or user. - Returns the created account with its unique identifier and + Returns the created account with its unique identifier and authentication status. tags: - Connected Accounts summary: Create a connected account operationId: ConnectedAccountService_CreateConnectedAccount responses: - "201": - description: Connected account created successfully with + '201': + description: Connected account created successfully with authentication credentials stored securely content: application/json: schema: - $ref: "#/components/schemas/connected_accountsCreateConnectedAccountResponse" - "400": - description: Invalid request - missing required fields, invalid + $ref: '#/components/schemas/connected_accountsCreateConnectedAccountResponse' + '400': + description: Invalid request - missing required fields, invalid authorization details, or validation failed content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: schema: {} - "409": - description: Conflict - connected account with the same identifier + '409': + description: Conflict - connected account with the same identifier already exists content: application/json: @@ -373,14 +373,14 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/connected_accountsCreateConnectedAccountRequest" + $ref: '#/components/schemas/connected_accountsCreateConnectedAccountRequest' required: true /api/v1/connected_accounts/auth: get: - description: Retrieves complete authentication details for a connected - account including OAuth tokens, refresh tokens, scopes, and API - configuration. Query by account ID or by combination of - organization/user, connector, and identifier. Returns sensitive + description: Retrieves complete authentication details for a connected + account including OAuth tokens, refresh tokens, scopes, and API + configuration. Query by account ID or by combination of + organization/user, connector, and identifier. Returns sensitive credential information - use appropriate access controls. tags: - Connected Accounts @@ -404,8 +404,8 @@ paths: in: query - schema: type: string - description: The unique identifier for the connected account within - the third-party service (e.g., email address, user ID, workspace + description: The unique identifier for the connected account within + the third-party service (e.g., email address, user ID, workspace identifier). name: identifier in: query @@ -415,55 +415,55 @@ paths: name: id in: query responses: - "200": - description: Successfully retrieved connected account with full + '200': + description: Successfully retrieved connected account with full authentication details content: application/json: schema: - $ref: "#/components/schemas/connected_accountsGetConnectedAccountByIdentifierResponse" - "400": + $ref: '#/components/schemas/connected_accountsGetConnectedAccountByIdentifierResponse' + '400': description: Invalid request - missing required query parameters content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: schema: {} - "404": - description: Connected account not found - no account matches the + '404': + description: Connected account not found - no account matches the specified criteria content: application/json: schema: {} /api/v1/connected_accounts/magic_link: post: - description: Creates a time-limited magic link for connecting or - re-authorizing a third-party account. The link directs users to the - OAuth authorization flow for the specified connector. Returns the - generated link URL and expiration timestamp. Links typically expire + description: Creates a time-limited magic link for connecting or + re-authorizing a third-party account. The link directs users to the + OAuth authorization flow for the specified connector. Returns the + generated link URL and expiration timestamp. Links typically expire after a short duration for security. tags: - Connected Accounts summary: Generate authentication magic link operationId: ConnectedAccountService_GetMagicLinkForConnectedAccount responses: - "200": - description: Magic link generated successfully with authorization URL + '200': + description: Magic link generated successfully with authorization URL and expiry time content: application/json: schema: - $ref: "#/components/schemas/connected_accountsGetMagicLinkForConnectedAccountResponse" - "400": - description: Invalid request - missing required parameters or invalid + $ref: '#/components/schemas/connected_accountsGetMagicLinkForConnectedAccountResponse' + '400': + description: Invalid request - missing required parameters or invalid connector content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: @@ -472,11 +472,11 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/connected_accountsGetMagicLinkForConnectedAccountRequest" + $ref: '#/components/schemas/connected_accountsGetMagicLinkForConnectedAccountRequest' required: true /api/v1/connected_accounts:delete: post: - description: Permanently removes a connected account and revokes all + description: Permanently removes a connected account and revokes all associated authentication credentials. Identify the account by ID, or by combination of organization/user, connector, and identifier. This action cannot be undone. All OAuth tokens and API keys for this account will be @@ -486,25 +486,25 @@ paths: summary: Delete a connected account operationId: ConnectedAccountService_DeleteConnectedAccount responses: - "200": - description: Connected account deleted successfully and all + '200': + description: Connected account deleted successfully and all credentials revoked content: application/json: schema: {} - "400": - description: Invalid request - malformed parameters or validation + '400': + description: Invalid request - malformed parameters or validation failed content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: schema: {} - "404": - description: Connected account not found - the specified account does + '404': + description: Connected account not found - the specified account does not exist content: application/json: @@ -513,14 +513,14 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/connected_accountsDeleteConnectedAccountRequest" + $ref: '#/components/schemas/connected_accountsDeleteConnectedAccountRequest' required: true /api/v1/connected_accounts:search: get: - description: Search for connected accounts in your environment using a - text query that matches against identifiers, providers, or connectors. - The search performs case-insensitive matching across account details. - Returns paginated results with account status and authentication type + description: Search for connected accounts in your environment using a + text query that matches against identifiers, providers, or connectors. + The search performs case-insensitive matching across account details. + Returns paginated results with account status and authentication type information. tags: - Connected Accounts @@ -529,21 +529,21 @@ paths: parameters: - schema: type: string - description: Search term to match against connected account - identifiers, providers, or connectors. Must be at least 3 + description: Search term to match against connected account + identifiers, providers, or connectors. Must be at least 3 characters. Case insensitive. name: query in: query - schema: type: integer format: int64 - description: Maximum number of connected accounts to return per page. + description: Maximum number of connected accounts to return per page. Value must be between 1 and 30. name: page_size in: query - schema: type: string - description: Token from a previous response for pagination. Provide + description: Token from a previous response for pagination. Provide this to retrieve the next page of results. name: page_token in: query @@ -553,20 +553,20 @@ paths: name: connection_id in: query responses: - "200": - description: Successfully retrieved matching connected accounts with + '200': + description: Successfully retrieved matching connected accounts with pagination support content: application/json: schema: - $ref: "#/components/schemas/connected_accountsSearchConnectedAccountsResponse" - "400": + $ref: '#/components/schemas/connected_accountsSearchConnectedAccountsResponse' + '400': description: Invalid request - query parameter is too short (minimum 3 characters) or validation failed content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: @@ -586,24 +586,24 @@ paths: in: query - schema: type: string - description: Filter connections by email domain associated with the + description: Filter connections by email domain associated with the organization name: domain in: query - schema: type: string - description: Filter connections by status. Use 'all' to include all + description: Filter connections by status. Use 'all' to include all connections regardless of status. Default behavior shows only active (completed and enabled) connections name: include in: query responses: - "200": + '200': description: Successfully retrieved connections content: application/json: schema: - $ref: "#/components/schemas/connectionsListConnectionsResponse" + $ref: '#/components/schemas/connectionsListConnectionsResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -656,44 +656,44 @@ paths: ).listConnectionsByDomain("your-domain.com"); /api/v1/execute_tool: post: - description: Executes a tool action using authentication credentials from - a connected account. Specify the tool by name and provide required + description: Executes a tool action using authentication credentials from + a connected account. Specify the tool by name and provide required parameters as JSON. The connected account can be identified by ID, or by combination of organization/user, connector, and identifier. Returns the - execution result data and a unique execution ID for tracking. Use this - endpoint to perform actions like sending emails, creating calendar + execution result data and a unique execution ID for tracking. Use this + endpoint to perform actions like sending emails, creating calendar events, or managing resources in external services. tags: - Connected Accounts summary: Execute a tool using a connected account operationId: ToolService_ExecuteTool responses: - "200": + '200': description: Tool executed successfully with result data and execution ID content: application/json: schema: - $ref: "#/components/schemas/toolsExecuteToolResponse" - "400": - description: Invalid request - occurs when tool name is missing, + $ref: '#/components/schemas/toolsExecuteToolResponse' + '400': + description: Invalid request - occurs when tool name is missing, parameters are malformed, or tool definition validation fails content: application/json: schema: {} - "401": + '401': description: Authentication required - missing or invalid access token content: application/json: schema: {} - "404": - description: Tool or connected account not found - occurs when the + '404': + description: Tool or connected account not found - occurs when the specified tool name or connected account does not exist content: application/json: schema: {} - "500": - description: Tool execution failed - occurs when the external service + '500': + description: Tool execution failed - occurs when the external service returns an error or the tool encounters a runtime exception content: application/json: @@ -702,17 +702,17 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/toolsExecuteToolRequest" + $ref: '#/components/schemas/toolsExecuteToolRequest' required: true /api/v1/invites/organizations/{organization_id}/users/{id}/resend: patch: - description: Resends an invitation email to a user who has a pending or - expired invitation in the specified organization. If the invitation has + description: Resends an invitation email to a user who has a pending or + expired invitation in the specified organization. If the invitation has expired, a new invitation will be automatically created and sent. If the - invitation is still valid, a reminder email will be sent instead. Use - this endpoint when a user hasn't responded to their initial invitation + invitation is still valid, a reminder email will be sent instead. Use + this endpoint when a user hasn't responded to their initial invitation and you need to send them a reminder or when the original invitation has - expired. The invitation email includes a secure magic link that allows + expired. The invitation email includes a secure magic link that allows the user to complete their account setup and join the organization. Each resend operation increments the resent counter. tags: @@ -722,69 +722,69 @@ paths: parameters: - schema: type: string - description: Unique identifier of the organization containing the - pending invitation. Must start with 'org_' and be 1-32 characters + description: Unique identifier of the organization containing the + pending invitation. Must start with 'org_' and be 1-32 characters long. name: organization_id in: path required: true - schema: type: string - description: System-generated user ID of the user who has a pending + description: System-generated user ID of the user who has a pending invitation. Must start with 'usr_' and be 19-25 characters long. name: id in: path required: true responses: - "200": - description: Successfully resent the invitation email. Returns the - updated invitation object with organization ID, user ID, membership - status, timestamps, and resent count. If expired, a new invitation + '200': + description: Successfully resent the invitation email. Returns the + updated invitation object with organization ID, user ID, membership + status, timestamps, and resent count. If expired, a new invitation is created; otherwise, the existing one is resent. content: application/json: schema: - $ref: "#/components/schemas/usersResendInviteResponse" - "400": - description: Invalid request — common causes include user ID or - organization ID is invalid, full-stack authentication is disabled, - user profile is missing, invite already accepted, or missing expiry + $ref: '#/components/schemas/usersResendInviteResponse' + '400': + description: Invalid request — common causes include user ID or + organization ID is invalid, full-stack authentication is disabled, + user profile is missing, invite already accepted, or missing expiry time in user management settings. content: application/json: schema: - $ref: "#/components/schemas/errdetailsErrorInfo" - "404": - description: Resource not found — the specified user, organization, - membership, or invitation could not be found in the specified - environment. Verify that all IDs are correct and that the resources + $ref: '#/components/schemas/errdetailsErrorInfo' + '404': + description: Resource not found — the specified user, organization, + membership, or invitation could not be found in the specified + environment. Verify that all IDs are correct and that the resources exist before attempting to resend an invitation. content: application/json: schema: - $ref: "#/components/schemas/errdetailsErrorInfo" - "500": - description: Internal server error — an unexpected error occurred - while processing the invitation resend request. This may be due to - database connectivity issues, problems generating the secure magic - link, email delivery service failures, or transaction errors during + $ref: '#/components/schemas/errdetailsErrorInfo' + '500': + description: Internal server error — an unexpected error occurred + while processing the invitation resend request. This may be due to + database connectivity issues, problems generating the secure magic + link, email delivery service failures, or transaction errors during invitation processing. Contact support if the problem persists. content: application/json: schema: - $ref: "#/components/schemas/errdetailsErrorInfo" + $ref: '#/components/schemas/errdetailsErrorInfo' requestBody: content: application/json: schema: - $ref: "#/components/schemas/UserServiceResendInviteBody" + $ref: '#/components/schemas/UserServiceResendInviteBody' required: true /api/v1/memberships/organizations/{organization_id}/users/{id}: post: - description: Adds an existing user to an organization and assigns them + description: Adds an existing user to an organization and assigns them specific roles and permissions. Use this endpoint when you want to grant - an existing user access to a particular organization. You can specify - roles, metadata, and other membership details during the invitation + an existing user access to a particular organization. You can specify + roles, metadata, and other membership details during the invitation process. tags: - Users @@ -793,38 +793,38 @@ paths: parameters: - schema: type: string - description: Unique identifier of the target organization. Must start + description: Unique identifier of the target organization. Must start with 'org_' and be 1-32 characters long. name: organization_id in: path required: true - schema: type: string - description: System-generated user ID. Must start with 'usr_' (19-25 + description: System-generated user ID. Must start with 'usr_' (19-25 characters) name: id in: path required: true - schema: type: string - description: External system identifier from connected directories. + description: External system identifier from connected directories. Must be unique across the system name: external_id in: query - schema: type: boolean - description: If true, sends an activation email to the user. Defaults + description: If true, sends an activation email to the user. Defaults to true. name: send_invitation_email in: query responses: - "201": - description: User successfully added to the organization. Returns + '201': + description: User successfully added to the organization. Returns details of the updated membership details content: application/json: schema: - $ref: "#/components/schemas/usersCreateMembershipResponse" + $ref: '#/components/schemas/usersCreateMembershipResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -914,12 +914,12 @@ paths: schema: description: Membership details to create. Required fields must be provided. - $ref: "#/components/schemas/v1usersCreateMembership" + $ref: '#/components/schemas/v1usersCreateMembership' required: true delete: - description: Removes a user from an organization by user ID or external + description: Removes a user from an organization by user ID or external ID. If the user has no memberships left and cascade is true, the user is - also deleted. This action is irreversible and may also remove related + also deleted. This action is irreversible and may also remove related group memberships. tags: - Users @@ -928,27 +928,27 @@ paths: parameters: - schema: type: string - description: Unique organization identifier. Must start with 'org_' + description: Unique organization identifier. Must start with 'org_' and be 1-32 characters long name: organization_id in: path required: true - schema: type: string - description: System-generated user ID. Must start with 'usr_' (19-25 + description: System-generated user ID. Must start with 'usr_' (19-25 characters) name: id in: path required: true - schema: type: string - description: External system identifier from connected directories. + description: External system identifier from connected directories. Must match existing records name: external_id in: query responses: - "200": - description: User successfully marked for deletion. No content + '200': + description: User successfully marked for deletion. No content returned content: application/json: @@ -970,14 +970,14 @@ paths: parameters: - schema: type: string - description: Unique identifier of the organization containing the + description: Unique identifier of the organization containing the membership. Must start with 'org_' and be 1-32 characters long. name: organization_id in: path required: true - schema: type: string - description: System-generated user ID. Must start with 'usr_' and be + description: System-generated user ID. Must start with 'usr_' and be 19-25 characters long. name: id in: path @@ -988,27 +988,27 @@ paths: name: external_id in: query responses: - "200": + '200': description: Membership updated successfully. Returns the updated user object. content: application/json: schema: - $ref: "#/components/schemas/usersUpdateMembershipResponse" + $ref: '#/components/schemas/usersUpdateMembershipResponse' requestBody: content: application/json: schema: - description: Membership fields to update. Only specified fields + description: Membership fields to update. Only specified fields will be modified. - $ref: "#/components/schemas/v1usersUpdateMembership" + $ref: '#/components/schemas/v1usersUpdateMembership' examples: - role: admin required: true /api/v1/organizations: get: - description: Retrieve a paginated list of organizations within your - environment. The response includes a `page_token` that can be used to + description: Retrieve a paginated list of organizations within your + environment. The response includes a `page_token` that can be used to access subsequent pages of results. tags: - Organizations @@ -1018,30 +1018,30 @@ paths: - schema: type: integer format: int64 - description: Maximum number of organizations to return per page. Must + description: Maximum number of organizations to return per page. Must be between 10 and 100 name: page_size in: query - schema: type: string - description: Pagination token from the previous response. Use to + description: Pagination token from the previous response. Use to retrieve the next page of organizations name: page_token in: query - schema: type: string - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system name: external_id in: query responses: - "200": + '200': description: Successfully retrieved the list of organizations content: application/json: schema: - $ref: "#/components/schemas/organizationsListOrganizationsResponse" - "400": + $ref: '#/components/schemas/organizationsListOrganizationsResponse' + '400': description: Invalid page token content: application/json: @@ -1073,26 +1073,26 @@ paths: ) - label: Java SDK lang: java - source: ListOrganizationsResponse organizations = + source: ListOrganizationsResponse organizations = scalekitClient.organizations().listOrganizations(10, ""); post: - description: Creates a new organization in your environment. Use this - endpoint to add a new tenant that can be configured with various + description: Creates a new organization in your environment. Use this + endpoint to add a new tenant that can be configured with various settings and metadata tags: - Organizations summary: Create an organization operationId: OrganizationService_CreateOrganization responses: - "201": - description: Returns the newly created organization with its unique + '201': + description: Returns the newly created organization with its unique identifier and settings content: application/json: schema: - $ref: "#/components/schemas/organizationsCreateOrganizationResponse" + $ref: '#/components/schemas/organizationsCreateOrganizationResponse' x-badges: - - name: "" + - name: '' x-codeSamples: - label: Node.js SDK lang: javascript @@ -1137,12 +1137,12 @@ paths: application/json: schema: description: Required parameters for creating a new organization - $ref: "#/components/schemas/v1organizationsCreateOrganization" + $ref: '#/components/schemas/v1organizationsCreateOrganization' description: Organization details required: true /api/v1/organizations/{id}: get: - description: Retrieves organization details by Scalekit ID, including + description: Retrieves organization details by Scalekit ID, including name, region, metadata, and settings tags: - Organizations @@ -1151,19 +1151,19 @@ paths: parameters: - schema: type: string - description: Unique scalekit-generated identifier that uniquely + description: Unique scalekit-generated identifier that uniquely references an organization name: id in: path required: true responses: - "200": + '200': description: Returns the complete organization object with ID, display name, settings, and metadata content: application/json: schema: - $ref: "#/components/schemas/organizationsGetOrganizationResponse" + $ref: '#/components/schemas/organizationsGetOrganizationResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -1215,7 +1215,7 @@ paths: Organization organization = scalekitClient.organizations().getById(organizationId); delete: - description: Remove an existing organization from the environment using + description: Remove an existing organization from the environment using its unique identifier tags: - Organizations @@ -1224,14 +1224,14 @@ paths: parameters: - schema: type: string - description: Unique scalekit-generated identifier that uniquely + description: Unique scalekit-generated identifier that uniquely references an organization name: id in: path required: true responses: - "200": - description: Organization successfully deleted and no longer + '200': + description: Organization successfully deleted and no longer accessible content: application/json: @@ -1239,12 +1239,11 @@ paths: x-codeSamples: - label: Node.js SDK lang: javascript - source: await + source: await scalekit.organization.deleteOrganization(organizationId); - label: Python SDK lang: python - source: - scalekit_client.organization.delete_organization(organization_id) + source: scalekit_client.organization.delete_organization(organization_id) - label: Go SDK lang: go source: |- @@ -1263,8 +1262,8 @@ paths: scalekitClient.organizations().deleteById(organizationId); patch: - description: Updates an organization's display name, external ID, or - metadata. Requires a valid organization identifier. Region code cannot + description: Updates an organization's display name, external ID, or + metadata. Requires a valid organization identifier. Region code cannot be modified through this endpoint. tags: - Organizations @@ -1278,13 +1277,13 @@ paths: in: path required: true responses: - "200": + '200': description: Returns the updated organization with all current details reflected in the response. content: application/json: schema: - $ref: "#/components/schemas/organizationsUpdateOrganizationResponse" + $ref: '#/components/schemas/organizationsUpdateOrganizationResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -1329,13 +1328,13 @@ paths: application/json: schema: description: Organization Parameters to be updated - $ref: "#/components/schemas/v1organizationsUpdateOrganization" + $ref: '#/components/schemas/v1organizationsUpdateOrganization' required: true /api/v1/organizations/{id}/portal_links: put: - description: Creates a single use Admin Portal URL valid for 1 minute. + description: Creates a single use Admin Portal URL valid for 1 minute. Once the generated admin portal URL is accessed or rendered, a temporary - session of 6 hours is created to allow the admin to update SSO/SCIM + session of 6 hours is created to allow the admin to update SSO/SCIM configuration. tags: - Organizations @@ -1376,17 +1375,17 @@ paths: name: features in: query responses: - "200": - description: Admin Portal link generated successfully. Returns the + '200': + description: Admin Portal link generated successfully. Returns the portal URL and expiration timestamp. content: application/json: schema: - $ref: "#/components/schemas/organizationsGeneratePortalLinkResponse" + $ref: '#/components/schemas/organizationsGeneratePortalLinkResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const link = await + source: const link = await scalekit.organization.generatePortalLink(organizationId); - label: Python SDK lang: python @@ -1409,9 +1408,9 @@ paths: .generatePortalLink(organizationId, Arrays.asList(Feature.sso, Feature.dir_sync)); /api/v1/organizations/{id}/settings: patch: - description: Updates configuration settings for an organization. Supports - modifying SSO configuration, directory synchronization settings, and - session parameters. Requires organization ID and the specific settings + description: Updates configuration settings for an organization. Supports + modifying SSO configuration, directory synchronization settings, and + session parameters. Requires organization ID and the specific settings to update. tags: - Organizations @@ -1426,22 +1425,22 @@ paths: in: path required: true responses: - "200": - description: Returns the complete organization object with updated - settings applied. Contains all organization details including ID, + '200': + description: Returns the complete organization object with updated + settings applied. Contains all organization details including ID, display name, and the modified settings. content: application/json: schema: - $ref: "#/components/schemas/organizationsGetOrganizationResponse" - "400": - description: Invalid request - occurs when the settings payload + $ref: '#/components/schemas/organizationsGetOrganizationResponse' + '400': + description: Invalid request - occurs when the settings payload contains invalid values or unsupported configuration content: application/json: schema: {} - "404": - description: Organization not found - the specified organization ID + '404': + description: Organization not found - the specified organization ID doesn't exist content: application/json: @@ -1534,10 +1533,10 @@ paths: content: application/json: schema: - description: Settings configuration to apply to the organization. + description: Settings configuration to apply to the organization. Contains feature toggles for SSO, directory synchronization, and other organization capabilities - $ref: "#/components/schemas/organizationsOrganizationSettings" + $ref: '#/components/schemas/organizationsOrganizationSettings' examples: - features: - enabled: true @@ -1547,11 +1546,11 @@ paths: required: true /api/v1/organizations/{org_id}/roles: get: - description: Retrieves all environment roles and organization specific - roles. Use this endpoint to view all role definitions, including custom - roles and their configurations. You can optionally include permission - details for each role to understand their capabilities. This is useful - for role management, auditing organization access controls, or + description: Retrieves all environment roles and organization specific + roles. Use this endpoint to view all role definitions, including custom + roles and their configurations. You can optionally include permission + details for each role to understand their capabilities. This is useful + for role management, auditing organization access controls, or understanding the available access levels within the organization. tags: - Roles @@ -1571,22 +1570,22 @@ paths: name: include in: query responses: - "200": - description: Successfully retrieved list of organization roles. - Returns all roles with their metadata and optionally their + '200': + description: Successfully retrieved list of organization roles. + Returns all roles with their metadata and optionally their permissions. content: application/json: schema: - $ref: "#/components/schemas/rolesListOrganizationRolesResponse" + $ref: '#/components/schemas/rolesListOrganizationRolesResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.role.listOrganizationRoles("org_123"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.roles.list_organization_roles(org_id="org_123") - label: Go SDK lang: go @@ -1599,15 +1598,15 @@ paths: _ = resp - label: Java SDK lang: java - source: ListOrganizationRolesResponse res = + source: ListOrganizationRolesResponse res = scalekitClient.roles().listOrganizationRoles("org_123"); post: - description: Creates a new role within the specified organization with - basic configuration including name, display name, description, and - permissions. Use this endpoint to define custom roles that can be - assigned to users within the organization. You can create hierarchical - roles by extending existing roles and assign specific permissions to - control access levels. The role will be scoped to the organization and + description: Creates a new role within the specified organization with + basic configuration including name, display name, description, and + permissions. Use this endpoint to define custom roles that can be + assigned to users within the organization. You can create hierarchical + roles by extending existing roles and assign specific permissions to + control access levels. The role will be scoped to the organization and can be used for organization-specific access control. tags: - Roles @@ -1621,13 +1620,13 @@ paths: in: path required: true responses: - "201": - description: Organization role created successfully. Returns the + '201': + description: Organization role created successfully. Returns the complete role object with system-generated ID and timestamps. content: application/json: schema: - $ref: "#/components/schemas/rolesCreateOrganizationRoleResponse" + $ref: '#/components/schemas/rolesCreateOrganizationRoleResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -1698,16 +1697,16 @@ paths: application/json: schema: description: Organization role details - $ref: "#/components/schemas/v1rolesCreateOrganizationRole" + $ref: '#/components/schemas/v1rolesCreateOrganizationRole' required: true /api/v1/organizations/{org_id}/roles/{role_name}: get: - description: Retrieves complete information for a specific organization - role including metadata, inheritance details, and optionally - permissions. Use this endpoint to audit role configuration and - understand the role's place in the organization's role hierarchy. You - can include permission details to see what capabilities the role - provides. This operation is useful for role management, user assignment + description: Retrieves complete information for a specific organization + role including metadata, inheritance details, and optionally + permissions. Use this endpoint to audit role configuration and + understand the role's place in the organization's role hierarchy. You + can include permission details to see what capabilities the role + provides. This operation is useful for role management, user assignment decisions, or understanding organization access controls. tags: - Roles @@ -1733,15 +1732,15 @@ paths: name: include in: query responses: - "200": + '200': description: Successfully retrieved organization role details. Returns - the role object including metadata and inheritance details. - Permissions are included only when requested via the include + the role object including metadata and inheritance details. + Permissions are included only when requested via the include parameter. content: application/json: schema: - $ref: "#/components/schemas/rolesGetOrganizationRoleResponse" + $ref: '#/components/schemas/rolesGetOrganizationRoleResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -1765,14 +1764,14 @@ paths: _ = resp - label: Java SDK lang: java - source: GetOrganizationRoleResponse res = + source: GetOrganizationRoleResponse res = scalekitClient.roles().getOrganizationRole("org_123", "org_admin"); put: description: Modifies an existing organization role's properties including - display name, description, permissions, and inheritance settings. Use + display name, description, permissions, and inheritance settings. Use this endpoint to update role metadata, change permission assignments, or - modify role hierarchy within the organization. Only the fields you - specify will be updated, leaving other properties unchanged. When + modify role hierarchy within the organization. Only the fields you + specify will be updated, leaving other properties unchanged. When updating permissions, the new list replaces all existing permissions for the role. tags: @@ -1793,13 +1792,13 @@ paths: in: path required: true responses: - "200": - description: Organization role updated successfully. Returns the + '200': + description: Organization role updated successfully. Returns the modified role object with updated timestamps. content: application/json: schema: - $ref: "#/components/schemas/rolesUpdateOrganizationRoleResponse" + $ref: '#/components/schemas/rolesUpdateOrganizationRoleResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -1854,15 +1853,15 @@ paths: application/json: schema: description: Organization role details - $ref: "#/components/schemas/v1rolesUpdateRole" + $ref: '#/components/schemas/v1rolesUpdateRole' required: true delete: - description: Permanently removes a role from the organization and - optionally reassigns users who had that role to a different role. Use + description: Permanently removes a role from the organization and + optionally reassigns users who had that role to a different role. Use this endpoint when you need to clean up unused roles or restructure your - organization's access control system. If users are assigned to the role - being deleted, you can provide a reassign_role_name to move those users - to a different role before deletion. This action cannot be undone, so + organization's access control system. If users are assigned to the role + being deleted, you can provide a reassign_role_name to move those users + to a different role before deletion. This action cannot be undone, so ensure no critical users depend on the role before deletion. tags: - Roles @@ -1887,8 +1886,8 @@ paths: name: reassign_role_name in: query responses: - "200": - description: Organization role successfully deleted and users + '200': + description: Organization role successfully deleted and users reassigned if specified. No content returned. content: application/json: @@ -1952,11 +1951,11 @@ paths: "org_role_admin", "org_role_member"); /api/v1/organizations/{org_id}/roles:set_defaults: patch: - description: Updates the default member role for the specified + description: Updates the default member role for the specified organization. Use this endpoint to configure which role is automatically - assigned to new users when they join the organization. The system will - validate that the specified role exists and update the organization - settings accordingly. This configuration affects all new user + assigned to new users when they join the organization. The system will + validate that the specified role exists and update the organization + settings accordingly. This configuration affects all new user invitations and memberships within the organization. tags: - Roles @@ -1970,14 +1969,14 @@ paths: in: path required: true responses: - "200": - description: Default organization roles updated successfully. Returns - the updated default member role object with complete role + '200': + description: Default organization roles updated successfully. Returns + the updated default member role object with complete role information. content: application/json: schema: - $ref: "#/components/schemas/rolesUpdateDefaultOrganizationRolesResponse" + $ref: '#/components/schemas/rolesUpdateDefaultOrganizationRolesResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -2023,12 +2022,12 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/RolesServiceUpdateDefaultOrganizationRolesBody" + $ref: '#/components/schemas/RolesServiceUpdateDefaultOrganizationRolesBody' required: true /api/v1/organizations/{organization_id}/clients: get: - description: Retrieves a paginated list of API clients for a specific - organization. Returns client details including metadata, scopes, and + description: Retrieves a paginated list of API clients for a specific + organization. Returns client details including metadata, scopes, and secret information (without exposing actual secret values). tags: - API Auth @@ -2037,7 +2036,7 @@ paths: parameters: - schema: type: string - description: Unique identifier of the organization whose clients to + description: Unique identifier of the organization whose clients to list. Must start with 'org_' prefix. name: organization_id in: path @@ -2064,13 +2063,13 @@ paths: name: page_token in: query responses: - "200": - description: List of organization API clients returned successfully. + '200': + description: List of organization API clients returned successfully. Each client includes its configuration details and metadata. content: application/json: schema: - $ref: "#/components/schemas/clientsListOrganizationClientsResponse" + $ref: '#/components/schemas/clientsListOrganizationClientsResponse' x-codeSamples: - label: Python SDK lang: python @@ -2095,7 +2094,7 @@ paths: for client in clients: print(f"Client ID: {scalekit_client.id}, Name: {scalekit_client.name}") post: - description: Creates a new API client for an organization. Returns the + description: Creates a new API client for an organization. Returns the client details and a plain secret (available only once). tags: - API Auth @@ -2109,15 +2108,15 @@ paths: in: path required: true responses: - "201": - description: API client created successfully. Returns the client ID - and plain secret (only available at creation time). The client can - be configured with scopes, audience values, and custom claims for + '201': + description: API client created successfully. Returns the client ID + and plain secret (only available at creation time). The client can + be configured with scopes, audience values, and custom claims for fine-grained access control. content: application/json: schema: - $ref: "#/components/schemas/clientsCreateOrganizationClientResponse" + $ref: '#/components/schemas/clientsCreateOrganizationClientResponse' x-codeSamples: - label: Python SDK lang: python @@ -2148,11 +2147,11 @@ paths: application/json: schema: description: Details of the client to be created - $ref: "#/components/schemas/clientsOrganizationClient" + $ref: '#/components/schemas/clientsOrganizationClient' required: true /api/v1/organizations/{organization_id}/clients/{client_id}: get: - description: Retrieves details of a specific API client in an + description: Retrieves details of a specific API client in an organization. tags: - API Auth @@ -2172,14 +2171,14 @@ paths: in: path required: true responses: - "200": - description: Returns the complete API client configuration, including - all current settings and a list of active secrets. Note that secret + '200': + description: Returns the complete API client configuration, including + all current settings and a list of active secrets. Note that secret values are not included in the response for security reasons. content: application/json: schema: - $ref: "#/components/schemas/clientsGetOrganizationClientResponse" + $ref: '#/components/schemas/clientsGetOrganizationClientResponse' x-codeSamples: - label: Python SDK lang: python @@ -2194,9 +2193,9 @@ paths: client_id=client_id ) delete: - description: Permanently deletes an API client from an organization. This - operation cannot be undone and will revoke all access for the client. - All associated secrets will also be invalidated. Use this endpoint to + description: Permanently deletes an API client from an organization. This + operation cannot be undone and will revoke all access for the client. + All associated secrets will also be invalidated. Use this endpoint to remove unused or compromised clients. tags: - API Auth @@ -2205,21 +2204,21 @@ paths: parameters: - schema: type: string - description: Unique identifier of the organization that owns the + description: Unique identifier of the organization that owns the client. Must start with 'org_' prefix. name: organization_id in: path required: true - schema: type: string - description: Unique identifier of the API client to permanently + description: Unique identifier of the API client to permanently delete. Must start with 'm2morg_' prefix. name: client_id in: path required: true responses: - "200": - description: Organization API client successfully deleted and no + '200': + description: Organization API client successfully deleted and no longer accessible content: application/json: @@ -2238,7 +2237,7 @@ paths: client_id=client_id ) patch: - description: Updates an existing organization API client. Only specified + description: Updates an existing organization API client. Only specified fields are modified. tags: - API Auth @@ -2258,14 +2257,14 @@ paths: in: path required: true responses: - "200": - description: Returns the updated organization API client with all - current details reflected in the response, including modified + '200': + description: Returns the updated organization API client with all + current details reflected in the response, including modified scopes, audience values, and custom claims. content: application/json: schema: - $ref: "#/components/schemas/clientsUpdateOrganizationClientResponse" + $ref: '#/components/schemas/clientsUpdateOrganizationClientResponse' x-codeSamples: - label: Python SDK lang: python @@ -2298,11 +2297,11 @@ paths: application/json: schema: description: Updated details for the client - $ref: "#/components/schemas/clientsOrganizationClient" + $ref: '#/components/schemas/clientsOrganizationClient' required: true /api/v1/organizations/{organization_id}/clients/{client_id}/secrets: post: - description: Creates a new secret for an organization API client. Returns + description: Creates a new secret for an organization API client. Returns the plain secret (available only once). tags: - API Auth @@ -2322,14 +2321,14 @@ paths: in: path required: true responses: - "201": - description: Client secret created successfully. Returns the new - secret ID and the plain secret value (only available at creation + '201': + description: Client secret created successfully. Returns the new + secret ID and the plain secret value (only available at creation time). The secret can be used immediately for authentication. content: application/json: schema: - $ref: "#/components/schemas/clientsCreateOrganizationClientSecretResponse" + $ref: '#/components/schemas/clientsCreateOrganizationClientSecretResponse' x-codeSamples: - label: Python SDK lang: python @@ -2381,8 +2380,8 @@ paths: in: path required: true responses: - "200": - description: Client secret successfully deleted and no longer + '200': + description: Client secret successfully deleted and no longer accessible content: application/json: @@ -2411,8 +2410,8 @@ paths: /api/v1/organizations/{organization_id}/connections/{id}: get: description: Retrieves the complete configuration and status details for a - specific connection by its ID within an organization. Returns all - connection properties including provider settings, protocols, and + specific connection by its ID within an organization. Returns all + connection properties including provider settings, protocols, and current status. tags: - Connections @@ -2421,26 +2420,26 @@ paths: parameters: - schema: type: string - description: Organization identifier (required). Specifies which + description: Organization identifier (required). Specifies which organization owns the connection you want to retrieve. name: organization_id in: path required: true - schema: type: string - description: Connection identifier (required). Specifies which + description: Connection identifier (required). Specifies which specific connection to retrieve from the organization. name: id in: path required: true responses: - "200": - description: Successfully retrieved connection details for the + '200': + description: Successfully retrieved connection details for the specified organization content: application/json: schema: - $ref: "#/components/schemas/connectionsGetConnectionResponse" + $ref: '#/components/schemas/connectionsGetConnectionResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -2466,14 +2465,14 @@ paths: ) - label: Java SDK lang: java - source: Connection connection = - scalekitClient.connections().getConnectionById(connectionId, + source: Connection connection = + scalekitClient.connections().getConnectionById(connectionId, organizationId); /api/v1/organizations/{organization_id}/connections/{id}:disable: patch: - description: Deactivate an existing connection for the specified - organization. When disabled, users cannot authenticate using this - connection. This endpoint changes the connection state from enabled to + description: Deactivate an existing connection for the specified + organization. When disabled, users cannot authenticate using this + connection. This endpoint changes the connection state from enabled to disabled without modifying other configuration settings tags: - Connections @@ -2494,16 +2493,16 @@ paths: in: path required: true responses: - "200": + '200': description: Connection disabled successfully content: application/json: schema: - $ref: "#/components/schemas/connectionsToggleConnectionResponse" + $ref: '#/components/schemas/connectionsToggleConnectionResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: await scalekit.connection.disableConnection(organizationId, + source: await scalekit.connection.disableConnection(organizationId, connectionId); - label: Python SDK lang: python @@ -2522,14 +2521,14 @@ paths: ) - label: Java SDK lang: java - source: ToggleConnectionResponse response = - scalekitClient.connections().disableConnection(connectionId, + source: ToggleConnectionResponse response = + scalekitClient.connections().disableConnection(connectionId, organizationId); /api/v1/organizations/{organization_id}/connections/{id}:enable: patch: - description: Activate an existing connection for the specified - organization. When enabled, users can authenticate using this - connection. This endpoint changes the connection state from disabled to + description: Activate an existing connection for the specified + organization. When enabled, users can authenticate using this + connection. This endpoint changes the connection state from disabled to enabled without modifying other configuration settings tags: - Connections @@ -2550,16 +2549,16 @@ paths: in: path required: true responses: - "200": + '200': description: Connection enabled successfully content: application/json: schema: - $ref: "#/components/schemas/connectionsToggleConnectionResponse" + $ref: '#/components/schemas/connectionsToggleConnectionResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: await scalekit.connection.enableConnection(organizationId, + source: await scalekit.connection.enableConnection(organizationId, connectionId); - label: Python SDK lang: python @@ -2578,8 +2577,8 @@ paths: ) - label: Java SDK lang: java - source: ToggleConnectionResponse response = - scalekitClient.connections().enableConnection(connectionId, + source: ToggleConnectionResponse response = + scalekitClient.connections().enableConnection(connectionId, organizationId); /api/v1/organizations/{organization_id}/directories: get: @@ -2595,13 +2594,13 @@ paths: in: path required: true responses: - "200": - description: Successfully retrieved the list of directories for the + '200': + description: Successfully retrieved the list of directories for the organization content: application/json: schema: - $ref: "#/components/schemas/directoriesListDirectoriesResponse" + $ref: '#/components/schemas/directoriesListDirectoriesResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -2614,15 +2613,15 @@ paths: ) - label: Go SDK lang: go - source: directories,err := + source: directories,err := scalekitClient.Directory().ListDirectories(ctx, organizationId) - label: Java SDK lang: java - source: ListDirectoriesResponse response = + source: ListDirectoriesResponse response = scalekitClient.directories().listDirectories(organizationId); /api/v1/organizations/{organization_id}/directories/{directory_id}/groups: get: - description: Retrieves all groups from a specified directory. Use this + description: Retrieves all groups from a specified directory. Use this endpoint to view group structures from your connected identity provider. tags: - Directory @@ -2650,37 +2649,37 @@ paths: in: query - schema: type: string - description: Token for pagination. Use the value returned in the + description: Token for pagination. Use the value returned in the 'next_page_token' field of the previous response name: page_token in: query - schema: type: string format: date-time - description: Filter groups updated after this timestamp. Use ISO 8601 + description: Filter groups updated after this timestamp. Use ISO 8601 format name: updated_after in: query - schema: type: boolean - description: If true, includes full group details. If false or not + description: If true, includes full group details. If false or not specified, returns basic information only name: include_detail in: query - schema: type: boolean - description: "If true, returns group and its details from external provider - (default: false)" + description: 'If true, returns group and its details from external provider + (default: false)' name: include_external_groups in: query responses: - "200": - description: Successfully retrieved the list of groups from the + '200': + description: Successfully retrieved the list of groups from the specified directory content: application/json: schema: - $ref: "#/components/schemas/directoriesListDirectoryGroupsResponse" + $ref: '#/components/schemas/directoriesListDirectoryGroupsResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -2724,8 +2723,8 @@ paths: .listDirectoryGroups(directory.getId(), organizationId, options); /api/v1/organizations/{organization_id}/directories/{directory_id}/users: get: - description: Retrieves a list of all users within a specified directory - for an organization. This endpoint allows you to view user accounts + description: Retrieves a list of all users within a specified directory + for an organization. This endpoint allows you to view user accounts associated with your connected Directory Providers. tags: - Directory @@ -2740,7 +2739,7 @@ paths: required: true - schema: type: string - description: Unique identifier of the directory within the + description: Unique identifier of the directory within the organization name: directory_id in: path @@ -2748,45 +2747,45 @@ paths: - schema: type: integer format: int64 - description: Number of users to return per page. Maximum value is 30. + description: Number of users to return per page. Maximum value is 30. If not specified, defaults to 10 name: page_size in: query - schema: type: string - description: Token for pagination. Use the value returned in the - 'next_page_token' field of the previous response to retrieve the + description: Token for pagination. Use the value returned in the + 'next_page_token' field of the previous response to retrieve the next page of results name: page_token in: query - schema: type: boolean - description: If set to true, the response will include the full user - payload with all available details. If false or not specified, only + description: If set to true, the response will include the full user + payload with all available details. If false or not specified, only essential user information will be returned name: include_detail in: query - schema: type: string - description: Filter users by their membership in a specific directory + description: Filter users by their membership in a specific directory group name: directory_group_id in: query - schema: type: string format: date-time - description: Filter users that were updated after the specified + description: Filter users that were updated after the specified timestamp. Use ISO 8601 format name: updated_after in: query responses: - "200": - description: Successfully retrieved the list of users from the + '200': + description: Successfully retrieved the list of users from the specified directory content: application/json: schema: - $ref: "#/components/schemas/directoriesListDirectoryUsersResponse" + $ref: '#/components/schemas/directoriesListDirectoryUsersResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -2829,7 +2828,7 @@ paths: .listDirectoryUsers(directory.getId(), organizationId, options); /api/v1/organizations/{organization_id}/directories/{id}: get: - description: Retrieves detailed information about a specific directory + description: Retrieves detailed information about a specific directory within an organization tags: - Directory @@ -2849,12 +2848,12 @@ paths: in: path required: true responses: - "200": + '200': description: Successfully retrieved directory details content: application/json: schema: - $ref: "#/components/schemas/directoriesGetDirectoryResponse" + $ref: '#/components/schemas/directoriesGetDirectoryResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -2876,13 +2875,13 @@ paths: organizationId, directoryId) - label: Java SDK lang: java - source: Directory directory = - scalekitClient.directories().getDirectory(directoryId, + source: Directory directory = + scalekitClient.directories().getDirectory(directoryId, organizationId); /api/v1/organizations/{organization_id}/directories/{id}:disable: patch: - description: Stops synchronization of users and groups from a specified - directory within an organization. This operation prevents further + description: Stops synchronization of users and groups from a specified + directory within an organization. This operation prevents further updates from the connected Directory provider tags: - Directory @@ -2891,26 +2890,26 @@ paths: parameters: - schema: type: string - description: A unique identifier for the organization. The value must + description: A unique identifier for the organization. The value must begin with 'org_' and be between 1 and 32 characters long name: organization_id in: path required: true - schema: type: string - description: A unique identifier for a directory within the - organization. The value must begin with 'dir_' and be between 1 and + description: A unique identifier for a directory within the + organization. The value must begin with 'dir_' and be between 1 and 32 characters long name: id in: path required: true responses: - "200": + '200': description: Successfully disabled the directory content: application/json: schema: - $ref: "#/components/schemas/directoriesToggleDirectoryResponse" + $ref: '#/components/schemas/directoriesToggleDirectoryResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -2927,8 +2926,8 @@ paths: ) - label: Go SDK lang: go - source: disable,err := - scalekitClient.Directory().DisableDirectory(ctx, organizationId, + source: disable,err := + scalekitClient.Directory().DisableDirectory(ctx, organizationId, directoryId) - label: Java SDK lang: java @@ -2938,7 +2937,7 @@ paths: .disableDirectory(directoryId, organizationId); /api/v1/organizations/{organization_id}/directories/{id}:enable: patch: - description: Activates a directory within an organization, allowing it to + description: Activates a directory within an organization, allowing it to synchronize users and groups with the connected Directory provider tags: - Directory @@ -2947,30 +2946,30 @@ paths: parameters: - schema: type: string - description: A unique identifier for the organization. The value must + description: A unique identifier for the organization. The value must begin with 'org_' and be between 1 and 32 characters long name: organization_id in: path required: true - schema: type: string - description: A unique identifier for a directory within the - organization. The value must begin with 'dir_' and be between 1 and + description: A unique identifier for a directory within the + organization. The value must begin with 'dir_' and be between 1 and 32 characters long name: id in: path required: true responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/directoriesToggleDirectoryResponse" + $ref: '#/components/schemas/directoriesToggleDirectoryResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: await scalekit.directory.enableDirectory('', + source: await scalekit.directory.enableDirectory('', ''); - label: Python SDK lang: python @@ -2980,7 +2979,7 @@ paths: ) - label: Go SDK lang: go - source: enable,err := scalekitClient.Directory().EnableDirectory(ctx, + source: enable,err := scalekitClient.Directory().EnableDirectory(ctx, organizationId, directoryId) - label: Java SDK lang: java @@ -3011,29 +3010,29 @@ paths: parameters: - schema: type: string - description: Scalekit-generated unique identifier for the - organization. Use either this or external_id to identify the + description: Scalekit-generated unique identifier for the + organization. Use either this or external_id to identify the organization. name: organization_id in: path required: true - schema: type: string - description: Optional comma-separated list of additional fields to + description: Optional comma-separated list of additional fields to include in the response (e.g., 'verification_details'). name: include in: query - schema: type: integer format: int32 - description: Maximum number of domains to return per page. Default is + description: Maximum number of domains to return per page. Default is 30, maximum is 100. name: page_size in: query - schema: type: integer format: int32 - description: Page number to retrieve (0-based). Use 0 for the first + description: Page number to retrieve (0-based). Use 0 for the first page. name: page_number in: query @@ -3053,12 +3052,12 @@ paths: name: domain_type in: query responses: - "200": + '200': description: Successfully retrieved the list of domains. content: application/json: schema: - $ref: "#/components/schemas/domainsListDomainResponse" + $ref: '#/components/schemas/domainsListDomainResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3094,8 +3093,8 @@ paths: }) - label: Java SDK lang: java - source: List domains = - scalekitClient.domains().listDomainsByOrganizationId("org_id", + source: List domains = + scalekitClient.domains().listDomainsByOrganizationId("org_id", "ORGANIZATION_DOMAIN"); post: description: >+ @@ -3123,26 +3122,26 @@ paths: parameters: - schema: type: string - description: Scalekit-generated unique identifier for the - organization. Use either this or external_id to identify the + description: Scalekit-generated unique identifier for the + organization. Use either this or external_id to identify the organization. name: organization_id in: path required: true responses: - "200": + '200': description: Successfully created the domain. content: application/json: schema: - $ref: "#/components/schemas/domainsCreateDomainResponse" - "400": - description: Invalid request — common causes invalid domain format, + $ref: '#/components/schemas/domainsCreateDomainResponse' + '400': + description: Invalid request — common causes invalid domain format, public or disposable domain, or domain already exists. content: application/json: schema: - $ref: "#/components/schemas/errdetailsErrorInfo" + $ref: '#/components/schemas/errdetailsErrorInfo' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3192,9 +3191,9 @@ paths: content: application/json: schema: - description: Domain configuration including the domain name and + description: Domain configuration including the domain name and type. - $ref: "#/components/schemas/v1domainsCreateDomain" + $ref: '#/components/schemas/v1domainsCreateDomain' required: true /api/v1/organizations/{organization_id}/domains/{id}: get: @@ -3209,26 +3208,26 @@ paths: parameters: - schema: type: string - description: Scalekit-generated unique identifier for the - organization. Use either this or external_id to identify the + description: Scalekit-generated unique identifier for the + organization. Use either this or external_id to identify the organization. name: organization_id in: path required: true - schema: type: string - description: Scalekit-generated unique identifier of the domain to + description: Scalekit-generated unique identifier of the domain to retrieve. name: id in: path required: true responses: - "200": + '200': description: Successfully retrieved the domain details. content: application/json: schema: - $ref: "#/components/schemas/domainsGetDomainResponse" + $ref: '#/components/schemas/domainsGetDomainResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3258,11 +3257,11 @@ paths: domain_id="dom_123") - label: Go SDK lang: go - source: domain, err := scalekitClient.Domain().GetDomain(ctx, + source: domain, err := scalekitClient.Domain().GetDomain(ctx, "dom_123", "org_123") - label: Java SDK lang: java - source: Domain domain = + source: Domain domain = scalekitClient.domains().getDomainById("org_123", "dom_123"); delete: description: >+ @@ -3282,21 +3281,21 @@ paths: parameters: - schema: type: string - description: Scalekit-generated unique identifier for the - organization. Use either this or external_id to identify the + description: Scalekit-generated unique identifier for the + organization. Use either this or external_id to identify the organization. name: organization_id in: path required: true - schema: type: string - description: Scalekit-generated unique identifier of the domain to be + description: Scalekit-generated unique identifier of the domain to be permanently deleted. name: id in: path required: true responses: - "200": + '200': description: Domain successfully deleted. content: application/json: @@ -3322,11 +3321,11 @@ paths: ) - label: Go SDK lang: go - source: err = scalekitClient.Domain().DeleteDomain(ctx, "dom_123", + source: err = scalekitClient.Domain().DeleteDomain(ctx, "dom_123", "org_123") - label: Java SDK lang: java - source: scalekitClient.domains().deleteDomain(organization.getId(), + source: scalekitClient.domains().deleteDomain(organization.getId(), domain.getId()); /api/v1/organizations/{organization_id}/settings/usermanagement: patch: @@ -3343,23 +3342,23 @@ paths: in: path required: true responses: - "200": + '200': description: Returns the updated organization setting. content: application/json: schema: - $ref: "#/components/schemas/organizationsUpsertUserManagementSettingsResponse" + $ref: '#/components/schemas/organizationsUpsertUserManagementSettingsResponse' requestBody: content: application/json: schema: - $ref: "#/components/schemas/OrganizationServiceUpsertUserManagementSettingsBody" + $ref: '#/components/schemas/OrganizationServiceUpsertUserManagementSettingsBody' required: true /api/v1/organizations/{organization_id}/users: get: - description: Retrieves a paginated list of all users who are members of - the specified organization. Use this endpoint to view all users with - access to a particular organization, including their roles, metadata, + description: Retrieves a paginated list of all users who are members of + the specified organization. Use this endpoint to view all users with + access to a particular organization, including their roles, metadata, and membership details. Supports pagination for large user lists. tags: - Users @@ -3368,7 +3367,7 @@ paths: parameters: - schema: type: string - description: Unique identifier of the organization for which to list + description: Unique identifier of the organization for which to list users. Must start with 'org_' and be 1-32 characters long. name: organization_id in: path @@ -3376,25 +3375,25 @@ paths: - schema: type: integer format: int64 - description: "Maximum number of users to return in a single response. Valid - range: 1-100. Server may return fewer users than specified." + description: 'Maximum number of users to return in a single response. Valid + range: 1-100. Server may return fewer users than specified.' name: page_size in: query - schema: type: string - description: Pagination token from a previous ListUserResponse. Used - to retrieve the next page of results. Leave empty for the first + description: Pagination token from a previous ListUserResponse. Used + to retrieve the next page of results. Leave empty for the first request. name: page_token in: query responses: - "200": - description: Successfully retrieved the list of users in the + '200': + description: Successfully retrieved the list of users in the organization content: application/json: schema: - $ref: "#/components/schemas/usersListOrganizationUsersResponse" + $ref: '#/components/schemas/usersListOrganizationUsersResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3406,8 +3405,8 @@ paths: console.log(response.users); - label: Python SDK lang: python - source: resp, _ = - scalekit_client.users.list_users(organization_id="org_123", + source: resp, _ = + scalekit_client.users.list_users(organization_id="org_123", page_size=50) - label: Go SDK lang: go @@ -3428,11 +3427,11 @@ paths: ListOrganizationUsersResponse list = users. listOrganizationUsers("org_123", listReq); post: - description: Creates a new user account and immediately adds them to the + description: Creates a new user account and immediately adds them to the specified organization. Use this endpoint when you want to create a user - and grant them access to an organization in a single operation. You can + and grant them access to an organization in a single operation. You can provide user profile information, assign roles, and configure membership - metadata. The user receives an activation email unless this feature is + metadata. The user receives an activation email unless this feature is disabled in the organization settings. tags: - Users @@ -3446,18 +3445,18 @@ paths: required: true - schema: type: boolean - description: If true, sends an activation email to the user. Defaults + description: If true, sends an activation email to the user. Defaults to true. name: send_invitation_email in: query responses: - "201": - description: User created successfully. Returns the created user + '201': + description: User created successfully. Returns the created user object, including system-generated identifiers and timestamps content: application/json: schema: - $ref: "#/components/schemas/usersCreateUserAndMembershipResponse" + $ref: '#/components/schemas/usersCreateUserAndMembershipResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3550,12 +3549,12 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/usersCreateUser" + $ref: '#/components/schemas/usersCreateUser' required: true /api/v1/organizations/{organization_id}/users/{user_id}/permissions: get: - description: Retrieves all permissions a user has access to within a - specific organization. This includes permissions from direct role + description: Retrieves all permissions a user has access to within a + specific organization. This includes permissions from direct role assignments and inherited permissions from role hierarchy. tags: - Users @@ -3575,17 +3574,17 @@ paths: in: path required: true responses: - "200": - description: Successfully retrieved the list of permissions for the + '200': + description: Successfully retrieved the list of permissions for the user content: application/json: schema: - $ref: "#/components/schemas/usersListUserPermissionsResponse" + $ref: '#/components/schemas/usersListUserPermissionsResponse' /api/v1/organizations/{organization_id}/users/{user_id}/roles: get: - description: Retrieves all roles assigned to a user within a specific - organization. This includes both direct role assignments and inherited + description: Retrieves all roles assigned to a user within a specific + organization. This includes both direct role assignments and inherited roles from role hierarchy. tags: - Users @@ -3605,30 +3604,30 @@ paths: in: path required: true responses: - "200": - description: Successfully retrieved the list of roles assigned to the + '200': + description: Successfully retrieved the list of roles assigned to the user content: application/json: schema: - $ref: "#/components/schemas/usersListUserRolesResponse" + $ref: '#/components/schemas/usersListUserRolesResponse' /api/v1/passwordless/email/resend: post: - description: Resend a verification email if the user didn't receive it or + description: Resend a verification email if the user didn't receive it or if the previous code/link has expired tags: - Magic link & OTP summary: Resend passwordless email operationId: PasswordlessService_ResendPasswordlessEmail responses: - "200": - description: Successfully resent the passwordless authentication - email. Returns updated authentication request details with new + '200': + description: Successfully resent the passwordless authentication + email. Returns updated authentication request details with new expiration time. content: application/json: schema: - $ref: "#/components/schemas/passwordlessSendPasswordlessResponse" + $ref: '#/components/schemas/passwordlessSendPasswordlessResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3669,31 +3668,31 @@ paths: } - label: Java SDK lang: java - source: SendPasswordlessResponse resendResponse = + source: SendPasswordlessResponse resendResponse = passwordlessClient.resendPasswordlessEmail(authRequestId); requestBody: content: application/json: schema: - $ref: "#/components/schemas/passwordlessResendPasswordlessRequest" + $ref: '#/components/schemas/passwordlessResendPasswordlessRequest' required: true /api/v1/passwordless/email/send: post: - description: Send a verification email containing either a verification + description: Send a verification email containing either a verification code (OTP), magic link, or both to a user's email address tags: - Magic link & OTP summary: Send passwordless email operationId: PasswordlessService_SendPasswordlessEmail responses: - "200": - description: Successfully sent passwordless authentication email. + '200': + description: Successfully sent passwordless authentication email. Returns the authentication request details including expiration time and auth request ID content: application/json: schema: - $ref: "#/components/schemas/passwordlessSendPasswordlessResponse" + $ref: '#/components/schemas/passwordlessSendPasswordlessResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3794,24 +3793,24 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/passwordlessSendPasswordlessRequest" + $ref: '#/components/schemas/passwordlessSendPasswordlessRequest' required: true /api/v1/passwordless/email/verify: post: - description: Verify a user's identity using either a verification code or + description: Verify a user's identity using either a verification code or magic link token tags: - Magic link & OTP summary: Verify passwordless email operationId: PasswordlessService_VerifyPasswordlessEmail responses: - "200": - description: Successfully verified the passwordless authentication. + '200': + description: Successfully verified the passwordless authentication. Returns user email content: application/json: schema: - $ref: "#/components/schemas/passwordlessVerifyPasswordLessResponse" + $ref: '#/components/schemas/passwordlessVerifyPasswordLessResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3937,19 +3936,19 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/passwordlessVerifyPasswordLessRequest" + $ref: '#/components/schemas/passwordlessVerifyPasswordLessRequest' required: true /api/v1/permissions: get: - description: Retrieves a comprehensive, paginated list of all permissions - available within the environment. Use this endpoint to view all - permission definitions for auditing, role management, or understanding - the complete set of available access controls. The response includes - pagination tokens to navigate through large sets of permissions - efficiently. Each permission object contains the permission name, - description, creation time, and last update time. This operation is + description: Retrieves a comprehensive, paginated list of all permissions + available within the environment. Use this endpoint to view all + permission definitions for auditing, role management, or understanding + the complete set of available access controls. The response includes + pagination tokens to navigate through large sets of permissions + efficiently. Each permission object contains the permission name, + description, creation time, and last update time. This operation is useful for building permission selection interfaces, auditing permission - usage, or understanding the scope of available access controls in your + usage, or understanding the scope of available access controls in your RBAC system. tags: - Permissions @@ -3968,14 +3967,14 @@ paths: name: page_size in: query responses: - "200": + '200': description: Successfully retrieved the list of permissions. Returns a - paginated list of permission objects with metadata and pagination + paginated list of permission objects with metadata and pagination tokens for navigation. content: application/json: schema: - $ref: "#/components/schemas/rolesListPermissionsResponse" + $ref: '#/components/schemas/rolesListPermissionsResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -3991,31 +3990,31 @@ paths: _ = resp - label: Java SDK lang: java - source: ListPermissionsResponse res = + source: ListPermissionsResponse res = scalekitClient.permissions().listPermissions(); post: - description: Creates a new permission that represents a specific action - users can perform within the environment. Use this endpoint to define - granular access controls for your RBAC system. You can provide a unique - permission name following the format 'action:resource' (for example, - 'read:documents', 'write:users') and an optional description explaining - the permission's purpose. The permission name must be unique across the - environment and follows alphanumeric naming conventions with colons and - underscores. Returns the created permission object including + description: Creates a new permission that represents a specific action + users can perform within the environment. Use this endpoint to define + granular access controls for your RBAC system. You can provide a unique + permission name following the format 'action:resource' (for example, + 'read:documents', 'write:users') and an optional description explaining + the permission's purpose. The permission name must be unique across the + environment and follows alphanumeric naming conventions with colons and + underscores. Returns the created permission object including system-generated ID and timestamps. tags: - Permissions summary: Create new permission operationId: RolesService_CreatePermission responses: - "201": - description: Permission created successfully. Returns the complete - permission object with system-generated ID, name, description, and + '201': + description: Permission created successfully. Returns the complete + permission object with system-generated ID, name, description, and timestamps. content: application/json: schema: - $ref: "#/components/schemas/rolesCreatePermissionResponse" + $ref: '#/components/schemas/rolesCreatePermissionResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -4068,18 +4067,18 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/v1rolesCreatePermission" + $ref: '#/components/schemas/v1rolesCreatePermission' required: true /api/v1/permissions/{permission_name}: get: - description: Retrieves complete information for a specific permission by + description: Retrieves complete information for a specific permission by its unique name identifier. Use this endpoint to view permission details - including description, creation time, and last update time. Provide the - permission name in the path parameter following the format - 'action:resource' (for example, 'read:documents'). This operation is - useful for auditing permission definitions, understanding permission - purposes, or verifying permission existence before assignment. Returns - the complete permission object with all metadata and system-generated + including description, creation time, and last update time. Provide the + permission name in the path parameter following the format + 'action:resource' (for example, 'read:documents'). This operation is + useful for auditing permission definitions, understanding permission + purposes, or verifying permission existence before assignment. Returns + the complete permission object with all metadata and system-generated timestamps. tags: - Permissions @@ -4093,18 +4092,18 @@ paths: in: path required: true responses: - "200": - description: Successfully retrieved permission details. Returns the - complete permission object including name, description, creation + '200': + description: Successfully retrieved permission details. Returns the + complete permission object including name, description, creation time, and update time. content: application/json: schema: - $ref: "#/components/schemas/rolesGetPermissionResponse" + $ref: '#/components/schemas/rolesGetPermissionResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.permission.getPermission("read:users"); - label: Python SDK lang: python @@ -4123,18 +4122,18 @@ paths: _ = resp - label: Java SDK lang: java - source: GetPermissionResponse res = + source: GetPermissionResponse res = scalekitClient.permissions().getPermission("read:users"); put: - description: Modifies an existing permission's attributes including - description and metadata. Use this endpoint to update permission - descriptions or clarify permission purposes after creation. The - permission is identified by its unique name in the path parameter, and - only the fields you specify in the request body will be updated. Note - that the permission name itself cannot be changed as it serves as the - immutable identifier. This operation is useful for maintaining clear + description: Modifies an existing permission's attributes including + description and metadata. Use this endpoint to update permission + descriptions or clarify permission purposes after creation. The + permission is identified by its unique name in the path parameter, and + only the fields you specify in the request body will be updated. Note + that the permission name itself cannot be changed as it serves as the + immutable identifier. This operation is useful for maintaining clear documentation of permission purposes or updating descriptions to reflect - changes in system functionality. Returns the updated permission object + changes in system functionality. Returns the updated permission object with modified timestamps. tags: - Permissions @@ -4148,13 +4147,13 @@ paths: in: path required: true responses: - "200": - description: Permission updated successfully. Returns the modified + '200': + description: Permission updated successfully. Returns the modified permission object with updated description and timestamps. content: application/json: schema: - $ref: "#/components/schemas/rolesUpdatePermissionResponse" + $ref: '#/components/schemas/rolesUpdatePermissionResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -4206,17 +4205,17 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/v1rolesCreatePermission" + $ref: '#/components/schemas/v1rolesCreatePermission' required: true delete: - description: Permanently removes a permission from the environment using - its unique name identifier. Use this endpoint when you need to clean up - unused permissions or remove access controls that are no longer + description: Permanently removes a permission from the environment using + its unique name identifier. Use this endpoint when you need to clean up + unused permissions or remove access controls that are no longer relevant. The permission is identified by its name in the path parameter following the format 'action:resource'. This operation cannot be undone, - so ensure no active roles depend on the permission before deletion. If - the permission is currently assigned to any roles, you may need to - remove those assignments first or update the roles to use alternative + so ensure no active roles depend on the permission before deletion. If + the permission is currently assigned to any roles, you may need to + remove those assignments first or update the roles to use alternative permissions. Returns no content on successful deletion. tags: - Permissions @@ -4230,7 +4229,7 @@ paths: in: path required: true responses: - "200": + '200': description: Permission successfully deleted. No content returned. content: application/json: @@ -4257,12 +4256,12 @@ paths: source: scalekitClient.permissions().deletePermission("read:users"); /api/v1/roles: get: - description: Retrieves a comprehensive list of all roles available within - the specified environment including organization roles. Use this - endpoint to view all role definitions, including custom roles and their - configurations. You can optionally include permission details for each - role to understand their capabilities. This is useful for role - management, auditing organization access controls, or understanding the + description: Retrieves a comprehensive list of all roles available within + the specified environment including organization roles. Use this + endpoint to view all role definitions, including custom roles and their + configurations. You can optionally include permission details for each + role to understand their capabilities. This is useful for role + management, auditing organization access controls, or understanding the available access levels within the organization. tags: - Roles @@ -4277,13 +4276,13 @@ paths: name: include in: query responses: - "200": - description: Successfully retrieved list of roles. Returns all roles + '200': + description: Successfully retrieved list of roles. Returns all roles with their metadata and optionally their permissions. content: application/json: schema: - $ref: "#/components/schemas/rolesListRolesResponse" + $ref: '#/components/schemas/rolesListRolesResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -4301,24 +4300,24 @@ paths: lang: java source: ListRolesResponse res = scalekitClient.roles().listRoles(); post: - description: Creates a new role within the environment with specified - permissions and metadata. Use this endpoint to define custom roles that + description: Creates a new role within the environment with specified + permissions and metadata. Use this endpoint to define custom roles that can be assigned to users or groups. You can create hierarchical roles by - extending existing roles, assign specific permissions, and configure - display information. Roles are the foundation of your access control + extending existing roles, assign specific permissions, and configure + display information. Roles are the foundation of your access control system and determine what actions users can perform. tags: - Roles summary: Create new role in environment operationId: RolesService_CreateRole responses: - "201": - description: Role created successfully. Returns the complete role + '201': + description: Role created successfully. Returns the complete role object with system-generated ID and timestamps. content: application/json: schema: - $ref: "#/components/schemas/rolesCreateRoleResponse" + $ref: '#/components/schemas/rolesCreateRoleResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -4381,9 +4380,9 @@ paths: content: application/json: schema: - description: Role configuration details including name, display + description: Role configuration details including name, display name, description, permissions, and inheritance settings. - $ref: "#/components/schemas/v1rolesCreateRole" + $ref: '#/components/schemas/v1rolesCreateRole' examples: - description: Can edit content display_name: Content Editor @@ -4394,36 +4393,36 @@ paths: required: true /api/v1/roles/default: patch: - description: Updates the default creator and member roles for the current - environment. Use this endpoint to configure which roles are - automatically assigned to new users when they join the environment. You - can specify role names for both creator and member default roles. The - system will validate that the specified roles exist and update the - environment settings accordingly. Returns the updated default role + description: Updates the default creator and member roles for the current + environment. Use this endpoint to configure which roles are + automatically assigned to new users when they join the environment. You + can specify role names for both creator and member default roles. The + system will validate that the specified roles exist and update the + environment settings accordingly. Returns the updated default role objects including their complete role information and permissions. tags: - Roles summary: Set default creator and member roles operationId: RolesService_UpdateDefaultRoles2 responses: - "200": + '200': description: Default roles updated successfully content: application/json: schema: - $ref: "#/components/schemas/rolesUpdateDefaultRolesResponse" + $ref: '#/components/schemas/rolesUpdateDefaultRolesResponse' requestBody: content: application/json: schema: - $ref: "#/components/schemas/rolesUpdateDefaultRolesRequest" + $ref: '#/components/schemas/rolesUpdateDefaultRolesRequest' required: true /api/v1/roles/{role_name}: get: - description: Retrieves complete information for a specific role including - metadata and inheritance details (base role and dependent role count). - Use this endpoint to audit role configuration and understand the role's - place in the hierarchy. To view the role's permissions, use the + description: Retrieves complete information for a specific role including + metadata and inheritance details (base role and dependent role count). + Use this endpoint to audit role configuration and understand the role's + place in the hierarchy. To view the role's permissions, use the ListRolePermissions endpoint. tags: - Roles @@ -4432,7 +4431,7 @@ paths: parameters: - schema: type: string - description: Unique name identifier of the role to retrieve. Must be + description: Unique name identifier of the role to retrieve. Must be alphanumeric with underscores, 1-64 characters. name: role_name in: path @@ -4445,14 +4444,14 @@ paths: name: include in: query responses: - "200": - description: Successfully retrieved role details. Returns the role - object including metadata and inheritance details. Permissions are + '200': + description: Successfully retrieved role details. Returns the role + object including metadata and inheritance details. Permissions are not included. content: application/json: schema: - $ref: "#/components/schemas/rolesGetRoleResponse" + $ref: '#/components/schemas/rolesGetRoleResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -4470,11 +4469,11 @@ paths: lang: java source: GetRoleResponse res = scalekitClient.roles().getRole("admin"); put: - description: Modifies an existing role's properties including display - name, description, permissions, and inheritance. Use this endpoint to - update role metadata, change permission assignments, or modify role - hierarchy. Only the fields you specify will be updated, leaving other - properties unchanged. When updating permissions, the new list replaces + description: Modifies an existing role's properties including display + name, description, permissions, and inheritance. Use this endpoint to + update role metadata, change permission assignments, or modify role + hierarchy. Only the fields you specify will be updated, leaving other + properties unchanged. When updating permissions, the new list replaces all existing permissions for the role. tags: - Roles @@ -4483,19 +4482,19 @@ paths: parameters: - schema: type: string - description: Unique name identifier of the role to update. Must be + description: Unique name identifier of the role to update. Must be alphanumeric with underscores, 1-64 characters. name: role_name in: path required: true responses: - "200": - description: Role updated successfully. Returns the modified role + '200': + description: Role updated successfully. Returns the modified role object with updated timestamps. content: application/json: schema: - $ref: "#/components/schemas/rolesUpdateRoleResponse" + $ref: '#/components/schemas/rolesUpdateRoleResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -4546,22 +4545,22 @@ paths: content: application/json: schema: - description: Role fields to update. Only specified fields will be + description: Role fields to update. Only specified fields will be modified. - $ref: "#/components/schemas/v1rolesUpdateRole" + $ref: '#/components/schemas/v1rolesUpdateRole' examples: - description: Can edit and approve content display_name: Senior Editor required: true delete: description: Permanently removes a role from the environment and reassigns - users who had that role to a different role. Use this endpoint when you + users who had that role to a different role. Use this endpoint when you need to clean up unused roles or restructure your access control system. - The role cannot be deleted if it has dependent roles (roles that extend - it) unless you specify a replacement role. If users are assigned to the - role being deleted, you must provide a reassign_role_name to move those - users to a different role before deletion can proceed. This action - cannot be undone, so ensure no critical users depend on the role before + The role cannot be deleted if it has dependent roles (roles that extend + it) unless you specify a replacement role. If users are assigned to the + role being deleted, you must provide a reassign_role_name to move those + users to a different role before deletion can proceed. This action + cannot be undone, so ensure no critical users depend on the role before deletion. tags: - Roles @@ -4570,7 +4569,7 @@ paths: parameters: - schema: type: string - description: Unique name identifier of the role to delete. Must be + description: Unique name identifier of the role to delete. Must be alphanumeric with underscores, 1-64 characters. name: role_name in: path @@ -4586,8 +4585,8 @@ paths: name: reassign_role_name in: query responses: - "200": - description: Role successfully deleted and users reassigned. No + '200': + description: Role successfully deleted and users reassigned. No content returned. content: application/json: @@ -4631,13 +4630,13 @@ paths: scalekitClient.roles().deleteRole("admin", "member"); /api/v1/roles/{role_name}/base: delete: - description: Removes the base role inheritance relationship for a - specified role, effectively eliminating all inherited permissions from + description: Removes the base role inheritance relationship for a + specified role, effectively eliminating all inherited permissions from the base role. Use this endpoint when you want to break the hierarchical - relationship between roles and remove inherited permissions. The role + relationship between roles and remove inherited permissions. The role will retain only its directly assigned permissions after this operation. - This action cannot be undone, so ensure the role has sufficient direct - permissions before removing inheritance. Returns no content on + This action cannot be undone, so ensure the role has sufficient direct + permissions before removing inheritance. Returns no content on successful removal of the base relationship. tags: - Roles @@ -4647,14 +4646,14 @@ paths: - schema: type: string description: Unique name identifier of the role whose base inheritance - relationship should be removed. Must be alphanumeric with + relationship should be removed. Must be alphanumeric with underscores, 1-64 characters. name: role_name in: path required: true responses: - "200": - description: Base role inheritance relationship successfully removed. + '200': + description: Base role inheritance relationship successfully removed. The role now has only its directly assigned permissions. content: application/json: @@ -4676,15 +4675,15 @@ paths: source: scalekitClient.roles().deleteRoleBase("admin"); /api/v1/roles/{role_name}/dependents: get: - description: Retrieves all roles that directly extend the specified base - role through inheritance. Use this endpoint to understand the role + description: Retrieves all roles that directly extend the specified base + role through inheritance. Use this endpoint to understand the role hierarchy and identify which roles inherit permissions from a particular - base role. Provide the base role name as a path parameter, and the - response will include all dependent roles with their metadata and - permission information. This operation is useful for auditing role - inheritance relationships, understanding the impact of changes to base - roles, or managing role hierarchies effectively. Returns a list of - dependent role objects including their names, display names, + base role. Provide the base role name as a path parameter, and the + response will include all dependent roles with their metadata and + permission information. This operation is useful for auditing role + inheritance relationships, understanding the impact of changes to base + roles, or managing role hierarchies effectively. Returns a list of + dependent role objects including their names, display names, descriptions, and permission details. tags: - Roles @@ -4698,21 +4697,21 @@ paths: in: path required: true responses: - "200": + '200': description: Successfully retrieved dependent roles. Returns a list of - all roles that extend the specified base role, including their + all roles that extend the specified base role, including their metadata and permission information. content: application/json: schema: - $ref: "#/components/schemas/rolesListDependentRolesResponse" + $ref: '#/components/schemas/rolesListDependentRolesResponse' x-codeSamples: - label: Node.js SDK lang: javascript source: const res = await scalekit.role.listDependentRoles("admin"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.roles.list_dependent_roles(role_name="admin") - label: Go SDK lang: go @@ -4722,20 +4721,20 @@ paths: _ = resp - label: Java SDK lang: java - source: ListDependentRolesResponse res = + source: ListDependentRolesResponse res = scalekitClient.roles().listDependentRoles("admin"); /api/v1/roles/{role_name}/permissions: get: - description: Retrieves all permissions directly assigned to the specified + description: Retrieves all permissions directly assigned to the specified role, excluding permissions inherited from base roles. Use this endpoint - to view the explicit permission assignments for a role, which is useful - for understanding direct role capabilities, auditing permission + to view the explicit permission assignments for a role, which is useful + for understanding direct role capabilities, auditing permission assignments, or managing role-permission relationships. Provide the role - name as a path parameter, and the response will include only the + name as a path parameter, and the response will include only the permissions that are directly assigned to that role. This operation does - not include inherited permissions from role hierarchies - use - ListEffectiveRolePermissions to see the complete set of permissions - including inheritance. Returns a list of permission objects with their + not include inherited permissions from role hierarchies - use + ListEffectiveRolePermissions to see the complete set of permissions + including inheritance. Returns a list of permission objects with their names, descriptions, and assignment metadata. tags: - Roles @@ -4749,22 +4748,22 @@ paths: in: path required: true responses: - "200": - description: Successfully retrieved role permissions. Returns a list - of all permissions directly assigned to the specified role, + '200': + description: Successfully retrieved role permissions. Returns a list + of all permissions directly assigned to the specified role, excluding inherited permissions. content: application/json: schema: - $ref: "#/components/schemas/rolesListRolePermissionsResponse" + $ref: '#/components/schemas/rolesListRolePermissionsResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.permission.listRolePermissions("admin"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.permissions.list_role_permissions(role_name="admin") - label: Go SDK lang: go @@ -4777,18 +4776,18 @@ paths: _ = resp - label: Java SDK lang: java - source: ListRolePermissionsResponse res = + source: ListRolePermissionsResponse res = scalekitClient.permissions().listRolePermissions("admin"); post: - description: Adds one or more permissions to the specified role while - preserving existing permission assignments. Use this endpoint to grant - additional capabilities to a role without affecting its current - permission set. Provide the role name as a path parameter and a list of - permission names in the request body. The system will validate that all + description: Adds one or more permissions to the specified role while + preserving existing permission assignments. Use this endpoint to grant + additional capabilities to a role without affecting its current + permission set. Provide the role name as a path parameter and a list of + permission names in the request body. The system will validate that all specified permissions exist in the environment and add them to the role. - Existing permission assignments remain unchanged, making this operation + Existing permission assignments remain unchanged, making this operation safe for incremental permission management. This is useful for gradually - expanding role capabilities or adding new permissions as your system + expanding role capabilities or adding new permissions as your system evolves. Returns the updated list of all permissions now assigned to the role. tags: @@ -4803,18 +4802,18 @@ paths: in: path required: true responses: - "200": - description: Permissions added to role successfully. Returns the + '200': + description: Permissions added to role successfully. Returns the complete list of all permissions now assigned to the role, including both existing and newly added permissions. content: application/json: schema: - $ref: "#/components/schemas/rolesAddPermissionsToRoleResponse" + $ref: '#/components/schemas/rolesAddPermissionsToRoleResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: await scalekit.permission.addPermissionsToRole("role_admin", + source: await scalekit.permission.addPermissionsToRole("role_admin", ["perm.read", "perm.write"]); - label: Python SDK lang: python @@ -4825,8 +4824,8 @@ paths: ) - label: Go SDK lang: go - source: resp, err := - scalekitClient.Permission().AddPermissionsToRole(ctx, "role_admin", + source: resp, err := + scalekitClient.Permission().AddPermissionsToRole(ctx, "role_admin", []string{"perm.read", "perm.write"}) - label: Java SDK lang: java @@ -4843,19 +4842,19 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/RolesServiceAddPermissionsToRoleBody" + $ref: '#/components/schemas/RolesServiceAddPermissionsToRoleBody' required: true /api/v1/roles/{role_name}/permissions/{permission_name}: delete: - description: Removes a specific permission from the specified role, - revoking that capability from all users assigned to the role. Use this - endpoint to restrict role capabilities or remove unnecessary - permissions. Provide both the role name and permission name as path + description: Removes a specific permission from the specified role, + revoking that capability from all users assigned to the role. Use this + endpoint to restrict role capabilities or remove unnecessary + permissions. Provide both the role name and permission name as path parameters. This operation only affects the direct permission assignment - and does not impact permissions inherited from base roles. If the - permission is inherited through role hierarchy, you may need to modify - the base role instead. This is useful for fine-tuning role permissions, - implementing least-privilege access controls, or removing deprecated + and does not impact permissions inherited from base roles. If the + permission is inherited through role hierarchy, you may need to modify + the base role instead. This is useful for fine-tuning role permissions, + implementing least-privilege access controls, or removing deprecated permissions. Returns no content on successful removal. tags: - Roles @@ -4875,8 +4874,8 @@ paths: in: path required: true responses: - "200": - description: Permission removed from role successfully. No content + '200': + description: Permission removed from role successfully. No content returned. content: application/json: @@ -4884,7 +4883,7 @@ paths: x-codeSamples: - label: Node.js SDK lang: javascript - source: await scalekit.permission.removePermissionFromRole("admin", + source: await scalekit.permission.removePermissionFromRole("admin", "read:users"); - label: Python SDK lang: python @@ -4906,16 +4905,16 @@ paths: "read:users"); /api/v1/roles/{role_name}/permissions:all: get: - description: Retrieves the complete set of effective permissions for a - role, including both directly assigned permissions and permissions - inherited from base roles through the role hierarchy. Use this endpoint + description: Retrieves the complete set of effective permissions for a + role, including both directly assigned permissions and permissions + inherited from base roles through the role hierarchy. Use this endpoint to understand the full scope of capabilities available to users assigned - to a specific role. Provide the role name as a path parameter, and the + to a specific role. Provide the role name as a path parameter, and the response will include all permissions that apply to the role, accounting - for inheritance relationships. This operation is essential for auditing - role capabilities, understanding permission inheritance, or verifying - the complete access scope before role assignment. Returns a - comprehensive list of permission names representing the full set of + for inheritance relationships. This operation is essential for auditing + role capabilities, understanding permission inheritance, or verifying + the complete access scope before role assignment. Returns a + comprehensive list of permission names representing the full set of effective permissions for the specified role. tags: - Roles @@ -4929,22 +4928,22 @@ paths: in: path required: true responses: - "200": + '200': description: Successfully retrieved effective permissions. Returns the - complete list of all permissions that apply to the role, including + complete list of all permissions that apply to the role, including both direct assignments and inherited permissions from base roles. content: application/json: schema: - $ref: "#/components/schemas/rolesListEffectiveRolePermissionsResponse" + $ref: '#/components/schemas/rolesListEffectiveRolePermissionsResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.permission.listEffectiveRolePermissions("admin"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.permissions.list_effective_role_permissions(role_name="admin") - label: Go SDK lang: go @@ -4958,18 +4957,18 @@ paths: _ = resp - label: Java SDK lang: java - source: ListEffectiveRolePermissionsResponse res = + source: ListEffectiveRolePermissionsResponse res = scalekitClient.permissions().listEffectiveRolePermissions("admin"); /api/v1/roles/{role_name}/users:count: get: description: Retrieves the total number of users currently assigned to the specified role within the environment. Use this endpoint to monitor role usage, enforce user limits, or understand the scope of role assignments. - Provide the role's unique name as a path parameter, and the response - will include the current user count for that role. This operation is - read-only and does not modify any data or user assignments. The count - reflects all users who have the role either directly assigned or - inherited through organization membership. This information is useful + Provide the role's unique name as a path parameter, and the response + will include the current user count for that role. This operation is + read-only and does not modify any data or user assignments. The count + reflects all users who have the role either directly assigned or + inherited through organization membership. This information is useful for capacity planning, security auditing, or understanding the impact of role changes across your user base. tags: @@ -4984,21 +4983,21 @@ paths: in: path required: true responses: - "200": + '200': description: Successfully retrieved user count for the specified role. - Returns the total number of users currently assigned to the role, + Returns the total number of users currently assigned to the role, including both direct assignments and inherited assignments. content: application/json: schema: - $ref: "#/components/schemas/rolesGetRoleUsersCountResponse" + $ref: '#/components/schemas/rolesGetRoleUsersCountResponse' x-codeSamples: - label: Node.js SDK lang: javascript source: const res = await scalekit.role.getRoleUsersCount("admin"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.roles.get_role_users_count(role_name="admin") - label: Go SDK lang: go @@ -5008,28 +5007,28 @@ paths: _ = resp - label: Java SDK lang: java - source: GetRoleUsersCountResponse res = + source: GetRoleUsersCountResponse res = scalekitClient.roles().getRoleUsersCount("admin"); /api/v1/roles:set_defaults: patch: - description: Updates the default creator and member roles for the current - environment. Use this endpoint to configure which roles are - automatically assigned to new users when they join the environment. You - can specify role names for both creator and member default roles. The - system will validate that the specified roles exist and update the - environment settings accordingly. Returns the updated default role + description: Updates the default creator and member roles for the current + environment. Use this endpoint to configure which roles are + automatically assigned to new users when they join the environment. You + can specify role names for both creator and member default roles. The + system will validate that the specified roles exist and update the + environment settings accordingly. Returns the updated default role objects including their complete role information and permissions. tags: - Roles summary: Set default creator and member roles operationId: RolesService_UpdateDefaultRoles responses: - "200": + '200': description: Default roles updated successfully content: application/json: schema: - $ref: "#/components/schemas/rolesUpdateDefaultRolesResponse" + $ref: '#/components/schemas/rolesUpdateDefaultRolesResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -5066,18 +5065,18 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/rolesUpdateDefaultRolesRequest" + $ref: '#/components/schemas/rolesUpdateDefaultRolesRequest' required: true /api/v1/sessions/{session_id}: get: - description: Retrieves comprehensive details for a specific user session - including authentication status, device information, and expiration - timelines. Use this endpoint to fetch current session metadata for - security audits, session validation, or to display session information - in user account management interfaces. Returns all session properties - including the user ID, authenticated organizations, device details with - browser/OS information, IP address and geolocation, and all relevant - timestamps (creation, last activity, idle expiration, absolute + description: Retrieves comprehensive details for a specific user session + including authentication status, device information, and expiration + timelines. Use this endpoint to fetch current session metadata for + security audits, session validation, or to display session information + in user account management interfaces. Returns all session properties + including the user ID, authenticated organizations, device details with + browser/OS information, IP address and geolocation, and all relevant + timestamps (creation, last activity, idle expiration, absolute expiration, and actual expiration if applicable). tags: - Sessions @@ -5092,20 +5091,20 @@ paths: in: path required: true responses: - "200": + '200': description: Successfully retrieved session details content: application/json: schema: - $ref: "#/components/schemas/sessionsSessionDetails" + $ref: '#/components/schemas/sessionsSessionDetails' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.session.getSession("ses_123456789"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.sessions.get_session(session_id="ses_123456789") - label: Go SDK lang: go @@ -5118,17 +5117,17 @@ paths: _ = resp - label: Java SDK lang: java - source: SessionDetails res = + source: SessionDetails res = scalekitClient.sessions().getSession("ses_123456789"); /api/v1/sessions/{session_id}/revoke: post: - description: Immediately invalidates a specific user session by session + description: Immediately invalidates a specific user session by session ID, setting its status to 'revoked'. Once revoked, the session cannot be - used for any future API requests or application access. Use this - endpoint to implement session-level logout, force a user to - reauthenticate on a specific device, or terminate suspicious sessions. - The revocation is instantaneous and irreversible. Returns the revoked - session details including the session ID, user ID, and the revocation + used for any future API requests or application access. Use this + endpoint to implement session-level logout, force a user to + reauthenticate on a specific device, or terminate suspicious sessions. + The revocation is instantaneous and irreversible. Returns the revoked + session details including the session ID, user ID, and the revocation timestamp. tags: - Sessions @@ -5137,27 +5136,27 @@ paths: parameters: - schema: type: string - description: Unique identifier for the session to revoke. Must start + description: Unique identifier for the session to revoke. Must start with 'ses_' prefix. name: session_id in: path required: true responses: - "200": - description: Successfully revoked the session. Returns the revoked + '200': + description: Successfully revoked the session. Returns the revoked session details content: application/json: schema: - $ref: "#/components/schemas/sessionsRevokeSessionResponse" + $ref: '#/components/schemas/sessionsRevokeSessionResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.session.revokeSession("ses_123456789"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.sessions.revoke_session(session_id="ses_123456789") - label: Go SDK lang: go @@ -5170,14 +5169,14 @@ paths: _ = resp - label: Java SDK lang: java - source: RevokeSessionResponse res = + source: RevokeSessionResponse res = scalekitClient.sessions().revokeSession("ses_123456789"); /api/v1/users: get: - description: Retrieves a paginated list of all users across your entire - environment. Use this endpoint to view all users regardless of their - organization memberships. This is useful for administrative purposes, - user audits, or when you need to see all users in your Scalekit + description: Retrieves a paginated list of all users across your entire + environment. Use this endpoint to view all users regardless of their + organization memberships. This is useful for administrative purposes, + user audits, or when you need to see all users in your Scalekit environment. Supports pagination for large user bases. tags: - Users @@ -5187,23 +5186,23 @@ paths: - schema: type: integer format: int64 - description: Maximum number of organizations to return per page. Must + description: Maximum number of organizations to return per page. Must be between 10 and 100 name: page_size in: query - schema: type: string - description: Pagination token from the previous response. Use to + description: Pagination token from the previous response. Use to retrieve the next page of organizations name: page_token in: query responses: - "200": + '200': description: List of users. content: application/json: schema: - $ref: "#/components/schemas/usersListUsersResponse" + $ref: '#/components/schemas/usersListUsersResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -5229,8 +5228,8 @@ paths: ListUsersResponse allUsers = users.listUsers(lur); /api/v1/users/{id}: get: - description: Retrieves all details for a user by system-generated user ID - or external ID. The response includes organization memberships and user + description: Retrieves all details for a user by system-generated user ID + or external ID. The response includes organization memberships and user metadata. tags: - Users @@ -5245,23 +5244,23 @@ paths: required: true - schema: type: string - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system. name: external_id in: query responses: - "200": - description: User details retrieved successfully. Returns full user + '200': + description: User details retrieved successfully. Returns full user object with system-generated fields and timestamps. content: application/json: schema: - $ref: "#/components/schemas/usersGetUserResponse" + $ref: '#/components/schemas/usersGetUserResponse' delete: - description: Permanently removes a user from your environment and deletes - all associated data. Use this endpoint when you need to completely - remove a user account. This action deletes the user's profile, - memberships, and all related data across all organizations. This + description: Permanently removes a user from your environment and deletes + all associated data. Use this endpoint when you need to completely + remove a user account. This action deletes the user's profile, + memberships, and all related data across all organizations. This operation cannot be undone, so use with caution. tags: - Users @@ -5270,19 +5269,19 @@ paths: parameters: - schema: type: string - description: System-generated user ID. Must start with 'usr_' (19-25 + description: System-generated user ID. Must start with 'usr_' (19-25 characters) name: id in: path required: true - schema: type: string - description: External system identifier from connected directories. + description: External system identifier from connected directories. Must match existing records name: external_id in: query responses: - "200": + '200': description: User successfully deleted. No content returned content: application/json: @@ -5307,11 +5306,11 @@ paths: lang: java source: users.deleteUser("usr_123"); patch: - description: Modifies user account information including profile details, + description: Modifies user account information including profile details, metadata, and external ID. Use this endpoint to update a user's personal - information, contact details, or custom metadata. You can update the + information, contact details, or custom metadata. You can update the user's profile, phone number, and metadata fields. Note that fields like - user ID, email address, environment ID, and creation time cannot be + user ID, email address, environment ID, and creation time cannot be modified. tags: - Users @@ -5320,25 +5319,25 @@ paths: parameters: - schema: type: string - description: System-generated user ID. Must start with 'usr_' and be + description: System-generated user ID. Must start with 'usr_' and be 19-25 characters long. name: id in: path required: true - schema: type: string - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system. name: external_id in: query responses: - "200": - description: User updated successfully. Returns the modified user + '200': + description: User updated successfully. Returns the modified user object with updated timestamps. content: application/json: schema: - $ref: "#/components/schemas/usersUpdateUserResponse" + $ref: '#/components/schemas/usersUpdateUserResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -5404,22 +5403,22 @@ paths: content: application/json: schema: - description: User fields to update. Only specified fields will be + description: User fields to update. Only specified fields will be modified. Required fields must be provided if being changed. - $ref: "#/components/schemas/v1usersUpdateUser" + $ref: '#/components/schemas/v1usersUpdateUser' examples: - firstName: John lastName: Doe required: true /api/v1/users/{user_id}/sessions: get: - description: Retrieves a paginated list of all sessions associated with a - specific user across all devices and browsers. Use this endpoint to - audit user activity, display all active sessions in account management - interfaces, or verify user authentication status across devices. - Supports filtering by session status (active, expired, revoked, logout) + description: Retrieves a paginated list of all sessions associated with a + specific user across all devices and browsers. Use this endpoint to + audit user activity, display all active sessions in account management + interfaces, or verify user authentication status across devices. + Supports filtering by session status (active, expired, revoked, logout) and time range (creation date). Returns session details for each session - including device information, IP address, geolocation, and current + including device information, IP address, geolocation, and current status. The response includes pagination metadata (page tokens and total count) to handle large session lists efficiently. tags: @@ -5429,7 +5428,7 @@ paths: parameters: - schema: type: string - description: Unique identifier for the user whose sessions to + description: Unique identifier for the user whose sessions to retrieve. Must start with 'usr_' prefix. name: user_id in: path @@ -5437,15 +5436,15 @@ paths: - schema: type: integer format: int64 - description: Maximum number of sessions to return in a single page. - Optional parameter. If not specified, defaults to a server-defined - limit. Use smaller values for faster responses, larger values for + description: Maximum number of sessions to return in a single page. + Optional parameter. If not specified, defaults to a server-defined + limit. Use smaller values for faster responses, larger values for fewer requests. name: page_size in: query - schema: type: string - description: Pagination token from the previous response for + description: Pagination token from the previous response for retrieving the next page of results. Leave empty for the first page. Use the next_page_token from a previous response to fetch subsequent pages. @@ -5466,8 +5465,8 @@ paths: - schema: type: string format: date-time - description: Filter to include only sessions created on or after this - timestamp. Optional. Uses RFC 3339 format. Useful for querying + description: Filter to include only sessions created on or after this + timestamp. Optional. Uses RFC 3339 format. Useful for querying sessions within a specific time window. name: filter.start_time in: query @@ -5475,18 +5474,18 @@ paths: type: string format: date-time description: Filter to include only sessions created on or before this - timestamp. Optional. Uses RFC 3339 format. Must be after start_time + timestamp. Optional. Uses RFC 3339 format. Must be after start_time if both are specified. name: filter.end_time in: query responses: - "200": - description: Successfully retrieved user sessions. Returns a list of + '200': + description: Successfully retrieved user sessions. Returns a list of sessions with pagination information content: application/json: schema: - $ref: "#/components/schemas/sessionsUserSessionDetails" + $ref: '#/components/schemas/sessionsUserSessionDetails' x-codeSamples: - label: Node.js SDK lang: javascript @@ -5589,14 +5588,14 @@ paths: "next_page_token", filter); /api/v1/users/{user_id}/sessions/revoke: post: - description: Immediately invalidates all active sessions for a specific + description: Immediately invalidates all active sessions for a specific user across all devices and browsers, setting their status to 'revoked'. - Use this endpoint to implement global logout functionality, force - re-authentication after security incidents, or terminate all sessions - following a password reset or credential compromise. Only active - sessions are revoked; already expired, logout, or previously revoked - sessions remain unchanged. The revocation is atomic and instantaneous. - Returns a list of all revoked sessions with their details and a total + Use this endpoint to implement global logout functionality, force + re-authentication after security incidents, or terminate all sessions + following a password reset or credential compromise. Only active + sessions are revoked; already expired, logout, or previously revoked + sessions remain unchanged. The revocation is atomic and instantaneous. + Returns a list of all revoked sessions with their details and a total count of sessions revoked. tags: - Sessions @@ -5611,21 +5610,21 @@ paths: in: path required: true responses: - "200": - description: Successfully revoked all user sessions. Returns the list + '200': + description: Successfully revoked all user sessions. Returns the list of revoked sessions and total count content: application/json: schema: - $ref: "#/components/schemas/sessionsRevokeAllUserSessionsResponse" + $ref: '#/components/schemas/sessionsRevokeAllUserSessionsResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.session.revokeAllUserSessions("user_123"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.sessions.revoke_all_user_sessions(user_id="user_123") - label: Go SDK lang: go @@ -5638,28 +5637,28 @@ paths: _ = resp - label: Java SDK lang: java - source: RevokeAllUserSessionsResponse res = + source: RevokeAllUserSessionsResponse res = scalekitClient.sessions().revokeAllUserSessions("user_123"); /api/v1/users:this: get: - description: Retrieves details for the currently authenticated user. - Returns the same user object as GetUser but uses the authenticated + description: Retrieves details for the currently authenticated user. + Returns the same user object as GetUser but uses the authenticated user's ID from the session context. tags: - Users summary: Get authenticated user operationId: UserService_GetCurrentUser responses: - "200": + '200': description: Current user details retrieved successfully. content: application/json: schema: - $ref: "#/components/schemas/usersGetUserResponse" + $ref: '#/components/schemas/usersGetUserResponse' /api/v1/webauthn/credentials: get: - description: Retrieves all registered passkeys for the current user, - including device information, creation timestamps, and display names. + description: Retrieves all registered passkeys for the current user, + including device information, creation timestamps, and display names. Use this to show users their registered authenticators. tags: - Passkeys @@ -5668,25 +5667,25 @@ paths: parameters: - schema: type: string - description: User ID to list credentials for (optional, current user + description: User ID to list credentials for (optional, current user if not provided) name: user_id in: query responses: - "200": + '200': description: List of passkeys with metadata content: application/json: schema: - $ref: "#/components/schemas/webauthnListCredentialsResponse" + $ref: '#/components/schemas/webauthnListCredentialsResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.webauthn.listCredentials("user_123"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.webauthn.list_credentials(user_id="user_123") - label: Go SDK lang: go @@ -5699,12 +5698,12 @@ paths: _ = resp - label: Java SDK lang: java - source: ListCredentialsResponse res = + source: ListCredentialsResponse res = scalekitClient.webauthn().listCredentials("user_123"); /api/v1/webauthn/credentials/{credential_id}: delete: - description: Deletes a specific passkey credential for the current user. - After removal, the authenticator can no longer be used for + description: Deletes a specific passkey credential for the current user. + After removal, the authenticator can no longer be used for authentication. tags: - Passkeys @@ -5718,20 +5717,20 @@ paths: in: path required: true responses: - "200": + '200': description: Passkey successfully deleted content: application/json: schema: - $ref: "#/components/schemas/webauthnDeleteCredentialResponse" + $ref: '#/components/schemas/webauthnDeleteCredentialResponse' x-codeSamples: - label: Node.js SDK lang: javascript - source: const res = await + source: const res = await scalekit.webauthn.deleteCredential("wac_123"); - label: Python SDK lang: python - source: res = + source: res = scalekit_client.webauthn.delete_credential(credential_id="wac_123") - label: Go SDK lang: go @@ -5744,11 +5743,11 @@ paths: _ = resp - label: Java SDK lang: java - source: DeleteCredentialResponse res = + source: DeleteCredentialResponse res = scalekitClient.webauthn().deleteCredential("wac_123"); patch: - description: Updates the display name of a passkey credential to help - users identify their authenticators. Only the display name can be + description: Updates the display name of a passkey credential to help + users identify their authenticators. Only the display name can be modified. tags: - Passkeys @@ -5762,12 +5761,12 @@ paths: in: path required: true responses: - "200": + '200': description: Passkey successfully updated with new name content: application/json: schema: - $ref: "#/components/schemas/webauthnUpdateCredentialResponse" + $ref: '#/components/schemas/webauthnUpdateCredentialResponse' x-codeSamples: - label: Node.js SDK lang: javascript @@ -5802,7 +5801,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/WebAuthnServiceUpdateCredentialBody" + $ref: '#/components/schemas/WebAuthnServiceUpdateCredentialBody' required: true tags: - description: | @@ -5820,43 +5819,43 @@ tags: | `metadata`
_object_ | Additional organization information stored as JSON.
Example: `{"key":"value"}` | | `region_code`
_string_ | Data center region where organization data is stored. Currently always returns `US`. | --> name: Organizations - - description: Permission management for defining and controlling access to - system resources. Create, retrieve, update, and delete granular + - description: Permission management for defining and controlling access to + system resources. Create, retrieve, update, and delete granular permissions that represent specific actions users can perform. Permissions - are the building blocks of role-based access control (RBAC) and can be - assigned to roles to grant users the ability to perform specific - operations. Use this service to define custom permissions for your + are the building blocks of role-based access control (RBAC) and can be + assigned to roles to grant users the ability to perform specific + operations. Use this service to define custom permissions for your application's unique access control requirements. name: Permissions - - description: Comprehensive user management operations including user - lifecycle, organization memberships, and invitation workflows. This - service provides endpoints for creating, retrieving, updating, and - deleting user accounts across your Scalekit environment. It supports both - individual user operations and bulk operations for user administration, - including user search, pagination, and metadata management. The service + - description: Comprehensive user management operations including user + lifecycle, organization memberships, and invitation workflows. This + service provides endpoints for creating, retrieving, updating, and + deleting user accounts across your Scalekit environment. It supports both + individual user operations and bulk operations for user administration, + including user search, pagination, and metadata management. The service also handles user invitations and organization membership management. name: Users - - description: Manage enterprise connections for your Scalekit environment. + - description: Manage enterprise connections for your Scalekit environment. This service provides endpoints for retrieving, and updating connections. name: Connections - - description: Directory management for viewing and controlling external - identity provider connections in your Scalekit environment. This service - provides endpoints for retrieving directory information, listing - directories and their contents, and enabling or disabling directory + - description: Directory management for viewing and controlling external + identity provider connections in your Scalekit environment. This service + provides endpoints for retrieving directory information, listing + directories and their contents, and enabling or disabling directory synchronization. name: Directory - - description: Role-based access control (RBAC) for defining and managing - permissions in an environment. Create and update custom roles with - explicit permissions, model role hierarchies through inheritance, view - dependent roles, manage role-permission assignments, and list roles and + - description: Role-based access control (RBAC) for defining and managing + permissions in an environment. Create and update custom roles with + explicit permissions, model role hierarchies through inheritance, view + dependent roles, manage role-permission assignments, and list roles and permissions. Also provides a utility to count users assigned to a role. name: Roles - - description: Comprehensive session management for user authentication and - authorization. This service provides endpoints for retrieving session - details, managing user sessions across devices, revoking individual - sessions, and terminating all active sessions for a user. It supports - session auditing, device tracking, and security monitoring with detailed - session metadata including device information, IP geolocation, and + - description: Comprehensive session management for user authentication and + authorization. This service provides endpoints for retrieving session + details, managing user sessions across devices, revoking individual + sessions, and terminating all active sessions for a user. It supports + session auditing, device tracking, and security monitoring with detailed + session metadata including device information, IP geolocation, and activity timestamps. name: Sessions - description: > @@ -5872,24 +5871,24 @@ tags: Scalekit suggests the organization in the organization switcher (authentication-method agnostic). name: Domains - - description: Endpoints for managing API client applications. API clients - enable secure, automated interactions between software systems without - human intervention. Each client is uniquely identified by a `client_id` - and can be configured with authentication settings, redirect URIs, and - security parameters. Use these endpoints to create, manage, and configure + - description: Endpoints for managing API client applications. API clients + enable secure, automated interactions between software systems without + human intervention. Each client is uniquely identified by a `client_id` + and can be configured with authentication settings, redirect URIs, and + security parameters. Use these endpoints to create, manage, and configure API clients for your API clients. name: API Auth externalDocs: url: https://docs.scalekit.com/m2m/overview - description: Endpoints for sending and verifying passwordless authentication - emails. These APIs allow users to authenticate without passwords by + emails. These APIs allow users to authenticate without passwords by receiving a verification code or magic link in their email. name: Magic link & OTP - description: Endpoints for passkey-based authentication using WebAuthn/FIDO2 standards. name: Passkeys - - description: Manage connected accounts for third-party integrations and - OAuth connections. Connected accounts represent authenticated access to + - description: Manage connected accounts for third-party integrations and + OAuth connections. Connected accounts represent authenticated access to external services like Google, Notion, Slack, and other applications. name: Connected Accounts externalDocs: @@ -5912,7 +5911,7 @@ components: properties: settings: description: The new values for the setting fields to patch. - $ref: "#/components/schemas/organizationsOrganizationUserManagementSettings" + $ref: '#/components/schemas/organizationsOrganizationUserManagementSettings' RolesServiceAddPermissionsToRoleBody: type: object properties: @@ -5951,7 +5950,7 @@ components: title: Conveyance preference enterprise_approved_ids: type: array - title: Enterprise-approved IDs (optional allowlist when enterprise + title: Enterprise-approved IDs (optional allowlist when enterprise attestation is used) items: type: string @@ -5967,47 +5966,48 @@ components: type: object properties: desired_authenticator_status: - description: provides the list of statuses which are considered - undesirable for status report validation purposes. Should be used + description: provides the list of statuses which are considered + undesirable for status report validation purposes. Should be used with validate_status set to true. type: array items: type: string - default: "[]" + default: '[]' undesired_authenticator_status: - description: provides the list of statuses which are considered - undesirable for status report validation purposes. Should be used + description: provides the list of statuses which are considered + undesirable for status report validation purposes. Should be used with validate_status set to true. type: array items: type: string - default: "['ATTESTATION_KEY_COMPROMISE', 'USER_VERIFICATION_BYPASS', 'USER_KEY_REMOTE_COMPROMISE', + default: + "['ATTESTATION_KEY_COMPROMISE', 'USER_VERIFICATION_BYPASS', 'USER_KEY_REMOTE_COMPROMISE', 'USER_KEY_PHYSICAL_COMPROMISE', 'REVOKED']" validate_anchors: - description: when set to true enables the validation of the - attestation statement against the trust anchor from the metadata + description: when set to true enables the validation of the + attestation statement against the trust anchor from the metadata statement. type: boolean validate_attestation_type: - description: when set to true enables the validation of the - attestation statements type against the known types the + description: when set to true enables the validation of the + attestation statements type against the known types the authenticator can produce. type: boolean validate_entry: - description: requires that the provided metadata has an entry for the - given authenticator to be considered valid. By default an AAGUID - which has a zero value should fail validation if - validate_entry_permit_zero_aaguid is not provided with the value of + description: requires that the provided metadata has an entry for the + given authenticator to be considered valid. By default an AAGUID + which has a zero value should fail validation if + validate_entry_permit_zero_aaguid is not provided with the value of true. type: boolean validate_entry_permit_zero_aaguid: - description: is an option that permits a zero'd AAGUID from an - attestation statement to automatically pass metadata validations. + description: is an option that permits a zero'd AAGUID from an + attestation statement to automatically pass metadata validations. Generally helpful to use with validate_entry. type: boolean validate_status: - description: when set to true enables the validation of the - attestation statements AAGUID against the desired and undesired + description: when set to true enables the validation of the + attestation statements AAGUID against the desired and undesired lists type: boolean WebAuthConfigurationRp: @@ -6038,7 +6038,7 @@ components: type: string default: '"300s"' login_uvd: - description: Login timeout duration when user verification is + description: Login timeout duration when user verification is discouraged type: string default: '"300s"' @@ -6047,7 +6047,7 @@ components: type: string default: '"300s"' registration_uvd: - description: Registration timeout duration when user verification is + description: Registration timeout duration when user verification is discouraged type: string default: '"300s"' @@ -6055,7 +6055,7 @@ components: type: object properties: aaguid: - description: Authenticator Attestation GUID (AAGUID) identifying the + description: Authenticator Attestation GUID (AAGUID) identifying the device model type: string attachment: @@ -6078,7 +6078,7 @@ components: type: object properties: backup_eligible: - description: Whether this credential can be backed up to another + description: Whether this credential can be backed up to another device type: boolean backup_state: @@ -6145,7 +6145,7 @@ components: description: Operating system version type: string examples: - - "14.2" + - '14.2' raw: description: Raw user agent string from the browser type: string @@ -6156,7 +6156,7 @@ components: type: object properties: display_name: - description: Human-friendly name for this credential (1-120 + description: Human-friendly name for this credential (1-120 characters) type: string examples: @@ -6168,7 +6168,7 @@ components: - LINK - LINK_OTP clientsClientSecret: - description: A secure credential used for authenticating an API client. + description: A secure credential used for authenticating an API client. Each client can have multiple secrets for key rotation purposes. type: object title: Client Secret @@ -6181,14 +6181,14 @@ components: examples: - 2024-01-05T14:48:00Z created_by: - description: The identifier of the user or system that created this - secret. This field helps track who created the secret for audit and + description: The identifier of the user or system that created this + secret. This field helps track who created the secret for audit and compliance purposes. type: string examples: - user_12345 expire_time: - description: The timestamp when this secret will expire. After this + description: The timestamp when this secret will expire. After this time, the secret cannot be used for authentication regardless of its status. If not set, the secret does not expire. type: string @@ -6196,15 +6196,15 @@ components: examples: - 2025-01-05T14:48:00Z id: - description: The unique identifier for this client secret. This ID is - used to reference the secret in API requests for management + description: The unique identifier for this client secret. This ID is + used to reference the secret in API requests for management operations like updating or deleting the secret. type: string examples: - sec_1234abcd5678efgh last_used_time: - description: The timestamp when this secret was last used for - authentication. This field helps track secret usage for security + description: The timestamp when this secret was last used for + authentication. This field helps track secret usage for security monitoring and identifying unused secrets that may be candidates for rotation. type: string @@ -6212,31 +6212,31 @@ components: examples: - 2024-02-15T10:30:00Z plain_secret: - description: The full plaintext secret value. This field is only - populated when the secret is first created and is never stored by - the server. It must be securely stored by the client application as + description: The full plaintext secret value. This field is only + populated when the secret is first created and is never stored by + the server. It must be securely stored by the client application as it cannot be retrieved again. type: string examples: - sec_1234567890abcdefghijklmnopqrstuvwxyz secret_suffix: - description: A suffix that helps identify this secret. This is the - last few characters of the full secret value but is not sufficient - for authentication. Helps identify which secret is being used in + description: A suffix that helps identify this secret. This is the + last few characters of the full secret value but is not sufficient + for authentication. Helps identify which secret is being used in logs and debugging. type: string examples: - xyzw status: - description: The current status of this secret. A secret must be - ACTIVE to be used for authentication. INACTIVE secrets cannot be + description: The current status of this secret. A secret must be + ACTIVE to be used for authentication. INACTIVE secrets cannot be used for authentication but are retained for audit purposes. - $ref: "#/components/schemas/clientsClientSecretStatus" + $ref: '#/components/schemas/clientsClientSecretStatus' examples: - INACTIVE update_time: - description: The timestamp when this secret was last updated. This - field is automatically updated by the server when the secret's + description: The timestamp when this secret was last updated. This + field is automatically updated by the server when the secret's status changes or other properties are modified. type: string format: date-time @@ -6259,7 +6259,7 @@ components: properties: client: description: Details of the created client - $ref: "#/components/schemas/clientsM2MClient" + $ref: '#/components/schemas/clientsM2MClient' plain_secret: description: Client secret value (only returned once at creation) type: string @@ -6275,19 +6275,19 @@ components: - m2morg_client_secret_xyz123 secret: description: Details of the created client secret - $ref: "#/components/schemas/clientsClientSecret" + $ref: '#/components/schemas/clientsClientSecret' clientsCustomClaim: type: object properties: key: - description: The name of the custom claim. Must be between 1 and 128 - characters. Use descriptive names that clearly indicate the claim's + description: The name of the custom claim. Must be between 1 and 128 + characters. Use descriptive names that clearly indicate the claim's purpose. type: string examples: - environment value: - description: The value of the custom claim. This value will be + description: The value of the custom claim. This value will be included in access tokens issued to the client. type: string examples: @@ -6297,31 +6297,31 @@ components: properties: client: description: Details of the requested client - $ref: "#/components/schemas/clientsM2MClient" + $ref: '#/components/schemas/clientsM2MClient' clientsListOrganizationClientsResponse: - description: Response message containing a paginated list of API clients + description: Response message containing a paginated list of API clients for the specified organization. type: object title: List Organization Clients Response properties: clients: - description: List of API client objects for the organization. Each - client includes its configuration, metadata, and active secrets + description: List of API client objects for the organization. Each + client includes its configuration, metadata, and active secrets (without exposing actual secret values). type: array title: List of organization API clients items: type: object - $ref: "#/components/schemas/clientsM2MClient" + $ref: '#/components/schemas/clientsM2MClient' next_page_token: - description: Pagination token for the next page of results. Use this + description: Pagination token for the next page of results. Use this token to fetch the next page. type: string title: Pagination token for the next page of results examples: - prev_page_token: - description: Pagination token for the previous page of results. Use + description: Pagination token for the previous page of results. Use this token to fetch the previous page. type: string title: Pagination token for the previous page of results @@ -6338,37 +6338,37 @@ components: type: object properties: audience: - description: The intended recipients of access tokens issued to this - client. Each audience value should be a URI that identifies an API + description: The intended recipients of access tokens issued to this + client. Each audience value should be a URI that identifies an API or service. type: array items: type: string examples: - - - https://api.example.com + - - https://api.example.com client_id: - description: The unique identifier for this API client. This ID is - used to identify the client in API requests and logs. It is - automatically generated when the client is created and cannot be + description: The unique identifier for this API client. This ID is + used to identify the client in API requests and logs. It is + automatically generated when the client is created and cannot be modified. type: string examples: - m2morg_1231234233424344 create_time: - description: The timestamp when this API client was created. This + description: The timestamp when this API client was created. This field is automatically set by the server and cannot be modified. type: string format: date-time examples: - 2024-01-05T14:48:00Z custom_claims: - description: Additional claims included in access tokens issued to - this client. These claims provide context about the client and can + description: Additional claims included in access tokens issued to + this client. These claims provide context about the client and can be used for authorization decisions. type: array items: type: object - $ref: "#/components/schemas/clientsCustomClaim" + $ref: '#/components/schemas/clientsCustomClaim' description: description: A detailed description of the client's purpose and usage. This helps administrators understand what the client is used for. @@ -6376,58 +6376,58 @@ components: examples: - Service account for automated deployment processes expiry: - description: Expiry time in seconds for the token generated by the + description: Expiry time in seconds for the token generated by the client type: string format: int64 examples: - 3600 is_cimd: - description: Indicates if the client was created via Client ID - Metadata Document (CIMD). CIMD clients can update their own + description: Indicates if the client was created via Client ID + Metadata Document (CIMD). CIMD clients can update their own configuration according to the CIMD specification. type: boolean examples: - false is_dcr: - description: Indicates if the client was created via Dynamic Client - Registration (DCR). Clients created through DCR may have different - management and lifecycle policies compared to those created + description: Indicates if the client was created via Dynamic Client + Registration (DCR). Clients created through DCR may have different + management and lifecycle policies compared to those created manually. type: boolean examples: - false metadata_uri: - description: The URI to the client's metadata, which is utilized to + description: The URI to the client's metadata, which is utilized to obtain the client's configuration details type: string examples: - https://example.com/client-metadata.json name: - description: The display name of the API client. This name helps + description: The display name of the API client. This name helps identify the client in the dashboard and logs. type: string examples: - GitHub Actions Deployment Service organization_id: - description: The ID of the organization that owns this API client. - This ID is used to associate the client with the correct + description: The ID of the organization that owns this API client. + This ID is used to associate the client with the correct organization and enforce organization-specific access controls. type: string examples: - org_1231234233424344 redirect_uris: description: The redirect URI for this API client. This URI is used in - the OAuth 2.0 authorization flow to redirect users after + the OAuth 2.0 authorization flow to redirect users after authentication. type: array items: type: string examples: - - - https://example.com/callback + - - https://example.com/callback resource_id: - description: The ID of the resource associated with this M2M client. - This field is used to link the client to a specific resource in the + description: The ID of the resource associated with this M2M client. + This field is used to link the client to a specific resource in the system. type: string examples: @@ -6439,20 +6439,20 @@ components: items: type: string examples: - - - deploy:resources - - read:deployments + - - deploy:resources + - read:deployments secrets: - description: List of client secrets associated with this client. Each - secret can be used for authentication, but only the most recently - created secret is typically active. Secrets are stored securely and + description: List of client secrets associated with this client. Each + secret can be used for authentication, but only the most recently + created secret is typically active. Secrets are stored securely and their values are never returned after creation. type: array items: type: object - $ref: "#/components/schemas/clientsClientSecret" + $ref: '#/components/schemas/clientsClientSecret' update_time: description: The timestamp when this API client was last updated. This - field is automatically updated by the server whenever the client's + field is automatically updated by the server whenever the client's configuration changes. type: string format: date-time @@ -6462,39 +6462,39 @@ components: type: object properties: audience: - description: The intended recipients of the access tokens issued to + description: The intended recipients of the access tokens issued to this client. Each audience value should be a URI that identifies the API or service that will validate the token. type: array items: type: string examples: - - - https://api.example.com/api/analytics - - https://deployment-api.acmecorp.com + - - https://api.example.com/api/analytics + - https://deployment-api.acmecorp.com custom_claims: - description: Additional claims to be included in access tokens issued - to this client. These claims provide context about the client and - can be used for authorization decisions. Keep claims minimal to + description: Additional claims to be included in access tokens issued + to this client. These claims provide context about the client and + can be used for authorization decisions. Keep claims minimal to avoid increasing token size. type: array items: type: object - $ref: "#/components/schemas/clientsCustomClaim" + $ref: '#/components/schemas/clientsCustomClaim' examples: - - - key: environment - value: production - - key: service - value: deployment + - - key: environment + value: production + - key: service + value: deployment description: description: A detailed explanation of the client's purpose and usage. This helps administrators understand what the client is used for and who manages it. type: string examples: - - Service account for GitHub Actions to deploy resources to + - Service account for GitHub Actions to deploy resources to production expiry: - description: Expiry time in seconds for the token generated by the + description: Expiry time in seconds for the token generated by the client type: string format: int64 @@ -6502,33 +6502,33 @@ components: - 3600 name: description: A descriptive name for the API client that helps identify - its purpose. This name is displayed in the dashboard and logs. Must + its purpose. This name is displayed in the dashboard and logs. Must be between 1 and 128 characters. type: string examples: - GitHub Actions Deployment Service scopes: - description: OAuth 2.0 scopes that define the permissions granted to - this client. Each scope represents a specific permission or set of - permissions. The client can only access resources that match its + description: OAuth 2.0 scopes that define the permissions granted to + this client. Each scope represents a specific permission or set of + permissions. The client can only access resources that match its granted scopes. type: array items: type: string examples: - - - deploy:resources - - read:deployments + - - deploy:resources + - read:deployments clientsUpdateOrganizationClientResponse: type: object properties: client: description: Updated details of the client - $ref: "#/components/schemas/clientsM2MClient" + $ref: '#/components/schemas/clientsM2MClient' commonsExternalIdentity: type: object properties: connection_id: - description: Unique identifier for the external identity connection. + description: Unique identifier for the external identity connection. Immutable and read-only. type: string readOnly: true @@ -6536,7 +6536,7 @@ components: - conn_1234abcd5678efgh connection_provider: description: Type of the identity provider. - $ref: "#/components/schemas/commonsIdentityProviderType" + $ref: '#/components/schemas/commonsIdentityProviderType' readOnly: true examples: - GOOGLE @@ -6547,34 +6547,34 @@ components: examples: - OAUTH connection_user_id: - description: Unique identifier for the user in the external identity + description: Unique identifier for the user in the external identity provider system. Immutable and read-only. type: string readOnly: true examples: - ext_user_12345 created_time: - description: Timestamp when this external identity connection was + description: Timestamp when this external identity connection was first created. Immutable and read-only. type: string format: date-time readOnly: true is_social: - description: Indicates if the identity provider is a social provider + description: Indicates if the identity provider is a social provider (true) or enterprise/custom provider (false). Read-only. type: boolean readOnly: true examples: - true last_login_time: - description: Timestamp of the user's last successful login via this + description: Timestamp of the user's last successful login via this external identity provider. Automatically updated by the system. type: string format: date-time readOnly: true last_synced_time: - description: Timestamp of the last data synchronization for this - external identity from the provider. Automatically updated by the + description: Timestamp of the last data synchronization for this + external identity from the provider. Automatically updated by the system. type: string format: date-time @@ -6617,8 +6617,8 @@ components: type: string format: date-time display_name: - description: Organization display name. This field stores a - user-friendly name for the organization that may be different from + description: Organization display name. This field stores a + user-friendly name for the organization that may be different from the formal name, often used for UI display purposes. type: string examples: @@ -6631,14 +6631,14 @@ components: description: ID of the user who invited this user. type: string join_time: - description: Timestamp when the membership was created. Automatically + description: Timestamp when the membership was created. Automatically set by the server. type: string format: date-time membership_status: - $ref: "#/components/schemas/commonsMembershipStatus" + $ref: '#/components/schemas/commonsMembershipStatus' metadata: - description: Custom key-value pairs for storing additional user + description: Custom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -6647,28 +6647,28 @@ components: - department: engineering location: nyc-office name: - description: Organization name. This field stores the formal + description: Organization name. This field stores the formal organization name used for identification and display purposes. type: string examples: - AcmeCorp organization_id: - description: Unique identifier for the organization. Immutable and + description: Unique identifier for the organization. Immutable and read-only. type: string examples: - org_1234abcd5678efgh permissions: - description: Effective permissions granted to the user within the - organization (including inherited permissions from assigned roles). + description: Effective permissions granted to the user within the + organization (including inherited permissions from assigned roles). Lists the specific actions and access rights the user can perform. type: array items: type: string examples: - - - read_projects - - write_tasks - - manage_users + - - read_projects + - write_tasks + - manage_users provisioning_method: description: >- How the user was provisioned. @@ -6690,7 +6690,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/commonsRole" + $ref: '#/components/schemas/commonsRole' commonsRegionCode: type: string enum: @@ -6711,8 +6711,8 @@ components: examples: - role_79643236410327240 name: - description: Attribute name/identifier for the role used in system - operations and API calls. This should be a machine-readable + description: Attribute name/identifier for the role used in system + operations and API calls. This should be a machine-readable identifier that follows naming conventions. type: string examples: @@ -6721,14 +6721,14 @@ components: type: object properties: custom_attributes: - description: Custom attributes for extended user profile data and - application-specific information. This field stores - business-specific user data like department, job title, security - clearances, project assignments, or any other organizational - attributes your application requires. Unlike system metadata, these - attributes are typically managed by administrators or applications + description: Custom attributes for extended user profile data and + application-specific information. This field stores + business-specific user data like department, job title, security + clearances, project assignments, or any other organizational + attributes your application requires. Unlike system metadata, these + attributes are typically managed by administrators or applications and are visible to end users for personalization and business logic. - Keys must be 3-25 characters, values must be 1-256 characters, with + Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs. type: object additionalProperties: @@ -6737,7 +6737,7 @@ components: - department: engineering security_clearance: level2 email_verified: - description: Indicates if the user's email address has been verified. + description: Indicates if the user's email address has been verified. Automatically updated by the system. type: boolean readOnly: true @@ -6749,20 +6749,20 @@ components: type: array items: type: object - $ref: "#/components/schemas/commonsExternalIdentity" + $ref: '#/components/schemas/commonsExternalIdentity' readOnly: true family_name: description: The user's family name (last name or surname). This field - stores the user's last name and is combined with the given name to - create the full display name. The family name is used in formal - communications, user listings, and organizational directories + stores the user's last name and is combined with the given name to + create the full display name. The family name is used in formal + communications, user listings, and organizational directories throughout the system. Maximum 255 characters allowed. type: string examples: - Doe gender: description: The user's gender identity information. This field stores - the user's gender identity for personalization, compliance + the user's gender identity for personalization, compliance reporting, or organizational analytics purposes. This field supports any string value to accommodate diverse gender identities and should be handled with appropriate privacy considerations according to your @@ -6780,44 +6780,44 @@ components: examples: - John groups: - description: The list of group names the user belongs to within the - organization. This field stores the user's group memberships for - role-based access control, team assignments, and organizational - structure. Groups are typically used for permission management, - collaborative access, and organizational hierarchy. Each group name - represents a distinct organizational unit or team that the user is + description: The list of group names the user belongs to within the + organization. This field stores the user's group memberships for + role-based access control, team assignments, and organizational + structure. Groups are typically used for permission management, + collaborative access, and organizational hierarchy. Each group name + represents a distinct organizational unit or team that the user is associated with. type: array items: type: string examples: - - - admin - - developer + - - admin + - developer id: - description: Unique system-generated identifier for the user profile. + description: Unique system-generated identifier for the user profile. Immutable and read-only. type: string readOnly: true examples: - usr_profile_1234abcd5678efgh locale: - description: The user's preferred language and region settings using - BCP-47 format codes. This field customizes the user's experience - with localized content, date formats, number formatting, and UI - language throughout the system. When not specified, the user - inherits the organization's default locale settings. Common values + description: The user's preferred language and region settings using + BCP-47 format codes. This field customizes the user's experience + with localized content, date formats, number formatting, and UI + language throughout the system. When not specified, the user + inherits the organization's default locale settings. Common values include `en-US`, `en-GB`, `fr-FR`, `de-DE`, and `es-ES`. type: string examples: - en-US metadata: - description: Raw attributes received from identity providers during - authentication. This field stores the original user profile data as - received from external IdP systems (SAML, OIDC, etc.) including - provider-specific claims and attributes. These fields preserve the + description: Raw attributes received from identity providers during + authentication. This field stores the original user profile data as + received from external IdP systems (SAML, OIDC, etc.) including + provider-specific claims and attributes. These fields preserve the complete set of attributes received from the identity source and are - used for mapping, synchronization, and audit purposes. Keys must be - 3-25 characters, values must be 1-256 characters, with a maximum of + used for mapping, synchronization, and audit purposes. Keys must be + 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs. type: object additionalProperties: @@ -6825,51 +6825,51 @@ components: examples: - department: engineering employee_type: full-time - idp_user_id: "12345" + idp_user_id: '12345' name: - description: The user's complete display name in formatted form. This - field stores the full name as a single string and is typically used - when you want to set the complete name rather than using separate - given and family names. This name appears in user interfaces, - reports, directory listings, and anywhere a formatted display name - is needed. This field serves as a formatted display name that + description: The user's complete display name in formatted form. This + field stores the full name as a single string and is typically used + when you want to set the complete name rather than using separate + given and family names. This name appears in user interfaces, + reports, directory listings, and anywhere a formatted display name + is needed. This field serves as a formatted display name that complements the individual given_name and family_name fields. type: string examples: - John Michael Doe phone_number: - description: The user's phone number in E.164 international format. - This field stores the phone number for user contact and - identification purposes. The phone number must include the country - code and be formatted according to E.164 standards (e.g., `+1` for + description: The user's phone number in E.164 international format. + This field stores the phone number for user contact and + identification purposes. The phone number must include the country + code and be formatted according to E.164 standards (e.g., `+1` for US numbers). This field is optional. type: string examples: - - "+14155552671" + - '+14155552671' phone_number_verified: - description: Indicates if the user's phone number has been verified. + description: Indicates if the user's phone number has been verified. Automatically updated by the system. type: boolean readOnly: true examples: - true picture: - description: The URL to the user's profile picture or avatar image. - This field stores the location of the user's profile photo that - appears in user interfaces, directory listings, and collaborative - features throughout the system. The URL should point to a publicly - accessible image file. Supported formats typically include JPEG, - PNG, and GIF. This image is used for visual identification and + description: The URL to the user's profile picture or avatar image. + This field stores the location of the user's profile photo that + appears in user interfaces, directory listings, and collaborative + features throughout the system. The URL should point to a publicly + accessible image file. Supported formats typically include JPEG, + PNG, and GIF. This image is used for visual identification and personalization across the platform. type: string examples: - https://example.com/avatar.jpg preferred_username: - description: The user's preferred username for display and - identification purposes. This field stores a custom username that - the user prefers to be known by, which may differ from their email - or formal name. This username appears in user interfaces, mentions, - informal communications, and collaborative features throughout the + description: The user's preferred username for display and + identification purposes. This field stores a custom username that + the user prefers to be known by, which may differ from their email + or formal name. This username appears in user interfaces, mentions, + informal communications, and collaborative features throughout the system. Maximum 512 characters allowed. type: string examples: @@ -6880,15 +6880,15 @@ components: properties: oauth_token: title: OAuth 2.0 credentials - $ref: "#/components/schemas/connected_accountsOauthToken" + $ref: '#/components/schemas/connected_accountsOauthToken' static_auth: title: Static authentication credentials - $ref: "#/components/schemas/connected_accountsStaticAuth" + $ref: '#/components/schemas/connected_accountsStaticAuth' connected_accountsConnectedAccount: type: object properties: api_config: - description: Optional JSON configuration for connector-specific API + description: Optional JSON configuration for connector-specific API settings such as rate limits, custom endpoints, or feature flags. type: object examples: @@ -6896,51 +6896,51 @@ components: rate_limit: 1000 timeout: 30 authorization_details: - description: Sensitive authentication credentials including access - tokens, refresh tokens, and scopes. Contains either OAuth tokens or + description: Sensitive authentication credentials including access + tokens, refresh tokens, and scopes. Contains either OAuth tokens or static auth details. - $ref: "#/components/schemas/connected_accountsAuthorizationDetails" + $ref: '#/components/schemas/connected_accountsAuthorizationDetails' authorization_type: - description: Type of authorization mechanism used. Specifies whether - this connection uses OAuth, API keys, bearer tokens, or other auth + description: Type of authorization mechanism used. Specifies whether + this connection uses OAuth, API keys, bearer tokens, or other auth methods. - $ref: "#/components/schemas/connected_accountsConnectorType" + $ref: '#/components/schemas/connected_accountsConnectorType' connection_id: - description: Reference to the parent connection configuration. Links + description: Reference to the parent connection configuration. Links this account to a specific connector setup in your environment. type: string examples: - conn_24834495392086178 connector: - description: Connector identifier (e.g., 'notion', 'slack', - 'salesforce'). Indicates which third-party application this account + description: Connector identifier (e.g., 'notion', 'slack', + 'salesforce'). Indicates which third-party application this account connects to. type: string examples: - notion id: - description: Unique Scalekit-generated identifier for this connected + description: Unique Scalekit-generated identifier for this connected account. Always prefixed with 'ca_'. type: string examples: - ca_24834495392086178 identifier: description: The unique identifier for this account in the third-party - service. Typically an email address, user ID, or workspace + service. Typically an email address, user ID, or workspace identifier. type: string examples: - user@example.com last_used_at: - description: Timestamp when this connected account was last used to + description: Timestamp when this connected account was last used to make an API call. Useful for tracking active connections. type: string format: date-time examples: - 2024-03-20T14:30:00Z provider: - description: OAuth provider name (e.g., 'google', 'microsoft', - 'github'). Identifies which authentication service manages this + description: OAuth provider name (e.g., 'google', 'microsoft', + 'github'). Identifies which authentication service manages this connection. type: string examples: @@ -6948,16 +6948,16 @@ components: status: description: Current status of the connected account. Indicates if the account is active, expired, or pending authorization. - $ref: "#/components/schemas/connected_accountsConnectorStatus" + $ref: '#/components/schemas/connected_accountsConnectorStatus' token_expires_at: - description: Expiration timestamp for the access token. After this + description: Expiration timestamp for the access token. After this time, the token must be refreshed or re-authorized. type: string format: date-time examples: - 2024-12-31T23:59:59Z updated_at: - description: Timestamp when this connected account was last modified. + description: Timestamp when this connected account was last modified. Updated whenever credentials or configuration changes. type: string format: date-time @@ -6965,12 +6965,12 @@ components: - 2024-03-20T15:04:05Z connected_accountsConnectedAccountForList: type: object - title: Connected account summary for list operations - excludes sensitive + title: Connected account summary for list operations - excludes sensitive authorization details properties: authorization_type: description: Authorization mechanism type. - $ref: "#/components/schemas/connected_accountsConnectorType" + $ref: '#/components/schemas/connected_accountsConnectorType' connection_id: description: Parent connection configuration reference. type: string @@ -7005,7 +7005,7 @@ components: - google status: description: Current connection status. - $ref: "#/components/schemas/connected_accountsConnectorStatus" + $ref: '#/components/schemas/connected_accountsConnectorStatus' token_expires_at: description: Token expiration timestamp. type: string @@ -7051,7 +7051,7 @@ components: properties: connected_account: description: Details of the connected account to create - $ref: "#/components/schemas/v1connected_accountsCreateConnectedAccount" + $ref: '#/components/schemas/v1connected_accountsCreateConnectedAccount' examples: - authorization_details: oauth_token: @@ -7067,8 +7067,8 @@ components: examples: - notion identifier: - description: The unique identifier for the connected account within - the third-party service (e.g., email address, user ID, workspace + description: The unique identifier for the connected account within + the third-party service (e.g., email address, user ID, workspace identifier). type: string examples: @@ -7087,10 +7087,10 @@ components: type: object properties: connected_account: - description: The newly created connected account with its unique - identifier, status, and complete authorization details including + description: The newly created connected account with its unique + identifier, status, and complete authorization details including access tokens. - $ref: "#/components/schemas/connected_accountsConnectedAccount" + $ref: '#/components/schemas/connected_accountsConnectedAccount' connected_accountsDeleteConnectedAccountRequest: type: object properties: @@ -7105,8 +7105,8 @@ components: examples: - ca_123 identifier: - description: The unique identifier for the connected account within - the third-party service (e.g., email address, user ID, workspace + description: The unique identifier for the connected account within + the third-party service (e.g., email address, user ID, workspace identifier). type: string examples: @@ -7127,10 +7127,10 @@ components: type: object properties: connected_account: - description: The connected account with complete details including - sensitive authorization credentials (access tokens, refresh tokens, + description: The connected account with complete details including + sensitive authorization credentials (access tokens, refresh tokens, scopes). Handle with appropriate access controls. - $ref: "#/components/schemas/connected_accountsConnectedAccount" + $ref: '#/components/schemas/connected_accountsConnectedAccount' connected_accountsGetMagicLinkForConnectedAccountRequest: type: object properties: @@ -7145,8 +7145,8 @@ components: examples: - ca_123 identifier: - description: The unique identifier for the connected account within - the third-party service (e.g., email address, user ID, workspace + description: The unique identifier for the connected account within + the third-party service (e.g., email address, user ID, workspace identifier). type: string examples: @@ -7179,27 +7179,27 @@ components: type: object properties: connected_accounts: - description: List of connected accounts matching the filter criteria. + description: List of connected accounts matching the filter criteria. Excludes sensitive authorization details for security. type: array items: type: object - $ref: "#/components/schemas/connected_accountsConnectedAccountForList" + $ref: '#/components/schemas/connected_accountsConnectedAccountForList' next_page_token: - description: Pagination token for retrieving the next page. Empty if - this is the last page. Pass this value to page_token in the next + description: Pagination token for retrieving the next page. Empty if + this is the last page. Pass this value to page_token in the next request. type: string examples: - eyJvZmZzZXQiOjIwfQ== prev_page_token: - description: Pagination token for retrieving the previous page. Empty + description: Pagination token for retrieving the previous page. Empty if this is the first page. Pass this value to page_token to go back. type: string examples: - eyJvZmZzZXQiOjB9 total_size: - description: Total count of connected accounts matching the filter + description: Total count of connected accounts matching the filter criteria across all pages. Use for calculating pagination. type: integer format: int64 @@ -7210,19 +7210,19 @@ components: title: OAuth 2.0 access and refresh tokens with scopes properties: access_token: - description: OAuth access token for API requests. Typically + description: OAuth access token for API requests. Typically short-lived and must be refreshed after expiration. type: string examples: - ya29.a0AfH6SMBx... domain: - description: Associated domain for workspace or organization-scoped + description: Associated domain for workspace or organization-scoped OAuth connections (e.g., Google Workspace domain). type: string examples: - example.com refresh_token: - description: OAuth refresh token for obtaining new access tokens. + description: OAuth refresh token for obtaining new access tokens. Long-lived and used to maintain persistent authorization. type: string examples: @@ -7234,32 +7234,32 @@ components: items: type: string examples: - - - https://www.googleapis.com/auth/drive.readonly - - https://www.googleapis.com/auth/userinfo.email + - - https://www.googleapis.com/auth/drive.readonly + - https://www.googleapis.com/auth/userinfo.email connected_accountsSearchConnectedAccountsResponse: type: object properties: connected_accounts: - description: List of connected accounts matching the search query. + description: List of connected accounts matching the search query. Excludes sensitive authorization details. type: array items: type: object - $ref: "#/components/schemas/connected_accountsConnectedAccountForList" + $ref: '#/components/schemas/connected_accountsConnectedAccountForList' next_page_token: - description: Pagination token for the next page. Empty if this is the + description: Pagination token for the next page. Empty if this is the last page. type: string examples: - eyJvZmZzZXQiOjMwfQ== prev_page_token: - description: Pagination token for the previous page. Empty if this is + description: Pagination token for the previous page. Empty if this is the first page. type: string examples: - eyJvZmZzZXQiOjB9 total_size: - description: Total count of accounts matching the search query across + description: Total count of accounts matching the search query across all pages. type: integer format: int64 @@ -7267,11 +7267,11 @@ components: - 100 connected_accountsStaticAuth: type: object - title: Static authentication credentials for API keys, bearer tokens, or + title: Static authentication credentials for API keys, bearer tokens, or basic auth properties: details: - description: Flexible JSON structure containing static credentials. + description: Flexible JSON structure containing static credentials. Format varies by connector type (API key, username/password, etc.). type: object examples: @@ -7282,7 +7282,7 @@ components: properties: connected_account: description: Details of the connected account to update - $ref: "#/components/schemas/v1connected_accountsUpdateConnectedAccount" + $ref: '#/components/schemas/v1connected_accountsUpdateConnectedAccount' examples: - authorization_details: oauth_token: @@ -7303,8 +7303,8 @@ components: examples: - ca_123 identifier: - description: The unique identifier for the connected account within - the third-party service (e.g., email address, user ID, workspace + description: The unique identifier for the connected account within + the third-party service (e.g., email address, user ID, workspace identifier). type: string examples: @@ -7325,7 +7325,7 @@ components: connected_account: description: The updated connected account with refreshed credentials, new token expiry, and modified configuration settings. - $ref: "#/components/schemas/connected_accountsConnectedAccount" + $ref: '#/components/schemas/connected_accountsConnectedAccount' connectionsCodeChallengeType: type: string enum: @@ -7346,52 +7346,52 @@ components: additionalProperties: type: string configuration_type: - description: "How the connection was configured: DISCOVERY (automatic configuration) - or MANUAL (administrator configured)" - $ref: "#/components/schemas/connectionsConfigurationType" + description: 'How the connection was configured: DISCOVERY (automatic configuration) + or MANUAL (administrator configured)' + $ref: '#/components/schemas/connectionsConfigurationType' examples: - MANUAL debug_enabled: - description: Enables testing mode that allows non-HTTPS endpoints. - Should only be enabled in development environments, never in + description: Enables testing mode that allows non-HTTPS endpoints. + Should only be enabled in development environments, never in production. type: boolean examples: - true domains: - description: Domain associated with this connection, used for + description: Domain associated with this connection, used for domain-based authentication flows. type: array items: type: object - $ref: "#/components/schemas/domainsDomain" + $ref: '#/components/schemas/domainsDomain' examples: - - - name: example.com + - - name: example.com enabled: description: Controls whether users can sign in using this connection. - When false, the connection exists but cannot be used for + When false, the connection exists but cannot be used for authentication. type: boolean examples: - false id: - description: Unique identifier for this connection. Used in API calls + description: Unique identifier for this connection. Used in API calls to reference this specific connection. type: string examples: - conn_2123312131125533 key_id: - description: Alternative identifier for this connection, typically + description: Alternative identifier for this connection, typically used in frontend applications or URLs. type: string oauth_config: description: Configuration details for OAuth connections. Present only when type is OAUTH. - $ref: "#/components/schemas/connectionsOAuthConnectionConfig" + $ref: '#/components/schemas/connectionsOAuthConnectionConfig' oidc_config: - description: Configuration details for OpenID Connect (OIDC) + description: Configuration details for OpenID Connect (OIDC) connections. Present only when type is OIDC. - $ref: "#/components/schemas/connectionsOIDCConnectionConfig" + $ref: '#/components/schemas/connectionsOIDCConnectionConfig' organization_id: description: Identifier of the organization that owns this connection. Connections are typically scoped to a single organization. @@ -7399,52 +7399,52 @@ components: examples: - org_2123312131125533 passwordless_config: - description: Configuration details for Magic Link authentication. + description: Configuration details for Magic Link authentication. Present only when type is MAGIC_LINK. - $ref: "#/components/schemas/connectionsPasswordLessConfig" + $ref: '#/components/schemas/connectionsPasswordLessConfig' provider: - description: Identity provider service that handles authentication + description: Identity provider service that handles authentication (such as OKTA, Google, Azure AD, or a custom provider) - $ref: "#/components/schemas/connectionsConnectionProvider" + $ref: '#/components/schemas/connectionsConnectionProvider' examples: - OKTA provider_key: - description: Key ID of the identity provider service that handles + description: Key ID of the identity provider service that handles authentication type: string examples: - google saml_config: - description: Configuration details for SAML connections. Present only + description: Configuration details for SAML connections. Present only when type is SAML. - $ref: "#/components/schemas/connectionsSAMLConnectionConfigResponse" + $ref: '#/components/schemas/connectionsSAMLConnectionConfigResponse' static_config: description: Static configuration for custom connections. Present only when type is BASIC, BEARER, API_KEY, or custom. - $ref: "#/components/schemas/connectionsStaticAuthConfig" + $ref: '#/components/schemas/connectionsStaticAuthConfig' status: - description: Current configuration status of the connection. Possible + description: Current configuration status of the connection. Possible values include IN_PROGRESS, CONFIGURED, and ERROR. - $ref: "#/components/schemas/connectionsConnectionStatus" + $ref: '#/components/schemas/connectionsConnectionStatus' readOnly: true examples: - IN_PROGRESS test_connection_uri: - description: URI that can be used to test this connection. Visit this + description: URI that can be used to test this connection. Visit this URL to verify the connection works correctly. type: string examples: - https://auth.example.com/test-connection/conn_2123312131125533 type: - description: Authentication protocol used by this connection. Can be + description: Authentication protocol used by this connection. Can be OIDC (OpenID Connect), SAML, OAUTH, or MAGIC_LINK. - $ref: "#/components/schemas/connectionsConnectionType" + $ref: '#/components/schemas/connectionsConnectionType' examples: - OIDC webauthn_config: - description: Configuration details for WebAuthn (passkeys). Present + description: Configuration details for WebAuthn (passkeys). Present only when type is WEBAUTHN. - $ref: "#/components/schemas/connectionsWebAuthConfiguration" + $ref: '#/components/schemas/connectionsWebAuthConfiguration' connectionsConnectionProvider: type: string enum: @@ -7486,10 +7486,10 @@ components: type: object properties: connection: - description: Complete connection details including provider + description: Complete connection details including provider configuration, protocol settings, status, and all metadata. Contains everything needed to understand the connection's current state. - $ref: "#/components/schemas/connectionsConnection" + $ref: '#/components/schemas/connectionsConnection' connectionsIDPCertificate: type: object properties: @@ -7527,10 +7527,10 @@ components: items: type: string examples: - - - yourapp.com - - yourworkspace.com + - - yourapp.com + - yourworkspace.com enabled: - description: Whether the connection is currently active for + description: Whether the connection is currently active for organization users type: boolean examples: @@ -7541,13 +7541,13 @@ components: examples: - conn_2123312131125533 key_id: - description: Alternative identifier for this connection, typically + description: Alternative identifier for this connection, typically used in frontend applications or URLs type: string examples: - conn_2123312131125533 organization_id: - description: Unique identifier of the organization that owns this + description: Unique identifier of the organization that owns this connection type: string examples: @@ -7559,24 +7559,24 @@ components: - Your Organization provider: description: Identity provider type (e.g., OKTA, Google, Azure AD) - $ref: "#/components/schemas/connectionsConnectionProvider" + $ref: '#/components/schemas/connectionsConnectionProvider' examples: - CUSTOM provider_key: - description: Key ID of the identity provider service that handles + description: Key ID of the identity provider service that handles authentication type: string examples: - google status: description: Current configuration status of the connection - $ref: "#/components/schemas/connectionsConnectionStatus" + $ref: '#/components/schemas/connectionsConnectionStatus' readOnly: true examples: - IN_PROGRESS type: description: Authentication protocol used by the connection - $ref: "#/components/schemas/connectionsConnectionType" + $ref: '#/components/schemas/connectionsConnectionType' examples: - OIDC connectionsListConnectionsResponse: @@ -7587,7 +7587,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/connectionsListConnection" + $ref: '#/components/schemas/connectionsListConnection' connectionsNameIdFormat: type: string enum: @@ -7644,10 +7644,10 @@ components: items: type: string examples: - - - openid - - profile + - - openid + - profile sync_user_profile_on_login: - description: Indicates whether user profiles should be synchronized + description: Indicates whether user profiles should be synchronized with the identity provider upon each log-in. type: boolean examples: @@ -7676,7 +7676,7 @@ components: examples: - https://youridp.com/service/oauth/authorize backchannel_logout_redirect_uri: - description: backchannel logout redirect uri where idp sends + description: backchannel logout redirect uri where idp sends logout_token type: string readOnly: true @@ -7708,7 +7708,7 @@ components: examples: - https://youridp.com/service/oauth jit_provisioning_with_sso_enabled: - description: Indicates if Just In Time user provisioning is enabled + description: Indicates if Just In Time user provisioning is enabled for the connection type: boolean examples: @@ -7738,19 +7738,19 @@ components: description: OIDC Scopes type: array items: - $ref: "#/components/schemas/connectionsOIDCScope" + $ref: '#/components/schemas/connectionsOIDCScope' examples: - - - openid - - profile + - - openid + - profile sync_user_profile_on_login: - description: Indicates whether user profiles should be synchronized + description: Indicates whether user profiles should be synchronized with the identity provider upon each log-in. type: boolean examples: - true token_auth_type: description: Token Auth Type - $ref: "#/components/schemas/connectionsTokenAuthType" + $ref: '#/components/schemas/connectionsTokenAuthType' examples: - URL_PARAMS token_uri: @@ -7782,7 +7782,7 @@ components: - 6 code_challenge_type: description: Code Challenge Type - $ref: "#/components/schemas/connectionsCodeChallengeType" + $ref: '#/components/schemas/connectionsCodeChallengeType' examples: - NUMERIC enforce_same_browser_origin: @@ -7797,13 +7797,13 @@ components: examples: - 1 regenerate_passwordless_credentials_on_resend: - description: "Regenerate the " + description: 'Regenerate the ' type: boolean examples: - true type: description: Passwordless Type - $ref: "#/components/schemas/connectionsPasswordlessType" + $ref: '#/components/schemas/connectionsPasswordlessType' examples: - LINK validity: @@ -7856,7 +7856,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/connectionsIDPCertificate" + $ref: '#/components/schemas/connectionsIDPCertificate' idp_entity_id: description: IDP Entity ID type: string @@ -7869,12 +7869,12 @@ components: - https://youridp.com/service/saml/metadata idp_name_id_format: description: IDP Name ID Format - $ref: "#/components/schemas/connectionsNameIdFormat" + $ref: '#/components/schemas/connectionsNameIdFormat' examples: - EMAIL idp_slo_request_binding: description: IDP SLO Request Binding - $ref: "#/components/schemas/connectionsRequestBinding" + $ref: '#/components/schemas/connectionsRequestBinding' examples: - HTTP_POST idp_slo_required: @@ -7889,7 +7889,7 @@ components: - https://youridp.com/service/saml/slo idp_sso_request_binding: description: IDP SSO Request Binding - $ref: "#/components/schemas/connectionsRequestBinding" + $ref: '#/components/schemas/connectionsRequestBinding' examples: - HTTP_POST idp_sso_url: @@ -7898,14 +7898,14 @@ components: examples: - https://youridp.com/service/saml/sso jit_provisioning_with_sso_enabled: - description: Indicates if Just In Time user provisioning is enabled + description: Indicates if Just In Time user provisioning is enabled for the connection type: boolean examples: - true saml_signing_option: description: SAML Signing Option - $ref: "#/components/schemas/connectionsSAMLSigningOptions" + $ref: '#/components/schemas/connectionsSAMLSigningOptions' examples: - SAML_ONLY_RESPONSE_SIGNING sp_assertion_url: @@ -7930,7 +7930,7 @@ components: examples: - https://yourapp.com/sso/v1/saml/conn_1234/slo/callback sync_user_profile_on_login: - description: Indicates whether user profiles should be synchronized + description: Indicates whether user profiles should be synchronized with the identity provider upon each log-in. type: boolean examples: @@ -7964,7 +7964,7 @@ components: properties: enabled: description: Current state of the connection after the operation. True - means the connection is now enabled and can be used for + means the connection is now enabled and can be used for authentication. type: boolean examples: @@ -7981,15 +7981,15 @@ components: - BASIC_AUTH connectionsWebAuthConfiguration: type: object - title: WebAuthConfiguration defines WebAuthn (passkeys) configuration + title: WebAuthConfiguration defines WebAuthn (passkeys) configuration limited to RP and Attestation properties: attestation: - $ref: "#/components/schemas/WebAuthConfigurationAttestation" + $ref: '#/components/schemas/WebAuthConfigurationAttestation' authenticator_selection: - $ref: "#/components/schemas/WebAuthConfigurationAuthenticatorSelection" + $ref: '#/components/schemas/WebAuthConfigurationAuthenticatorSelection' authenticators: - $ref: "#/components/schemas/WebAuthConfigurationAuthenticators" + $ref: '#/components/schemas/WebAuthConfigurationAuthenticators' enable_auto_registration: description: Enable auto registration for WebAuthn type: boolean @@ -7997,12 +7997,12 @@ components: description: Allow autofill of passkeys in login page type: boolean rp: - $ref: "#/components/schemas/WebAuthConfigurationRp" + $ref: '#/components/schemas/WebAuthConfigurationRp' show_passkey_button: description: Show passkey button on login screen type: boolean timeout: - $ref: "#/components/schemas/WebAuthConfigurationTimeout" + $ref: '#/components/schemas/WebAuthConfigurationTimeout' directoriesAttributeMapping: type: object properties: @@ -8017,45 +8017,45 @@ components: type: array items: type: object - $ref: "#/components/schemas/directoriesAttributeMapping" + $ref: '#/components/schemas/directoriesAttributeMapping' directoriesDirectory: type: object properties: attribute_mappings: - description: Mappings between directory attributes and Scalekit user + description: Mappings between directory attributes and Scalekit user and group attributes - $ref: "#/components/schemas/directoriesAttributeMappings" + $ref: '#/components/schemas/directoriesAttributeMappings' directory_endpoint: - description: The endpoint URL generated by Scalekit for synchronizing + description: The endpoint URL generated by Scalekit for synchronizing users and groups from the Directory Provider type: string examples: - https://yourapp.scalekit.com/api/v1/directoies/dir_123212312/scim/v2 directory_provider: description: Identity provider connected to this directory - $ref: "#/components/schemas/directoriesDirectoryProvider" + $ref: '#/components/schemas/directoriesDirectoryProvider' examples: - OKTA directory_type: - description: Type of the directory, indicating the protocol or + description: Type of the directory, indicating the protocol or standard used for synchronization - $ref: "#/components/schemas/directoriesDirectoryType" + $ref: '#/components/schemas/directoriesDirectoryType' examples: - SCIM email: - description: Email Id associated with Directory whose access will be + description: Email Id associated with Directory whose access will be used for polling type: string examples: - john.doe@scalekit.cloud enabled: - description: Indicates whether the directory is currently enabled and + description: Indicates whether the directory is currently enabled and actively synchronizing users and groups type: boolean examples: - true groups_tracked: - description: It indicates if all groups are tracked or select groups + description: It indicates if all groups are tracked or select groups are tracked type: string examples: @@ -8073,32 +8073,32 @@ components: examples: - 2024-10-01T00:00:00Z name: - description: Name of the directory, typically representing the + description: Name of the directory, typically representing the connected Directory provider type: string examples: - Azure AD organization_id: - description: Unique identifier of the organization to which the + description: Unique identifier of the organization to which the directory belongs type: string examples: - org_121312434123312 role_assignments: - description: Role assignments associated with the directory, defining + description: Role assignments associated with the directory, defining group based role assignments - $ref: "#/components/schemas/directoriesRoleAssignments" + $ref: '#/components/schemas/directoriesRoleAssignments' secrets: description: List of secrets used for authenticating and synchronizing with the Directory Provider type: array items: type: object - $ref: "#/components/schemas/directoriesSecret" + $ref: '#/components/schemas/directoriesSecret' stats: - description: Statistics and metrics related to the directory, such as + description: Statistics and metrics related to the directory, such as synchronization status and error counts - $ref: "#/components/schemas/directoriesStats" + $ref: '#/components/schemas/directoriesStats' status: description: Directory Status type: string @@ -8188,7 +8188,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/directoriesDirectoryGroup" + $ref: '#/components/schemas/directoriesDirectoryGroup' id: description: User ID type: string @@ -8213,7 +8213,7 @@ components: properties: directory: description: Detailed information about the requested directory - $ref: "#/components/schemas/directoriesDirectory" + $ref: '#/components/schemas/directoriesDirectory' directoriesListDirectoriesResponse: type: object properties: @@ -8222,27 +8222,27 @@ components: type: array items: type: object - $ref: "#/components/schemas/directoriesDirectory" + $ref: '#/components/schemas/directoriesDirectory' directoriesListDirectoryGroupsResponse: type: object properties: groups: - description: List of directory groups retrieved from the specified + description: List of directory groups retrieved from the specified directory type: array items: type: object - $ref: "#/components/schemas/directoriesDirectoryGroup" + $ref: '#/components/schemas/directoriesDirectoryGroup' next_page_token: - description: Token to retrieve the next page of results. Use this + description: Token to retrieve the next page of results. Use this token in the 'page_token' field of the next request type: string prev_page_token: - description: Token to retrieve the previous page of results. Use this + description: Token to retrieve the previous page of results. Use this token in the 'page_token' field of the next request type: string total_size: - description: Total number of groups matching the request criteria, + description: Total number of groups matching the request criteria, regardless of pagination type: integer format: int64 @@ -8250,25 +8250,25 @@ components: type: object properties: next_page_token: - description: Token for pagination. Use this token in the 'page_token' + description: Token for pagination. Use this token in the 'page_token' field of the next request to fetch the subsequent page of users type: string prev_page_token: - description: Token for pagination. Use this token in the 'page_token' + description: Token for pagination. Use this token in the 'page_token' field of the next request to fetch the prior page of users type: string total_size: - description: Total number of users available in the directory that + description: Total number of users available in the directory that match the request criteria type: integer format: int64 users: - description: List of directory users retrieved from the specified + description: List of directory users retrieved from the specified directory type: array items: type: object - $ref: "#/components/schemas/directoriesDirectoryUser" + $ref: '#/components/schemas/directoriesDirectoryUser' directoriesRoleAssignment: type: object properties: @@ -8286,7 +8286,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/directoriesRoleAssignment" + $ref: '#/components/schemas/directoriesRoleAssignment' directoriesSecret: type: object properties: @@ -8322,7 +8322,7 @@ components: - Nzg5 status: description: Secret Status - $ref: "#/components/schemas/directoriesSecretStatus" + $ref: '#/components/schemas/directoriesSecretStatus' examples: - INACTIVE directoriesSecretStatus: @@ -8360,16 +8360,16 @@ components: type: object properties: enabled: - description: Specifies the directory's state after the toggle + description: Specifies the directory's state after the toggle operation. A value of `true` indicates that the directory is enabled - and actively synchronizing users and groups. A value of `false` + and actively synchronizing users and groups. A value of `false` means the directory is disabled, halting synchronization type: boolean examples: - true error_message: - description: Contains a human-readable error message if the toggle - operation encountered an issue. If the operation was successful, + description: Contains a human-readable error message if the toggle + operation encountered an issue. If the operation was successful, this field will be empty type: string examples: @@ -8378,9 +8378,9 @@ components: type: object properties: domain: - description: The newly created domain object with all configuration + description: The newly created domain object with all configuration details and system-generated identifiers. - $ref: "#/components/schemas/domainsDomain" + $ref: '#/components/schemas/domainsDomain' domainsDomain: type: object properties: @@ -8391,21 +8391,21 @@ components: examples: - 2025-09-01T12:14:43.100000Z domain: - description: The business domain name that was configured for allowed - email domain functionality (e.g., company.com, + description: The business domain name that was configured for allowed + email domain functionality (e.g., company.com, subdomain.company.com). type: string examples: - customerdomain.com domain_type: - example: "ORGANIZATION_DOMAIN" + example: 'ORGANIZATION_DOMAIN' environment_id: description: The environment ID where this domain is configured. type: string examples: - env_58345499215790610 id: - description: Scalekit-generated unique identifier for this domain + description: Scalekit-generated unique identifier for this domain record. type: string examples: @@ -8427,25 +8427,25 @@ components: - ALLOWED_EMAIL_DOMAIN - ORGANIZATION_DOMAIN x-enum-varnames: - - "ORGANIZATION_DOMAIN" - - "ALLOWED_EMAIL_DOMAIN" + - 'ORGANIZATION_DOMAIN' + - 'ALLOWED_EMAIL_DOMAIN' domainsGetDomainResponse: type: object properties: domain: - description: The requested domain object with complete details + description: The requested domain object with complete details including domain type, timestamps and configuration. - $ref: "#/components/schemas/domainsDomain" + $ref: '#/components/schemas/domainsDomain' domainsListDomainResponse: type: object properties: domains: - description: Array of domain objects containing all domain details + description: Array of domain objects containing all domain details including verification status and configuration. type: array items: type: object - $ref: "#/components/schemas/domainsDomain" + $ref: '#/components/schemas/domainsDomain' page_number: description: Current page number in the pagination sequence. type: integer @@ -8466,7 +8466,7 @@ components: description: Additional debugging information provided by the server. type: string stack_entries: - description: The stack trace entries indicating where the error + description: The stack trace entries indicating where the error occurred. type: array items: @@ -8475,21 +8475,21 @@ components: type: object properties: debug_info: - $ref: "#/components/schemas/errdetailsDebugInfo" + $ref: '#/components/schemas/errdetailsDebugInfo' error_code: type: string help_info: - $ref: "#/components/schemas/errdetailsHelpInfo" + $ref: '#/components/schemas/errdetailsHelpInfo' localized_message_info: - $ref: "#/components/schemas/errdetailsLocalizedMessageInfo" + $ref: '#/components/schemas/errdetailsLocalizedMessageInfo' request_info: - $ref: "#/components/schemas/errdetailsRequestInfo" + $ref: '#/components/schemas/errdetailsRequestInfo' resource_info: - $ref: "#/components/schemas/errdetailsResourceInfo" + $ref: '#/components/schemas/errdetailsResourceInfo' tool_error_info: - $ref: "#/components/schemas/errdetailsToolErrorInfo" + $ref: '#/components/schemas/errdetailsToolErrorInfo' validation_error_info: - $ref: "#/components/schemas/errdetailsValidationErrorInfo" + $ref: '#/components/schemas/errdetailsValidationErrorInfo' errdetailsHelpInfo: type: object properties: @@ -8497,7 +8497,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/HelpInfoLink" + $ref: '#/components/schemas/HelpInfoLink' errdetailsLocalizedMessageInfo: type: object properties: @@ -8573,21 +8573,21 @@ components: type: array items: type: object - $ref: "#/components/schemas/ValidationErrorInfoFieldViolation" + $ref: '#/components/schemas/ValidationErrorInfoFieldViolation' organizationsCreateOrganizationResponse: type: object properties: organization: - description: The newly created organization containing its ID, + description: The newly created organization containing its ID, settings, and metadata - $ref: "#/components/schemas/organizationsOrganization" + $ref: '#/components/schemas/organizationsOrganization' organizationsFeature: description: >- - dir_sync: Enables directory synchronization configuration in the portal - sso: Enables Single Sign-On (SSO) configuration in the portal type: string - title: Feature represents the available features that can be enabled for + title: Feature represents the available features that can be enabled for an organization's portal link enum: - dir_sync @@ -8596,16 +8596,16 @@ components: type: object properties: link: - description: "Contains the generated admin portal link details. The link + description: 'Contains the generated admin portal link details. The link URL can be shared with organization administrators to set up: Single Sign-On - (SSO) authentication and directory synchronization" - $ref: "#/components/schemas/organizationsLink" + (SSO) authentication and directory synchronization' + $ref: '#/components/schemas/organizationsLink' organizationsGetOrganizationResponse: type: object properties: organization: description: The newly created organization - $ref: "#/components/schemas/organizationsOrganization" + $ref: '#/components/schemas/organizationsOrganization' organizationsLink: type: object properties: @@ -8630,7 +8630,7 @@ components: type: object properties: next_page_token: - description: Pagination token for the next page of results. Use this + description: Pagination token for the next page of results. Use this token to fetch the next page. type: string examples: @@ -8640,9 +8640,9 @@ components: type: array items: type: object - $ref: "#/components/schemas/organizationsOrganization" + $ref: '#/components/schemas/organizationsOrganization' prev_page_token: - description: Pagination token for the previous page of results. Use + description: Pagination token for the previous page of results. Use this token to fetch the previous page. type: string examples: @@ -8666,23 +8666,23 @@ components: examples: - 2025-02-15T06:23:44.560000Z display_name: - description: Name of the organization. Must be between 1 and 200 + description: Name of the organization. Must be between 1 and 200 characters type: string title: Name of the org to be used in display examples: - Megasoft external_id: - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system. type: string - title: External Id is useful to store a unique identifier for a given - Org that. The unique Identifier can be the id of your tenant / org + title: External Id is useful to store a unique identifier for a given + Org that. The unique Identifier can be the id of your tenant / org in your SaaSApp examples: - my_unique_id id: - description: Unique scalekit-generated identifier that uniquely + description: Unique scalekit-generated identifier that uniquely references an organization type: string title: Id @@ -8694,15 +8694,15 @@ components: additionalProperties: type: string region_code: - description: Geographic region code for the organization. Currently + description: Geographic region code for the organization. Currently limited to US. title: Optional regioncode - $ref: "#/components/schemas/commonsRegionCode" + $ref: '#/components/schemas/commonsRegionCode' examples: - US settings: title: Organization Settings - $ref: "#/components/schemas/organizationsOrganizationSettings" + $ref: '#/components/schemas/organizationsOrganizationSettings' update_time: description: Timestamp when the organization was last updated type: string @@ -8711,24 +8711,24 @@ components: examples: - 2025-02-15T06:23:44.560000Z organizationsOrganizationSettings: - description: Configuration options that control organization-level + description: Configuration options that control organization-level features and capabilities type: object title: Organization Settings properties: features: - description: List of feature toggles that control organization - capabilities such as SSO authentication and directory + description: List of feature toggles that control organization + capabilities such as SSO authentication and directory synchronization type: array items: type: object - $ref: "#/components/schemas/organizationsOrganizationSettingsFeature" + $ref: '#/components/schemas/organizationsOrganizationSettingsFeature' examples: - - - enabled: true - name: sso - - enabled: false - name: directory_sync + - - enabled: true + name: sso + - enabled: false + name: directory_sync examples: - features: - enabled: true @@ -8736,7 +8736,7 @@ components: - enabled: false name: directory_sync organizationsOrganizationSettingsFeature: - description: Controls the activation state of a specific organization + description: Controls the activation state of a specific organization feature type: object title: Organization Feature Toggle @@ -8761,8 +8761,8 @@ components: properties: max_allowed_users: description: Maximum number of users allowed in the organization. When - nil (not set), there feature is not enabled. When explicitly set to - zero, it also means no limit. When set to a positive integer, it + nil (not set), there feature is not enabled. When explicitly set to + zero, it also means no limit. When set to a positive integer, it enforces the maximum user limit. type: integer format: int32 @@ -8773,18 +8773,18 @@ components: properties: organization: description: Updated organization details - $ref: "#/components/schemas/organizationsOrganization" + $ref: '#/components/schemas/organizationsOrganization' organizationsUpsertUserManagementSettingsResponse: type: object properties: settings: description: The updated setting. - $ref: "#/components/schemas/organizationsOrganizationUserManagementSettings" + $ref: '#/components/schemas/organizationsOrganizationUserManagementSettings' passwordlessResendPasswordlessRequest: type: object properties: auth_request_id: - description: The authentication request identifier from the original + description: The authentication request identifier from the original send passwordless email request. Use this to resend the Verification Code (OTP) or Magic Link to the same email address. type: string @@ -8794,39 +8794,39 @@ components: type: object properties: email: - description: Email address where the passwordless authentication + description: Email address where the passwordless authentication credentials will be sent. Must be a valid email format. type: string examples: - john.doe@example.com expires_in: - description: Time in seconds until the passwordless authentication + description: Time in seconds until the passwordless authentication expires. If not specified, defaults to 300 seconds (5 minutes) type: integer format: int64 examples: - 300 magiclink_auth_uri: - description: Your application's callback URL where users will be - redirected after clicking the magic link in their email. The link + description: Your application's callback URL where users will be + redirected after clicking the magic link in their email. The link token will be appended as a query parameter as link_token type: string examples: - https://yourapp.com/auth/passwordless/callback state: description: Custom state parameter that will be returned unchanged in - the verification response. Use this to maintain application state - between the authentication request and callback, such as the + the verification response. Use this to maintain application state + between the authentication request and callback, such as the intended destination after login type: string examples: - d62ivasry29lso template: - description: Specifies the authentication intent for the passwordless - request. Use SIGNIN for existing users or SIGNUP for new user - registration. This affects the email template and user experience + description: Specifies the authentication intent for the passwordless + request. Use SIGNIN for existing users or SIGNUP for new user + registration. This affects the email template and user experience flow. - $ref: "#/components/schemas/passwordlessTemplateType" + $ref: '#/components/schemas/passwordlessTemplateType' examples: - SIGNIN template_variables: @@ -8856,14 +8856,14 @@ components: type: object properties: auth_request_id: - description: Unique identifier for this passwordless authentication + description: Unique identifier for this passwordless authentication request. Use this ID to resend emails. type: string readOnly: true examples: - h5Y8kT5RVwaea5WEgW4n-6C-aO_-fuTUW7Vb9-Rh3AcY9qxZqQ expires_at: - description: Unix timestamp (seconds since epoch) when the + description: Unix timestamp (seconds since epoch) when the passwordless authentication will expire. After this time, the OTP or magic link will no longer be valid. type: string @@ -8872,8 +8872,8 @@ components: examples: - 1748696575 expires_in: - description: Number of seconds from now until the passwordless - authentication expires. This is a convenience field calculated from + description: Number of seconds from now until the passwordless + authentication expires. This is a convenience field calculated from the expires_at timestamp. type: integer format: int64 @@ -8881,10 +8881,10 @@ components: examples: - 300 passwordless_type: - description: Type of passwordless authentication that was sent via - email. OTP sends a numeric code, LINK sends a clickable magic link, + description: Type of passwordless authentication that was sent via + email. OTP sends a numeric code, LINK sends a clickable magic link, and LINK_OTP provides both options for user convenience. - $ref: "#/components/schemas/authpasswordlessPasswordlessType" + $ref: '#/components/schemas/authpasswordlessPasswordlessType' examples: - OTP passwordlessTemplateType: @@ -8896,22 +8896,22 @@ components: type: object properties: auth_request_id: - description: The authentication request identifier returned from the - send passwordless email endpoint. Required when verifying OTP codes + description: The authentication request identifier returned from the + send passwordless email endpoint. Required when verifying OTP codes to link the verification with the original request. type: string examples: - h5Y8kT5RVwaea5WEgW4n-6C-aO_-fuTUW7Vb9-Rh3AcY9qxZqQ code: - description: The Verification Code (OTP) received via email. This is + description: The Verification Code (OTP) received via email. This is typically a 6-digit numeric code that users enter manually to verify their identity. type: string examples: - - "123456" + - '123456' link_token: - description: The unique token from the magic link URL received via - email. Extract this token when users click the magic link and are + description: The unique token from the magic link URL received via + email. Extract this token when users click the magic link and are redirected to your application to later verify the user. type: string examples: @@ -8920,22 +8920,22 @@ components: type: object properties: email: - description: Email address of the successfully authenticated user. - This confirms which email account was verified through the + description: Email address of the successfully authenticated user. + This confirms which email account was verified through the passwordless flow. type: string readOnly: true examples: - john.doe@example.com passwordless_type: - description: The type of passwordless authentication that was + description: The type of passwordless authentication that was successfully verified, confirming which method the user completed. - $ref: "#/components/schemas/authpasswordlessPasswordlessType" + $ref: '#/components/schemas/authpasswordlessPasswordlessType' examples: - OTP state: - description: The custom state parameter that was provided in the - original authentication request, returned unchanged. Use this to + description: The custom state parameter that was provided in the + original authentication request, returned unchanged. Use this to restore your application's context after authentication. type: string readOnly: true @@ -8944,7 +8944,7 @@ components: template: description: Specifies which email template to choose. For User Signin choose SIGNIN and for User Signup use SIGNUP - $ref: "#/components/schemas/passwordlessTemplateType" + $ref: '#/components/schemas/passwordlessTemplateType' examples: - SIGNIN protobufNullValue: @@ -8961,29 +8961,29 @@ components: type: object properties: permissions: - description: List of all permissions belonging to the role after + description: List of all permissions belonging to the role after addition type: array items: type: object - $ref: "#/components/schemas/rolesPermission" + $ref: '#/components/schemas/rolesPermission' rolesCreateOrganizationRoleResponse: type: object properties: role: - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' rolesCreatePermissionResponse: type: object properties: permission: - $ref: "#/components/schemas/rolesPermission" + $ref: '#/components/schemas/rolesPermission' rolesCreateRoleResponse: type: object properties: role: - description: The created role object with system-generated ID and all + description: The created role object with system-generated ID and all configuration details. - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' examples: - description: Can edit content display_name: Content Editor @@ -8993,19 +8993,19 @@ components: type: object properties: role: - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' rolesGetPermissionResponse: type: object properties: permission: - $ref: "#/components/schemas/rolesPermission" + $ref: '#/components/schemas/rolesPermission' rolesGetRoleResponse: type: object properties: role: - description: The complete role object with all metadata, permissions, + description: The complete role object with all metadata, permissions, and inheritance details. - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' examples: - dependent_roles_count: 2 display_name: Content Editor @@ -9030,17 +9030,17 @@ components: type: array items: type: object - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' rolesListEffectiveRolePermissionsResponse: type: object properties: permissions: - description: List of all effective permissions including those + description: List of all effective permissions including those inherited from base roles type: array items: type: object - $ref: "#/components/schemas/rolesPermission" + $ref: '#/components/schemas/rolesPermission' rolesListOrganizationRolesResponse: type: object properties: @@ -9049,7 +9049,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' rolesListPermissionsResponse: type: object properties: @@ -9062,7 +9062,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/rolesPermission" + $ref: '#/components/schemas/rolesPermission' prev_page_token: description: Token to retrieve previous page of results type: string @@ -9082,24 +9082,24 @@ components: type: array items: type: object - $ref: "#/components/schemas/rolesPermission" + $ref: '#/components/schemas/rolesPermission' rolesListRolesResponse: type: object properties: roles: - description: List of all roles in the environment with their metadata + description: List of all roles in the environment with their metadata and optionally their permissions. type: array items: type: object - $ref: "#/components/schemas/v1rolesRole" - examples: - - - display_name: Administrator - id: role_1234abcd5678efgh - name: admin - - display_name: Viewer - id: role_9876zyxw5432vuts - name: viewer + $ref: '#/components/schemas/v1rolesRole' + examples: + - - display_name: Administrator + id: role_1234abcd5678efgh + name: admin + - display_name: Viewer + id: role_9876zyxw5432vuts + name: viewer rolesPermission: type: object title: Permission Entity @@ -9112,7 +9112,7 @@ components: id: type: string is_scalekit_permission: - description: Indicates whether this permission is predefined by + description: Indicates whether this permission is predefined by Scalekit type: boolean examples: @@ -9124,7 +9124,7 @@ components: format: date-time rolesRolePermission: type: object - title: RolePermissions represents a permission with role source + title: RolePermissions represents a permission with role source information properties: create_time: @@ -9149,7 +9149,7 @@ components: properties: default_member: description: Updated default member role - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' examples: - description: Role for regular members display_name: Member Role @@ -9169,9 +9169,9 @@ components: type: object properties: default_creator: - description: Default creator role (deprecated - use + description: Default creator role (deprecated - use default_creator_role field instead) - $ref: "#/components/schemas/rolesUpdateDefaultRole" + $ref: '#/components/schemas/rolesUpdateDefaultRole' examples: - description: Role for creating resources display_name: Creator Role @@ -9179,8 +9179,8 @@ components: name: creator default_creator_role: description: Name of the role to set as the default creator role. This - role will be automatically assigned to users who create new - resources in the environment. Must be a valid role name that exists + role will be automatically assigned to users who create new + resources in the environment. Must be a valid role name that exists in the environment. type: string examples: @@ -9188,16 +9188,16 @@ components: default_member: description: Default member role (deprecated - use default_member_role field instead) - $ref: "#/components/schemas/rolesUpdateDefaultRole" + $ref: '#/components/schemas/rolesUpdateDefaultRole' examples: - description: Role for regular members display_name: Member Role id: role_0987654321 name: member default_member_role: - description: Name of the role to set as the default member role. This - role will be automatically assigned to new users when they join the - environment. Must be a valid role name that exists in the + description: Name of the role to set as the default member role. This + role will be automatically assigned to new users when they join the + environment. Must be a valid role name that exists in the environment. type: string examples: @@ -9206,20 +9206,20 @@ components: type: object properties: default_creator: - description: The role that is now set as the default creator role for - the environment. Contains complete role information including + description: The role that is now set as the default creator role for + the environment. Contains complete role information including permissions and metadata. - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' examples: - description: Role for creating resources display_name: Creator Role id: role_1234567890 name: creator default_member: - description: The role that is now set as the default member role for - the environment. Contains complete role information including + description: The role that is now set as the default member role for + the environment. Contains complete role information including permissions and metadata. - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' examples: - description: Role for regular members display_name: Member Role @@ -9229,19 +9229,19 @@ components: type: object properties: role: - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' rolesUpdatePermissionResponse: type: object properties: permission: - $ref: "#/components/schemas/rolesPermission" + $ref: '#/components/schemas/rolesPermission' rolesUpdateRoleResponse: type: object properties: role: - description: The updated role object with all current configuration + description: The updated role object with all current configuration details. - $ref: "#/components/schemas/v1rolesRole" + $ref: '#/components/schemas/v1rolesRole' examples: - description: Can edit and approve content display_name: Senior Editor @@ -9251,13 +9251,13 @@ components: type: object properties: browser: - description: "Browser name and family extracted from the user agent. Examples: - Chrome, Safari, Firefox, Edge, Mobile Safari." + description: 'Browser name and family extracted from the user agent. Examples: + Chrome, Safari, Firefox, Edge, Mobile Safari.' type: string examples: - Chrome browser_version: - description: Version of the browser application. Represents the + description: Version of the browser application. Represents the specific release version of the browser being used. type: string examples: @@ -9272,7 +9272,7 @@ components: - desktop ip: description: IP address of the device that initiated the session. This - is the public-facing IP address used to connect to the application. + is the public-facing IP address used to connect to the application. Useful for security audits and geographic distribution analysis. type: string examples: @@ -9281,23 +9281,23 @@ components: description: "Geographic location information derived from IP address geolocation. Includes country, region, city, and coordinates. Note: Based on IP location data and may not represent the user's exact physical location." - $ref: "#/components/schemas/v1sessionsLocation" + $ref: '#/components/schemas/v1sessionsLocation' os: - description: "Operating system name extracted from the user agent and device - headers. Examples: macOS, Windows, Linux, iOS, Android." + description: 'Operating system name extracted from the user agent and device + headers. Examples: macOS, Windows, Linux, iOS, Android.' type: string examples: - macOS os_version: - description: Version of the operating system. Represents the specific + description: Version of the operating system. Represents the specific OS release the device is running. type: string examples: - - "14.2" + - '14.2' user_agent: - description: Complete HTTP User-Agent header string from the client - request. Contains browser type, version, and operating system - information. Used for detailed device fingerprinting and user agent + description: Complete HTTP User-Agent header string from the client + request. Contains browser type, version, and operating system + information. Used for detailed device fingerprinting and user agent analysis. type: string examples: @@ -9307,15 +9307,15 @@ components: type: object properties: revoked_sessions: - description: List of all sessions that were revoked, including - detailed information for each revoked session with IDs, timestamps, + description: List of all sessions that were revoked, including + detailed information for each revoked session with IDs, timestamps, and device details. type: array items: type: object - $ref: "#/components/schemas/sessionsRevokedSessionDetails" + $ref: '#/components/schemas/sessionsRevokedSessionDetails' total_revoked: - description: Total count of active sessions that were revoked. Useful + description: Total count of active sessions that were revoked. Useful for confirmation and audit logging. type: integer format: int64 @@ -9326,73 +9326,73 @@ components: properties: revoked_session: description: Details of the revoked session including session ID, user - ID, creation and revocation timestamps, and final device + ID, creation and revocation timestamps, and final device information. - $ref: "#/components/schemas/sessionsRevokedSessionDetails" + $ref: '#/components/schemas/sessionsRevokedSessionDetails' sessionsRevokedSessionDetails: type: object properties: absolute_expires_at: description: The absolute expiration timestamp that was configured for - this session before revocation. Represents the hard deadline + this session before revocation. Represents the hard deadline regardless of activity. type: string format: date-time examples: - 2025-01-22T10:30:00Z created_at: - description: Timestamp indicating when the session was originally + description: Timestamp indicating when the session was originally created before revocation. type: string format: date-time examples: - 2025-01-15T10:30:00Z expired_at: - description: Timestamp when the session was actually terminated. Set + description: Timestamp when the session was actually terminated. Set to the revocation time when the session is revoked. type: string format: date-time examples: - 2025-01-15T12:00:00Z idle_expires_at: - description: The idle expiration timestamp that was configured for - this session before revocation. Represents when the session would + description: The idle expiration timestamp that was configured for + this session before revocation. Represents when the session would have expired due to inactivity. type: string format: date-time examples: - 2025-01-15T11:30:00Z last_active_at: - description: Timestamp of the last recorded user activity in this - session before revocation. Helps identify inactive sessions that + description: Timestamp of the last recorded user activity in this + session before revocation. Helps identify inactive sessions that were revoked. type: string format: date-time examples: - 2025-01-15T10:55:30Z logout_at: - description: Timestamp when the user explicitly logged out (if + description: Timestamp when the user explicitly logged out (if applicable). Null if the session was revoked without prior logout. type: string format: date-time examples: - 2025-01-15T14:00:00Z session_id: - description: Unique identifier for the revoked session. + description: Unique identifier for the revoked session. System-generated read-only field. type: string examples: - ses_1234567890123456 status: - description: Status of the session after revocation. Always 'revoked' - since only active sessions can be revoked. Sessions that were - already expired or logged out are not included in the revocation + description: Status of the session after revocation. Always 'revoked' + since only active sessions can be revoked. Sessions that were + already expired or logged out are not included in the revocation response. type: string examples: - revoked updated_at: - description: Timestamp indicating when the session was last modified + description: Timestamp indicating when the session was last modified before revocation. type: string format: date-time @@ -9407,7 +9407,7 @@ components: type: object properties: absolute_expires_at: - description: Hard expiration timestamp for the session regardless of + description: Hard expiration timestamp for the session regardless of user activity. The session will be forcibly terminated at this time. This represents the maximum session lifetime from creation. type: string @@ -9416,39 +9416,39 @@ components: - 2025-01-22T10:30:00Z authenticated_organizations: description: List of organization IDs that have been authenticated for - this user within the current session. Contains all organizations + this user within the current session. Contains all organizations where the user has successfully completed SSO or authentication. type: array items: type: string examples: - - - org_123 - - org_456 + - - org_123 + - org_456 created_at: - description: Timestamp indicating when the session was created. This - is set once at session creation and remains constant throughout the + description: Timestamp indicating when the session was created. This + is set once at session creation and remains constant throughout the session lifetime. type: string format: date-time examples: - 2025-01-15T10:30:00Z device: - description: Complete device metadata associated with this session - including browser, operating system, device type, and geographic + description: Complete device metadata associated with this session + including browser, operating system, device type, and geographic location based on IP address. - $ref: "#/components/schemas/sessionsDeviceDetails" + $ref: '#/components/schemas/sessionsDeviceDetails' expired_at: - description: Timestamp when the session was terminated. Null if the - session is still active. Set when the session expires due to - reaching idle_expires_at or absolute_expires_at timeout, or when - administratively revoked. Not set for user-initiated logout (see + description: Timestamp when the session was terminated. Null if the + session is still active. Set when the session expires due to + reaching idle_expires_at or absolute_expires_at timeout, or when + administratively revoked. Not set for user-initiated logout (see logout_at instead). type: string format: date-time examples: - 2025-01-15T12:00:00Z idle_expires_at: - description: Projected expiration timestamp if the session remains + description: Projected expiration timestamp if the session remains idle without user activity. This timestamp is recalculated with each user activity. Session will be automatically terminated at this time if no activity occurs. @@ -9457,30 +9457,30 @@ components: examples: - 2025-01-15T11:30:00Z last_active_at: - description: Timestamp of the most recent user activity detected in - this session. Updated on each API request or user interaction. Used + description: Timestamp of the most recent user activity detected in + this session. Updated on each API request or user interaction. Used to determine if a session has exceeded the idle timeout threshold. type: string format: date-time examples: - 2025-01-15T10:55:30Z logout_at: - description: Timestamp when the user explicitly logged out from the - session. Null if the user has not logged out. When set, indicates + description: Timestamp when the user explicitly logged out from the + session. Null if the user has not logged out. When set, indicates the session ended due to explicit user logout rather than timeout. type: string format: date-time examples: - 2025-01-15T14:00:00Z organization_id: - description: Organization ID for the user's most recently active - organization within this session. This represents the primary + description: Organization ID for the user's most recently active + organization within this session. This represents the primary organization context for the current session. type: string examples: - org_1234567890123456 session_id: - description: Unique identifier for the session. System-generated + description: Unique identifier for the session. System-generated read-only field used to reference this session. type: string examples: @@ -9495,15 +9495,15 @@ components: examples: - active updated_at: - description: Timestamp indicating when the session was last updated. - Updated whenever session state changes such as organization context + description: Timestamp indicating when the session was last updated. + Updated whenever session state changes such as organization context changes or metadata updates. type: string format: date-time examples: - 2025-01-15T10:45:00Z user_id: - description: Unique identifier for the user who owns and is + description: Unique identifier for the user who owns and is authenticated within this session. type: string examples: @@ -9513,29 +9513,29 @@ components: properties: next_page_token: description: Pagination token for retrieving the next page of results. - Empty string if there are no more pages (you have reached the final + Empty string if there are no more pages (you have reached the final page of results). type: string examples: - eyJwYWdlIjogMiwgImxhc3RfaWQiOiAic2VzXzEyMzQ1In0= prev_page_token: - description: Pagination token for retrieving the previous page of - results. Empty string for the first page. Use this to navigate + description: Pagination token for retrieving the previous page of + results. Empty string for the first page. Use this to navigate backward through result pages. type: string examples: - eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInNlc183OTAxIn0= sessions: - description: Array of session objects for the requested user. May + description: Array of session objects for the requested user. May contain fewer entries than the requested page_size when reaching the final page of results. type: array items: type: object - $ref: "#/components/schemas/sessionsSessionDetails" + $ref: '#/components/schemas/sessionsSessionDetails' total_size: - description: Total number of sessions matching the applied filter - criteria, regardless of pagination. This represents the complete + description: Total number of sessions matching the applied filter + criteria, regardless of pagination. This represents the complete result set size before pagination is applied. type: integer format: int64 @@ -9546,15 +9546,15 @@ components: properties: end_time: description: Filter to include only sessions created on or before this - timestamp. Optional. Uses RFC 3339 format. Must be after start_time + timestamp. Optional. Uses RFC 3339 format. Must be after start_time if both are specified. type: string format: date-time examples: - 2025-12-31T23:59:59Z start_time: - description: Filter to include only sessions created on or after this - timestamp. Optional. Uses RFC 3339 format. Useful for querying + description: Filter to include only sessions created on or after this + timestamp. Optional. Uses RFC 3339 format. Useful for querying sessions within a specific time window. type: string format: date-time @@ -9569,19 +9569,19 @@ components: items: type: string examples: - - - active + - - active toolsExecuteToolRequest: type: object properties: connected_account_id: - description: Optional. The unique ID of the connected account. Use - this to directly identify the connected account instead of using + description: Optional. The unique ID of the connected account. Use + this to directly identify the connected account instead of using identifier + connector combination. type: string examples: - ca_123 connector: - description: Optional. The name of the connector/provider (e.g., + description: Optional. The name of the connector/provider (e.g., 'Google Workspace', 'Slack', 'Notion'). Use this in combination with identifier to identify the connected account. type: string @@ -9589,22 +9589,22 @@ components: - Google Workspace identifier: description: Optional. The unique identifier for the connected account - within the third-party service (e.g., email address, user ID, - workspace identifier). Use this in combination with connector to + within the third-party service (e.g., email address, user ID, + workspace identifier). Use this in combination with connector to identify the connected account. type: string examples: - user@example.com organization_id: - description: Optional. The organization ID to scope the connected - account lookup. Use this to narrow down the search when the same + description: Optional. The organization ID to scope the connected + account lookup. Use this to narrow down the search when the same identifier exists across multiple organizations. type: string examples: - org_123 params: - description: JSON object containing the parameters required for tool - execution. The structure depends on the specific tool being + description: JSON object containing the parameters required for tool + execution. The structure depends on the specific tool being executed. type: object examples: @@ -9617,8 +9617,8 @@ components: examples: - send_email user_id: - description: Optional. The user ID to scope the connected account - lookup. Use this to narrow down the search when the same identifier + description: Optional. The user ID to scope the connected account + lookup. Use this to narrow down the search when the same identifier exists across multiple users. type: string examples: @@ -9637,12 +9637,12 @@ components: description: Unique identifier for the tool execution type: string examples: - - "123456789" + - '123456789' usersCreateMembershipResponse: type: object properties: user: - $ref: "#/components/schemas/usersUser" + $ref: '#/components/schemas/usersUser' usersCreateUser: type: object properties: @@ -9653,7 +9653,7 @@ components: examples: - user@example.com external_id: - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system. type: string examples: @@ -9661,9 +9661,9 @@ components: membership: description: List of organization memberships. Automatically populated based on group assignments. - $ref: "#/components/schemas/v1usersCreateMembership" + $ref: '#/components/schemas/v1usersCreateMembership' metadata: - description: Custom key-value pairs for storing additional user + description: Custom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -9672,19 +9672,19 @@ components: - department: engineering location: nyc-office user_profile: - description: User's personal information including name, address, and + description: User's personal information including name, address, and other profile attributes. - $ref: "#/components/schemas/usersCreateUserProfile" + $ref: '#/components/schemas/usersCreateUserProfile' usersCreateUserAndMembershipResponse: type: object properties: user: - $ref: "#/components/schemas/usersUser" + $ref: '#/components/schemas/usersUser' usersCreateUserProfile: type: object properties: custom_attributes: - description: Custom attributes for extended user profile data. Keys + description: Custom attributes for extended user profile data. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -9708,14 +9708,14 @@ components: examples: - John groups: - description: List of group names the user belongs to. Each group name + description: List of group names the user belongs to. Each group name must be 1-250 characters type: array items: type: string examples: - - - engineering - - managers + - - engineering + - managers locale: description: User's localization preference in BCP-47 format. Defaults to organization settings. @@ -9723,7 +9723,7 @@ components: examples: - en-US metadata: - description: System-managed key-value pairs for internal tracking. + description: System-managed key-value pairs for internal tracking. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -9732,17 +9732,17 @@ components: - account_status: active signup_source: mobile_app name: - description: Full name in display format. Typically combines + description: Full name in display format. Typically combines first_name and last_name. type: string examples: - John Michael Doe phone_number: - description: Phone number in E.164 international format. Required for + description: Phone number in E.164 international format. Required for SMS-based authentication. type: string examples: - - "+14155552671" + - '+14155552671' picture: description: URL to the user's profile picture or avatar. type: string @@ -9757,7 +9757,7 @@ components: type: object properties: user: - $ref: "#/components/schemas/usersUser" + $ref: '#/components/schemas/usersUser' usersInvite: type: object properties: @@ -9774,7 +9774,7 @@ components: examples: - 2025-12-31T23:59:59Z inviter_email: - description: Identifier of the user or system that initiated the + description: Identifier of the user or system that initiated the invite. type: string examples: @@ -9797,13 +9797,13 @@ components: examples: - 2 status: - description: Current status of the invite (e.g., pending, accepted, + description: Current status of the invite (e.g., pending, accepted, expired, revoked). type: string examples: - pending_invite user_id: - description: User ID to whom the invite is sent. May be empty if the + description: User ID to whom the invite is sent. May be empty if the user has not signed up yet. type: string examples: @@ -9812,7 +9812,7 @@ components: type: object properties: next_page_token: - description: Opaque token for retrieving the next page of results. + description: Opaque token for retrieving the next page of results. Empty if there are no more pages. type: string examples: @@ -9824,19 +9824,19 @@ components: examples: - eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9 total_size: - description: Total number of users matching the request criteria, + description: Total number of users matching the request criteria, regardless of pagination. type: integer format: int64 examples: - 1042 users: - description: List of user objects for the current page. May contain + description: List of user objects for the current page. May contain fewer entries than requested page_size. type: array items: type: object - $ref: "#/components/schemas/usersUser" + $ref: '#/components/schemas/usersUser' usersListUserPermissionsResponse: type: object properties: @@ -9845,7 +9845,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/usersPermission" + $ref: '#/components/schemas/usersPermission' usersListUserRolesResponse: type: object properties: @@ -9854,24 +9854,24 @@ components: type: array items: type: object - $ref: "#/components/schemas/commonsRole" + $ref: '#/components/schemas/commonsRole' usersListUsersResponse: type: object properties: next_page_token: - description: Token for retrieving the next page of results. Empty if + description: Token for retrieving the next page of results. Empty if there are no more pages. type: string examples: - eyJwYWdlIjogMiwgImxhc3RfaWQiOiAidXNyXzEyMzQ1In0= prev_page_token: - description: Token for retrieving the previous page of results. Empty + description: Token for retrieving the previous page of results. Empty if this is the first page. type: string examples: - eyJwYWdlIjogMCwgImZpcnN0X2lkIjogInVzcl85ODc2NSJ9 total_size: - description: Total number of users matching the request criteria, + description: Total number of users matching the request criteria, regardless of pagination. type: integer format: int64 @@ -9882,7 +9882,7 @@ components: type: array items: type: object - $ref: "#/components/schemas/usersUser" + $ref: '#/components/schemas/usersUser' usersPermission: type: object properties: @@ -9906,10 +9906,10 @@ components: type: object properties: invite: - description: Updated invitation object containing the resent - invitation details, including new expiration time and incremented + description: Updated invitation object containing the resent + invitation details, including new expiration time and incremented resend counter. - $ref: "#/components/schemas/usersInvite" + $ref: '#/components/schemas/usersInvite' examples: - expires_at: 2025-12-31T23:59:59Z organization_id: org_123 @@ -9920,18 +9920,18 @@ components: type: object properties: user: - $ref: "#/components/schemas/usersUser" + $ref: '#/components/schemas/usersUser' usersUpdateUserProfile: type: object properties: custom_attributes: - description: Updates custom attributes for extended user profile data - and application-specific information. Use this field to store - business-specific user data like department, job title, security - clearances, project assignments, or any other organizational - attributes your application requires. Unlike system metadata, these - attributes are typically managed by administrators or applications - and are visible to end users. Keys must be 3-25 characters, values + description: Updates custom attributes for extended user profile data + and application-specific information. Use this field to store + business-specific user data like department, job title, security + clearances, project assignments, or any other organizational + attributes your application requires. Unlike system metadata, these + attributes are typically managed by administrators or applications + and are visible to end users. Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs. type: object additionalProperties: @@ -9940,7 +9940,7 @@ components: - department: engineering security_clearance: level2 family_name: - description: Updates the user's family name (last name or surname). + description: Updates the user's family name (last name or surname). Use this field to modify how the user's last name appears throughout the system. Maximum 255 characters allowed. type: string @@ -9953,36 +9953,36 @@ components: examples: - John gender: - description: Updates the user's gender identity information. Use this - field to store the user's gender identity for personalization, - compliance, or reporting purposes. This field supports any string + description: Updates the user's gender identity information. Use this + field to store the user's gender identity for personalization, + compliance, or reporting purposes. This field supports any string value to accommodate diverse gender identities and should be handled - with appropriate privacy considerations according to your + with appropriate privacy considerations according to your organization's policies. type: string examples: - male given_name: - description: Updates the user's given name (first name). Use this - field to modify how the user's first name appears in the system and + description: Updates the user's given name (first name). Use this + field to modify how the user's first name appears in the system and user interfaces. Maximum 255 characters allowed. type: string examples: - John groups: - description: Updates the list of group names the user belongs to - within the organization. Use this field to manage the user's group - memberships for role-based access control, team assignments, or - organizational structure. Groups are typically used for permission - management and collaborative access. Each group name must be unique - within the list, 1-250 characters long, with a maximum of 50 groups + description: Updates the list of group names the user belongs to + within the organization. Use this field to manage the user's group + memberships for role-based access control, team assignments, or + organizational structure. Groups are typically used for permission + management and collaborative access. Each group name must be unique + within the list, 1-250 characters long, with a maximum of 50 groups per user. type: array items: type: string examples: - - - engineering - - managers + - - engineering + - managers last_name: description: "[DEPRECATED] Use family_name instead. User's family name. Maximum 200 characters." @@ -9991,21 +9991,21 @@ components: - Doe locale: description: Updates the user's preferred language and region settings - using BCP-47 format codes. Use this field to customize the user's - experience with localized content, date formats, number formatting, - and UI language. When not specified, the user inherits the - organization's default locale settings. Common values include + using BCP-47 format codes. Use this field to customize the user's + experience with localized content, date formats, number formatting, + and UI language. When not specified, the user inherits the + organization's default locale settings. Common values include `en-US`, `en-GB`, `fr-FR`, `de-DE`, and `es-ES`. type: string examples: - en-US metadata: - description: Updates system-managed key-value pairs for internal - tracking and operational data. Use this field to store - system-generated metadata like account status, signup source, last + description: Updates system-managed key-value pairs for internal + tracking and operational data. Use this field to store + system-generated metadata like account status, signup source, last activity tracking, or integration-specific identifiers. These fields are typically managed by automated processes rather than direct user - input. Keys must be 3-25 characters, values must be 1-256 + input. Keys must be 3-25 characters, values must be 1-256 characters, with a maximum of 20 key-value pairs. type: object additionalProperties: @@ -10014,40 +10014,40 @@ components: - account_status: active signup_source: mobile_app name: - description: Updates the user's complete display name. Use this field - when you want to set the full name as a single string rather than - using separate given and family names. This name appears in user - interfaces, reports, and anywhere a formatted display name is + description: Updates the user's complete display name. Use this field + when you want to set the full name as a single string rather than + using separate given and family names. This name appears in user + interfaces, reports, and anywhere a formatted display name is needed. type: string examples: - John Doe phone_number: - description: Updates the user's phone number in E.164 international - format. Use this field to enable SMS-based authentication methods, - two-factor authentication, or phone-based account recovery. The - phone number must include the country code and be formatted + description: Updates the user's phone number in E.164 international + format. Use this field to enable SMS-based authentication methods, + two-factor authentication, or phone-based account recovery. The + phone number must include the country code and be formatted according to E.164 standards (e.g., `+1` for US numbers). This field is required when enabling SMS authentication features. type: string examples: - - "+14155552671" + - '+14155552671' picture: - description: Updates the URL to the user's profile picture or avatar + description: Updates the URL to the user's profile picture or avatar image. Use this field to set or change the user's profile photo that - appears in user interfaces, directory listings, and collaborative - features. The URL should point to a publicly accessible image file. - Supported formats typically include JPEG, PNG, and GIF. Maximum URL + appears in user interfaces, directory listings, and collaborative + features. The URL should point to a publicly accessible image file. + Supported formats typically include JPEG, PNG, and GIF. Maximum URL length is 2048 characters. type: string examples: - https://example.com/avatar.jpg preferred_username: - description: Updates the user's preferred username for display and - identification purposes. Use this field to set a custom username - that the user prefers to be known by, which may differ from their - email or formal name. This username appears in user interfaces, - mentions, and informal communications. Maximum 512 characters + description: Updates the user's preferred username for display and + identification purposes. Use this field to set a custom username + that the user prefers to be known by, which may differ from their + email or formal name. This username appears in user interfaces, + mentions, and informal communications. Maximum 512 characters allowed. type: string examples: @@ -10056,12 +10056,12 @@ components: type: object properties: user: - $ref: "#/components/schemas/usersUser" + $ref: '#/components/schemas/usersUser' usersUser: type: object properties: create_time: - description: Timestamp when the user account was initially created. + description: Timestamp when the user account was initially created. Automatically set by the server. type: string format: date-time @@ -10073,19 +10073,19 @@ components: examples: - user@example.com external_id: - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system. type: string examples: - ext_12345a67b89c id: - description: Unique system-generated identifier for the user. + description: Unique system-generated identifier for the user. Immutable once created. type: string examples: - usr_1234abcd5678efgh last_login_time: - description: Timestamp of the user's most recent successful + description: Timestamp of the user's most recent successful authentication. Updated automatically. type: string format: date-time @@ -10096,9 +10096,9 @@ components: type: array items: type: object - $ref: "#/components/schemas/commonsOrganizationMembership" + $ref: '#/components/schemas/commonsOrganizationMembership' metadata: - description: Custom key-value pairs for storing additional user + description: Custom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -10107,23 +10107,23 @@ components: - department: engineering location: nyc-office update_time: - description: Timestamp of the last modification to the user account. + description: Timestamp of the last modification to the user account. Automatically updated by the server. type: string format: date-time readOnly: true user_profile: - description: User's personal information including name, address, and + description: User's personal information including name, address, and other profile attributes. - $ref: "#/components/schemas/commonsUserProfile" + $ref: '#/components/schemas/commonsUserProfile' v1connected_accountsCreateConnectedAccount: type: object - title: Payload for creating a new connected account - only authorization + title: Payload for creating a new connected account - only authorization details required properties: api_config: - description: Optional JSON configuration for connector-specific API - settings such as rate limits, custom API endpoints, timeouts, or + description: Optional JSON configuration for connector-specific API + settings such as rate limits, custom API endpoints, timeouts, or feature flags. type: object examples: @@ -10131,11 +10131,11 @@ components: rate_limit: 1000 timeout: 30 authorization_details: - description: Required authentication credentials for the connected - account. Must include either OAuth tokens (access_token, - refresh_token, scopes) or static auth details (API keys, bearer + description: Required authentication credentials for the connected + account. Must include either OAuth tokens (access_token, + refresh_token, scopes) or static auth details (API keys, bearer tokens). - $ref: "#/components/schemas/connected_accountsAuthorizationDetails" + $ref: '#/components/schemas/connected_accountsAuthorizationDetails' examples: - oauth_token: access_token: ya29.a0... @@ -10145,22 +10145,22 @@ components: - profile v1connected_accountsUpdateConnectedAccount: type: object - title: Payload for updating an existing connected account - all fields + title: Payload for updating an existing connected account - all fields optional properties: api_config: - description: Updated JSON configuration for API-specific settings. - Merges with existing configuration - only provided fields are + description: Updated JSON configuration for API-specific settings. + Merges with existing configuration - only provided fields are modified. type: object examples: - rate_limit: 2000 timeout: 60 authorization_details: - description: Updated authentication credentials. Provide new OAuth - tokens (e.g., after refresh) or updated static auth details. Only + description: Updated authentication credentials. Provide new OAuth + tokens (e.g., after refresh) or updated static auth details. Only included fields will be modified. - $ref: "#/components/schemas/connected_accountsAuthorizationDetails" + $ref: '#/components/schemas/connected_accountsAuthorizationDetails' examples: - oauth_token: access_token: ya29.new_token... @@ -10173,9 +10173,9 @@ components: type: object properties: domain: - description: The domain name to be configured. Must be a valid - business domain you control. Public and disposable domains - (gmail.com, outlook.com, etc.) are automatically blocked for + description: The domain name to be configured. Must be a valid + business domain you control. Public and disposable domains + (gmail.com, outlook.com, etc.) are automatically blocked for security. type: string examples: @@ -10189,7 +10189,7 @@ components: - ORGANIZATION_DOMAIN: SSO discovery domain used to route users to the correct SSO provider and enforce SSO. - $ref: "#/components/schemas/domainsDomainType" + $ref: '#/components/schemas/domainsDomainType' examples: - ORGANIZATION_DOMAIN v1organizationsCreateOrganization: @@ -10198,13 +10198,13 @@ components: - display_name properties: display_name: - description: Name of the organization. Must be between 1 and 200 + description: Name of the organization. Must be between 1 and 200 characters. type: string examples: - Megasoft Inc external_id: - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system. type: string examples: @@ -10214,25 +10214,25 @@ components: additionalProperties: type: string v1organizationsUpdateOrganization: - description: For update messages ensure the indexes are same as the base + description: For update messages ensure the indexes are same as the base model itself. type: object properties: display_name: - description: Name of the organization to display in the UI. Must be + description: Name of the organization to display in the UI. Must be between 1 and 200 characters type: string examples: - Acme Corporation external_id: - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system type: string examples: - tenant_12345 metadata: - description: Custom key-value pairs to store with the organization. - Keys must be 3-25 characters, values must be 1-256 characters. + description: Custom key-value pairs to store with the organization. + Keys must be 3-25 characters, values must be 1-256 characters. Maximum 10 pairs allowed. type: object additionalProperties: @@ -10263,14 +10263,14 @@ components: examples: - org_viewer_role permissions: - description: List of permission names to assign to this role. + description: List of permission names to assign to this role. Permissions must exist in the current environment. type: array items: type: string examples: - - - read:users - - write:documents + - - read:users + - write:documents v1rolesCreatePermission: type: object properties: @@ -10295,41 +10295,41 @@ components: - Can create, edit, and publish content but cannot delete content or manage user accounts display_name: - description: Human-readable display name for the role. Used in user + description: Human-readable display name for the role. Used in user interfaces, reports, and user-facing communications. type: string examples: - Content Editor extends: - description: Name of the base role that this role extends. Enables - hierarchical role inheritance where this role inherits all + description: Name of the base role that this role extends. Enables + hierarchical role inheritance where this role inherits all permissions from the base role. type: string examples: - viewer name: description: Unique name identifier for the role. Must be alphanumeric - with underscores, 1-64 characters. This name is used in API calls + with underscores, 1-64 characters. This name is used in API calls and cannot be changed after creation. type: string examples: - content_editor permissions: - description: List of permission names to assign to this role. - Permissions must exist in the current environment. Maximum 100 + description: List of permission names to assign to this role. + Permissions must exist in the current environment. Maximum 100 permissions per role. type: array items: type: string examples: - - - read:content - - write:content - - publish:content + - - read:content + - write:content + - publish:content v1rolesRole: type: object properties: default_creator: - description: Indicates if this role is the default creator role for + description: Indicates if this role is the default creator role for new organizations. type: boolean examples: @@ -10341,33 +10341,33 @@ components: examples: - true dependent_roles_count: - description: Number of roles that extend from this role (dependent + description: Number of roles that extend from this role (dependent roles count). Read-only field. type: integer format: int32 examples: - 3 description: - description: Detailed description of the role's purpose and + description: Detailed description of the role's purpose and capabilities. Maximum 2000 characters. type: string examples: - - Can create, edit, and publish content but cannot delete or manage + - Can create, edit, and publish content but cannot delete or manage users display_name: - description: Human-readable display name for the role. Used in user + description: Human-readable display name for the role. Used in user interfaces and reports. type: string examples: - Content Editor extends: - description: Name of the base role that this role extends. Enables + description: Name of the base role that this role extends. Enables hierarchical role inheritance. type: string examples: - admin_role id: - description: Unique system-generated identifier for the role. + description: Unique system-generated identifier for the role. Immutable once created. type: string readOnly: true @@ -10385,19 +10385,19 @@ components: examples: - content_editor permissions: - description: List of permissions with role source information. Only + description: List of permissions with role source information. Only included when 'include' parameter is specified in the request. type: array items: type: object - $ref: "#/components/schemas/rolesRolePermission" - examples: - - - description: Read Content - name: read:content - role_name: admin_role - - description: Write Content - name: write:content - role_name: editor_role + $ref: '#/components/schemas/rolesRolePermission' + examples: + - - description: Read Content + name: read:content + role_name: admin_role + - description: Write Content + name: write:content + role_name: editor_role v1rolesUpdateRole: type: object properties: @@ -10406,39 +10406,39 @@ components: and intended use cases. Maximum 2000 characters. type: string examples: - - Can create, edit, publish, and approve content. Cannot delete + - Can create, edit, publish, and approve content. Cannot delete content or manage user accounts. display_name: - description: Human-readable display name for the role. Used in user + description: Human-readable display name for the role. Used in user interfaces, reports, and user-facing communications. type: string examples: - Senior Content Editor extends: - description: Name of the base role that this role extends. Enables - hierarchical role inheritance where this role inherits all + description: Name of the base role that this role extends. Enables + hierarchical role inheritance where this role inherits all permissions from the base role. type: string examples: - content_editor permissions: - description: List of permission names to assign to this role. When - provided, this replaces all existing role-permission mappings. - Permissions must exist in the current environment. Maximum 100 + description: List of permission names to assign to this role. When + provided, this replaces all existing role-permission mappings. + Permissions must exist in the current environment. Maximum 100 permissions per role. type: array items: type: string examples: - - - read:content - - write:content - - publish:content - - approve:content + - - read:content + - write:content + - publish:content + - approve:content v1sessionsLocation: type: object properties: city: - description: City name where the session originated based on IP + description: City name where the session originated based on IP geolocation. Approximate location derived from IP address. type: string examples: @@ -10449,24 +10449,24 @@ components: be precise." type: string examples: - - "37.7749" + - '37.7749' longitude: description: "Longitude coordinate of the estimated location. Decimal format (e.g., '-122.4194'). Note: Represents IP geolocation center and may not be precise." type: string examples: - - "-122.4194" + - '-122.4194' region: - description: Geographic region name derived from IP geolocation. - Represents the country-level location (e.g., 'United States', + description: Geographic region name derived from IP geolocation. + Represents the country-level location (e.g., 'United States', 'France'). type: string examples: - United States region_subdivision: - description: Regional subdivision code or name (e.g., state - abbreviation for US, province for Canada). Two-letter ISO format + description: Regional subdivision code or name (e.g., state + abbreviation for US, province for Canada). Two-letter ISO format when applicable. type: string examples: @@ -10475,13 +10475,13 @@ components: type: object properties: inviter_email: - description: Email address of the user who invited this member. Must + description: Email address of the user who invited this member. Must be a valid email address. type: string examples: - john.doe@example.com metadata: - description: Custom key-value pairs for storing additional user + description: Custom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -10494,14 +10494,14 @@ components: type: array items: type: object - $ref: "#/components/schemas/commonsRole" + $ref: '#/components/schemas/commonsRole' examples: - - - name: admin + - - name: admin v1usersUpdateMembership: type: object properties: metadata: - description: Custom key-value pairs for storing additional user + description: Custom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -10514,20 +10514,20 @@ components: type: array items: type: object - $ref: "#/components/schemas/commonsRole" + $ref: '#/components/schemas/commonsRole' examples: - - - name: admin + - - name: admin v1usersUpdateUser: type: object properties: external_id: - description: Your application's unique identifier for this + description: Your application's unique identifier for this organization, used to link Scalekit with your system. type: string examples: - ext_12345a67b89c metadata: - description: Custom key-value pairs for storing additional user + description: Custom key-value pairs for storing additional user context. Keys (3-25 chars), values (1-256 chars). type: object additionalProperties: @@ -10536,9 +10536,9 @@ components: - department: engineering location: nyc-office user_profile: - description: User's personal information including name, address, and + description: User's personal information including name, address, and other profile attributes. - $ref: "#/components/schemas/usersUpdateUserProfile" + $ref: '#/components/schemas/usersUpdateUserProfile' webauthnAllAcceptedCredentialsOptions: type: object properties: @@ -10566,22 +10566,22 @@ components: examples: - true unknown_credential_options: - description: Options for handling unknown credentials in client + description: Options for handling unknown credentials in client applications - $ref: "#/components/schemas/webauthnUnknownCredentialOptions" + $ref: '#/components/schemas/webauthnUnknownCredentialOptions' webauthnListCredentialsResponse: type: object properties: all_accepted_credentials_options: - description: Options including RP ID and all accepted credential IDs + description: Options including RP ID and all accepted credential IDs for authentication - $ref: "#/components/schemas/webauthnAllAcceptedCredentialsOptions" + $ref: '#/components/schemas/webauthnAllAcceptedCredentialsOptions' credentials: description: All passkeys registered for the user type: array items: type: object - $ref: "#/components/schemas/webauthnWebAuthnCredential" + $ref: '#/components/schemas/webauthnWebAuthnCredential' webauthnUnknownCredentialOptions: type: object properties: @@ -10600,7 +10600,7 @@ components: properties: credential: description: The updated credential with new display name - $ref: "#/components/schemas/webauthnWebAuthnCredential" + $ref: '#/components/schemas/webauthnWebAuthnCredential' webauthnWebAuthnCredential: type: object properties: @@ -10611,13 +10611,13 @@ components: - direct authenticator: description: Authenticator information including model and name - $ref: "#/components/schemas/WebAuthnCredentialAuthenticator" + $ref: '#/components/schemas/WebAuthnCredentialAuthenticator' authenticator_flags: description: Flags indicating authenticator capabilities - $ref: "#/components/schemas/WebAuthnCredentialAuthenticatorFlags" + $ref: '#/components/schemas/WebAuthnCredentialAuthenticatorFlags' client_info: description: Geographic and network information from registration - $ref: "#/components/schemas/WebAuthnCredentialClientInfo" + $ref: '#/components/schemas/WebAuthnCredentialClientInfo' created_at: description: Timestamp when the credential was created type: string @@ -10651,7 +10651,7 @@ components: - 2025-02-15T06:23:44.560000Z user_agent: description: Browser and device information from registration - $ref: "#/components/schemas/WebAuthnCredentialUserAgent" + $ref: '#/components/schemas/WebAuthnCredentialUserAgent' user_id: description: User ID this credential belongs to type: string @@ -10669,71 +10669,71 @@ components: properties: spec_version: type: string - example: "1" + example: '1' description: The webhook specification version - pattern: "^[0-9]+$" + pattern: '^[0-9]+$' id: type: string - pattern: "^evt_" - example: "evt_1234567890abcdef" + pattern: '^evt_' + example: 'evt_1234567890abcdef' description: Unique identifier for the webhook event (must be prefixed with "evt_") minLength: 1 maxLength: 32 type: type: string - example: "organization.created" + example: 'organization.created' description: The event type enum: # Organization events - - "organization.created" - - "organization.updated" - - "organization.deleted" - - "organization.sso_created" - - "organization.sso_deleted" - - "organization.sso_enabled" - - "organization.sso_disabled" + - 'organization.created' + - 'organization.updated' + - 'organization.deleted' + - 'organization.sso_created' + - 'organization.sso_deleted' + - 'organization.sso_enabled' + - 'organization.sso_disabled' # User events - - "user.signup" - - "user.login" - - "user.logout" - - "user.organization_invitation" - - "user.organization_membership_created" - - "user.organization_membership_updated" - - "user.organization_membership_deleted" + - 'user.signup' + - 'user.login' + - 'user.logout' + - 'user.organization_invitation' + - 'user.organization_membership_created' + - 'user.organization_membership_updated' + - 'user.organization_membership_deleted' # Directory events - - "organization.directory.user_created" - - "organization.directory.user_updated" - - "organization.directory.user_deleted" - - "organization.directory.group_created" - - "organization.directory.group_updated" - - "organization.directory.group_deleted" - - "organization.directory_enabled" - - "organization.directory_disabled" + - 'organization.directory.user_created' + - 'organization.directory.user_updated' + - 'organization.directory.user_deleted' + - 'organization.directory.group_created' + - 'organization.directory.group_updated' + - 'organization.directory.group_deleted' + - 'organization.directory_enabled' + - 'organization.directory_disabled' # Role events - - "role.created" - - "role.updated" - - "role.deleted" + - 'role.created' + - 'role.updated' + - 'role.deleted' # Permission events - - "permission.created" - - "permission.updated" - - "permission.deleted" + - 'permission.created' + - 'permission.updated' + - 'permission.deleted' occurred_at: type: string format: date-time description: When the event occurred (ISO 8601 format) - example: "2024-01-01T00:00:00Z" + example: '2024-01-01T00:00:00Z' environment_id: type: string - pattern: "^env_" - example: "env_1234567890abcdef" + pattern: '^env_' + example: 'env_1234567890abcdef' description: The environment ID where the event occurred minLength: 1 maxLength: 32 organization_id: type: string - pattern: "^org_" - example: "org_1234567890abcdef" + pattern: '^org_' + example: 'org_1234567890abcdef' description: The organization ID (if applicable) minLength: 1 maxLength: 32 @@ -10741,28 +10741,28 @@ components: type: string description: The type of object that triggered the webhook enum: - - "Organization" - - "Connection" - - "Role" - - "Directory" - - "DirectoryUser" - - "DirectoryGroup" - - "Permission" - - "OrgMembership" - - "User" - example: "Organization" + - 'Organization' + - 'Connection' + - 'Role' + - 'Directory' + - 'DirectoryUser' + - 'DirectoryGroup' + - 'Permission' + - 'OrgMembership' + - 'User' + example: 'Organization' data: type: object description: The event payload (structure varies by event type) additionalProperties: true example: - id: "org_1234567890abcdef" - name: "Example Organization" - created_at: "2024-01-01T00:00:00Z" + id: 'org_1234567890abcdef' + name: 'Example Organization' + created_at: '2024-01-01T00:00:00Z' display_name: type: string description: Human-readable display name for the event - example: "Organization Created" + example: 'Organization Created' minLength: 1 maxLength: 200 securitySchemes: @@ -10800,28 +10800,28 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_1234567890" - type: "organization.created" - object: "Organization" - occurred_at: "2024-01-15T10:30:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_1234567890" + spec_version: '1' + id: 'evt_1234567890' + type: 'organization.created' + object: 'Organization' + occurred_at: '2024-01-15T10:30:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_1234567890' data: - create_time: "2025-12-09T09:25:02.02Z" - display_name: "AcmeCorp" - external_id: "org_external_123" - id: "org_1234567890" + create_time: '2025-12-09T09:25:02.02Z' + display_name: 'AcmeCorp' + external_id: 'org_external_123' + id: 'org_1234567890' metadata: - region_code: "US" - update_time: "2025-12-09T09:25:02.025330364Z" + region_code: 'US' + update_time: '2025-12-09T09:25:02.025330364Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: false - name: "dir_sync" - display_name: "Organization Created" + name: 'dir_sync' + display_name: 'Organization Created' responses: '200': description: Webhook received successfully @@ -10836,28 +10836,28 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_2345678901" - type: "organization.updated" - object: "Organization" - occurred_at: "2024-01-15T10:35:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_1234567890" + spec_version: '1' + id: 'evt_2345678901' + type: 'organization.updated' + object: 'Organization' + occurred_at: '2024-01-15T10:35:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_1234567890' data: - create_time: "2025-12-09T09:25:02.02Z" - display_name: "AcmeCorp" - external_id: "org_external_123" - id: "org_1234567890" + create_time: '2025-12-09T09:25:02.02Z' + display_name: 'AcmeCorp' + external_id: 'org_external_123' + id: 'org_1234567890' metadata: - region_code: "US" - update_time: "2025-12-09T09:25:02.025330364Z" + region_code: 'US' + update_time: '2025-12-09T09:25:02.025330364Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: false - name: "dir_sync" - display_name: "Organization Updated" + name: 'dir_sync' + display_name: 'Organization Updated' responses: '200': description: Webhook received successfully @@ -10872,29 +10872,29 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_3456789012" - type: "organization.deleted" - object: "Organization" - occurred_at: "2024-01-15T10:40:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_1234567890" + spec_version: '1' + id: 'evt_3456789012' + type: 'organization.deleted' + object: 'Organization' + occurred_at: '2024-01-15T10:40:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_1234567890' data: - create_time: "2025-12-09T09:25:02.02Z" - deleted_at: "2025-12-09T10:25:45.337417Z" - display_name: "AcmeCorp" - external_id: "org_external_123" - id: "org_1234567890" + create_time: '2025-12-09T09:25:02.02Z' + deleted_at: '2025-12-09T10:25:45.337417Z' + display_name: 'AcmeCorp' + external_id: 'org_external_123' + id: 'org_1234567890' metadata: - region_code: "US" - update_time: "2025-12-09T09:25:02.025330364Z" + region_code: 'US' + update_time: '2025-12-09T09:25:02.025330364Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: false - name: "dir_sync" - display_name: "Organization Deleted" + name: 'dir_sync' + display_name: 'Organization Deleted' responses: '200': description: Webhook received successfully @@ -10910,52 +10910,52 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_1234567890" - type: "user.signup" - object: "OrgMembership" - occurred_at: "2024-01-15T10:30:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_102690563312124938" + spec_version: '1' + id: 'evt_1234567890' + type: 'user.signup' + object: 'OrgMembership' + occurred_at: '2024-01-15T10:30:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_102690563312124938' data: organization: - id: "org_102690563312124938" - create_time: "2025-12-09T10:19:05.48Z" - display_name: "" + id: 'org_102690563312124938' + create_time: '2025-12-09T10:19:05.48Z' + display_name: '' external_id: metadata: - region_code: "US" - update_time: "2025-12-09T12:04:41.386974738Z" + region_code: 'US' + update_time: '2025-12-09T12:04:41.386974738Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: true - name: "dir_sync" + name: 'dir_sync' user: - create_time: "2025-12-09T12:04:41.39Z" - email: "amit.ash1996@gmail.com" - external_id: "" - id: "usr_102701193205121289" + create_time: '2025-12-09T12:04:41.39Z' + email: 'amit.ash1996@gmail.com' + external_id: '' + id: 'usr_102701193205121289' metadata: {} - update_time: "2025-12-09T12:04:41.391988278Z" + update_time: '2025-12-09T12:04:41.391988278Z' user_profile: custom_attributes: email_verified: true external_identities: - family_name: "doe" - gender: "" - given_name: "John" + family_name: 'doe' + gender: '' + given_name: 'John' groups: - id: "usp_102701193205186825" - locale: "" + id: 'usp_102701193205186825' + locale: '' metadata: {} - name: "John Doe" - phone_number: "" + name: 'John Doe' + phone_number: '' phone_number_verified: false - picture: "https://lh3.googleusercontent.com/a/abcdef" - preferred_username: "" - display_name: "User Signup" + picture: 'https://lh3.googleusercontent.com/a/abcdef' + preferred_username: '' + display_name: 'User Signup' responses: '200': description: Webhook received successfully @@ -10970,75 +10970,75 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_102701193859432713" - type: "user.login" - object: "User" - occurred_at: "2025-12-09T12:04:41.781873312Z" - environment_id: "env_96736846679245078" - organization_id: "org_102701193188409609" + spec_version: '1' + id: 'evt_102701193859432713' + type: 'user.login' + object: 'User' + occurred_at: '2025-12-09T12:04:41.781873312Z' + environment_id: 'env_96736846679245078' + organization_id: 'org_102701193188409609' data: user: - create_time: "2025-12-09T12:04:41.39Z" - email: "john.doe@acmecorp.com" - external_id: "ext_123456789" - id: "usr_123456789" - last_login_time: "2025-12-09T12:04:41.48Z" + create_time: '2025-12-09T12:04:41.39Z' + email: 'john.doe@acmecorp.com' + external_id: 'ext_123456789' + id: 'usr_123456789' + last_login_time: '2025-12-09T12:04:41.48Z' metadata: {} - update_time: "2025-12-09T12:04:41.391988Z" + update_time: '2025-12-09T12:04:41.391988Z' user_profile: custom_attributes: email_verified: true external_identities: - - connection_id: "conn_97896332307464201" - connection_provider: "GOOGLE" - connection_type: "OAUTH" - connection_user_id: "105055379523565727691" - created_time: "2025-12-09T12:04:41.47Z" + - connection_id: 'conn_97896332307464201' + connection_provider: 'GOOGLE' + connection_type: 'OAUTH' + connection_user_id: '105055379523565727691' + created_time: '2025-12-09T12:04:41.47Z' is_social: true - last_login_time: "2025-12-09T12:04:41.469311Z" - last_synced_time: "2025-12-09T12:04:41.469311Z" - family_name: "Doe" - gender: "" - given_name: "John" + last_login_time: '2025-12-09T12:04:41.469311Z' + last_synced_time: '2025-12-09T12:04:41.469311Z' + family_name: 'Doe' + gender: '' + given_name: 'John' groups: - id: "usp_102701193205186825" - locale: "" + id: 'usp_102701193205186825' + locale: '' metadata: {} - name: "John Doe" - phone_number: "" + name: 'John Doe' + phone_number: '' phone_number_verified: false - picture: "https://lh3.googleusercontent.com/a/abcdef" - preferred_username: "" + picture: 'https://lh3.googleusercontent.com/a/abcdef' + preferred_username: '' user_session: - absolute_expires_at: "2026-01-08T12:04:41.737394Z" - authenticated_organizations: ["org_102701193188409609"] - created_at: "2025-12-09T12:04:41.48Z" + absolute_expires_at: '2026-01-08T12:04:41.737394Z' + authenticated_organizations: ['org_102701193188409609'] + created_at: '2025-12-09T12:04:41.48Z' expired_at: - idle_expires_at: "2025-12-16T12:04:41.737395Z" - last_active_at: "2025-12-09T12:04:41.747206Z" + idle_expires_at: '2025-12-16T12:04:41.737395Z' + last_active_at: '2025-12-09T12:04:41.747206Z' logout_at: - organization_id: "org_102701193188409609" - session_id: "ses_102701193356116233" - status: "ACTIVE" - updated_at: "2025-12-09T12:04:41.748512Z" - user_id: "usr_102701193205121289" + organization_id: 'org_102701193188409609' + session_id: 'ses_102701193356116233' + status: 'ACTIVE' + updated_at: '2025-12-09T12:04:41.748512Z' + user_id: 'usr_102701193205121289' device: - browser: "Chrome" - browser_version: "142.0.0.0" - device_type: "Desktop" - ip: "152.59.144.211" + browser: 'Chrome' + browser_version: '142.0.0.0' + device_type: 'Desktop' + ip: '152.59.144.211' location: - city: "Patna" - latitude: "25.594095" - longitude: "85.137564" - region: "IN" - region_subdivision: "INBR" - os: "macOS" - os_version: "10.15.7" - user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" - display_name: "User Login" + city: 'Patna' + latitude: '25.594095' + longitude: '85.137564' + region: 'IN' + region_subdivision: 'INBR' + os: 'macOS' + os_version: '10.15.7' + user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36' + display_name: 'User Login' responses: '200': description: Webhook received successfully @@ -11053,75 +11053,75 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_102708230123160586" - type: "user.logout" - object: "User" - occurred_at: "2025-12-09T13:14:35.722070822Z" - environment_id: "env_96736846679245078" - organization_id: "org_102701193188409609" + spec_version: '1' + id: 'evt_102708230123160586' + type: 'user.logout' + object: 'User' + occurred_at: '2025-12-09T13:14:35.722070822Z' + environment_id: 'env_96736846679245078' + organization_id: 'org_102701193188409609' data: user: - create_time: "2025-12-09T12:04:41.39Z" - email: "john.doe@acmecorp.com" - external_id: "ext_123456789" - id: "usr_123456789" - last_login_time: "2025-12-09T12:04:41.48Z" + create_time: '2025-12-09T12:04:41.39Z' + email: 'john.doe@acmecorp.com' + external_id: 'ext_123456789' + id: 'usr_123456789' + last_login_time: '2025-12-09T12:04:41.48Z' metadata: {} - update_time: "2025-12-09T12:04:41.391988Z" + update_time: '2025-12-09T12:04:41.391988Z' user_profile: custom_attributes: email_verified: true external_identities: - - connection_id: "conn_97896332307464201" - connection_provider: "GOOGLE" - connection_type: "OAUTH" - connection_user_id: "105055379523565727691" - created_time: "2025-12-09T12:04:41.47Z" + - connection_id: 'conn_97896332307464201' + connection_provider: 'GOOGLE' + connection_type: 'OAUTH' + connection_user_id: '105055379523565727691' + created_time: '2025-12-09T12:04:41.47Z' is_social: true - last_login_time: "2025-12-09T12:04:41.469311Z" - last_synced_time: "2025-12-09T12:04:41.469311Z" - family_name: "Doe" - gender: "" - given_name: "John" + last_login_time: '2025-12-09T12:04:41.469311Z' + last_synced_time: '2025-12-09T12:04:41.469311Z' + family_name: 'Doe' + gender: '' + given_name: 'John' groups: - id: "usp_102701193205186825" - locale: "" + id: 'usp_102701193205186825' + locale: '' metadata: {} - name: "John Doe" - phone_number: "" + name: 'John Doe' + phone_number: '' phone_number_verified: false - picture: "https://lh3.googleusercontent.com/a/abcdef" - preferred_username: "" + picture: 'https://lh3.googleusercontent.com/a/abcdef' + preferred_username: '' user_session: - absolute_expires_at: "2026-01-08T12:04:41.737394Z" - authenticated_organizations: ["org_102701193188409609"] - created_at: "2025-12-09T12:04:41.48Z" + absolute_expires_at: '2026-01-08T12:04:41.737394Z' + authenticated_organizations: ['org_102701193188409609'] + created_at: '2025-12-09T12:04:41.48Z' expired_at: - idle_expires_at: "2025-12-16T12:04:41.737395Z" - last_active_at: "2025-12-09T12:04:41.747206Z" + idle_expires_at: '2025-12-16T12:04:41.737395Z' + last_active_at: '2025-12-09T12:04:41.747206Z' logout_at: - organization_id: "org_102701193188409609" - session_id: "ses_102701193356116233" - status: "ACTIVE" - updated_at: "2025-12-09T12:04:41.748512Z" - user_id: "usr_102701193205121289" + organization_id: 'org_102701193188409609' + session_id: 'ses_102701193356116233' + status: 'ACTIVE' + updated_at: '2025-12-09T12:04:41.748512Z' + user_id: 'usr_102701193205121289' device: - browser: "Chrome" - browser_version: "142.0.0.0" - device_type: "Desktop" - ip: "152.59.144.211" + browser: 'Chrome' + browser_version: '142.0.0.0' + device_type: 'Desktop' + ip: '152.59.144.211' location: - city: "Patna" - latitude: "25.594095" - longitude: "85.137564" - region: "IN" - region_subdivision: "INBR" - os: "macOS" - os_version: "10.15.7" - user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" - display_name: "User Logout" + city: 'Patna' + latitude: '25.594095' + longitude: '85.137564' + region: 'IN' + region_subdivision: 'INBR' + os: 'macOS' + os_version: '10.15.7' + user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36' + display_name: 'User Logout' responses: '200': description: Webhook received successfully @@ -11137,60 +11137,60 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_4567890123" - type: "user.organization_invitation" - object: "OrgMembership" - occurred_at: "2024-01-15T11:00:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_102690563312124938" + spec_version: '1' + id: 'evt_4567890123' + type: 'user.organization_invitation' + object: 'OrgMembership' + occurred_at: '2024-01-15T11:00:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_102690563312124938' data: organization: - id: "org_102690563312124938" - create_time: "2025-12-09T10:19:05.48Z" - display_name: "Acme Corp" - external_id: "org_external_123" + id: 'org_102690563312124938' + create_time: '2025-12-09T10:19:05.48Z' + display_name: 'Acme Corp' + external_id: 'org_external_123' metadata: - region_code: "US" - update_time: "2025-12-09T12:04:41.386974738Z" + region_code: 'US' + update_time: '2025-12-09T12:04:41.386974738Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: true - name: "dir_sync" + name: 'dir_sync' user: - create_time: "2025-12-09T12:04:41.39Z" - email: "john.doe@acmecorp.com" - external_id: "ext_123456789" - id: "usr_123456789" + create_time: '2025-12-09T12:04:41.39Z' + email: 'john.doe@acmecorp.com' + external_id: 'ext_123456789' + id: 'usr_123456789' metadata: {} - update_time: "2025-12-09T12:04:41.391988Z" + update_time: '2025-12-09T12:04:41.391988Z' user_profile: custom_attributes: email_verified: true external_identities: - - connection_id: "conn_97896332307464201" - connection_provider: "GOOGLE" - connection_type: "OAUTH" - connection_user_id: "105055379523565727691" - created_time: "2025-12-09T12:04:41.47Z" + - connection_id: 'conn_97896332307464201' + connection_provider: 'GOOGLE' + connection_type: 'OAUTH' + connection_user_id: '105055379523565727691' + created_time: '2025-12-09T12:04:41.47Z' is_social: true - last_login_time: "2025-12-09T12:04:41.469311Z" - last_synced_time: "2025-12-09T12:04:41.469311Z" - family_name: "Doe" - gender: "" - given_name: "John" + last_login_time: '2025-12-09T12:04:41.469311Z' + last_synced_time: '2025-12-09T12:04:41.469311Z' + family_name: 'Doe' + gender: '' + given_name: 'John' groups: - id: "usp_102701193205186825" - locale: "" + id: 'usp_102701193205186825' + locale: '' metadata: {} - name: "John Doe" - phone_number: "" + name: 'John Doe' + phone_number: '' phone_number_verified: false - picture: "https://lh3.googleusercontent.com/a/abcdef" - preferred_username: "" - display_name: "User Organization Invitation" + picture: 'https://lh3.googleusercontent.com/a/abcdef' + preferred_username: '' + display_name: 'User Organization Invitation' responses: '200': description: Webhook received successfully @@ -11205,60 +11205,60 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_5678901234" - type: "user.organization_membership_created" - object: "OrgMembership" - occurred_at: "2024-01-15T11:05:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_102690563312124938" + spec_version: '1' + id: 'evt_5678901234' + type: 'user.organization_membership_created' + object: 'OrgMembership' + occurred_at: '2024-01-15T11:05:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_102690563312124938' data: organization: - id: "org_102690563312124938" - create_time: "2025-12-09T10:19:05.48Z" - display_name: "Acme Corp" - external_id: "org_external_123" + id: 'org_102690563312124938' + create_time: '2025-12-09T10:19:05.48Z' + display_name: 'Acme Corp' + external_id: 'org_external_123' metadata: - region_code: "US" - update_time: "2025-12-09T12:04:41.386974738Z" + region_code: 'US' + update_time: '2025-12-09T12:04:41.386974738Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: true - name: "dir_sync" + name: 'dir_sync' user: - create_time: "2025-12-09T12:04:41.39Z" - email: "john.doe@acmecorp.com" - external_id: "ext_123456789" - id: "usr_123456789" + create_time: '2025-12-09T12:04:41.39Z' + email: 'john.doe@acmecorp.com' + external_id: 'ext_123456789' + id: 'usr_123456789' metadata: {} - update_time: "2025-12-09T12:04:41.391988Z" + update_time: '2025-12-09T12:04:41.391988Z' user_profile: custom_attributes: email_verified: true external_identities: - - connection_id: "conn_97896332307464201" - connection_provider: "GOOGLE" - connection_type: "OAUTH" - connection_user_id: "105055379523565727691" - created_time: "2025-12-09T12:04:41.47Z" + - connection_id: 'conn_97896332307464201' + connection_provider: 'GOOGLE' + connection_type: 'OAUTH' + connection_user_id: '105055379523565727691' + created_time: '2025-12-09T12:04:41.47Z' is_social: true - last_login_time: "2025-12-09T12:04:41.469311Z" - last_synced_time: "2025-12-09T12:04:41.469311Z" - family_name: "Doe" - gender: "" - given_name: "John" + last_login_time: '2025-12-09T12:04:41.469311Z' + last_synced_time: '2025-12-09T12:04:41.469311Z' + family_name: 'Doe' + gender: '' + given_name: 'John' groups: - id: "usp_102701193205186825" - locale: "" + id: 'usp_102701193205186825' + locale: '' metadata: {} - name: "John Doe" - phone_number: "" + name: 'John Doe' + phone_number: '' phone_number_verified: false - picture: "https://lh3.googleusercontent.com/a/abcdef" - preferred_username: "" - display_name: "User Organization Membership Created" + picture: 'https://lh3.googleusercontent.com/a/abcdef' + preferred_username: '' + display_name: 'User Organization Membership Created' responses: '200': description: Webhook received successfully @@ -11266,7 +11266,7 @@ webhooks: user.organization_membership_deleted: post: summary: User Organization Membership Deleted - description: Triggered when a user's membership in an organization is + description: Triggered when a user's membership in an organization is removed or deleted requestBody: content: @@ -11274,60 +11274,60 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_9012345678" - type: "user.organization_membership_deleted" - object: "OrgMembership" - occurred_at: "2024-01-15T11:10:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_102690563312124938" + spec_version: '1' + id: 'evt_9012345678' + type: 'user.organization_membership_deleted' + object: 'OrgMembership' + occurred_at: '2024-01-15T11:10:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_102690563312124938' data: organization: - id: "org_102690563312124938" - create_time: "2025-12-09T10:19:05.48Z" - display_name: "Acme Corp" - external_id: "org_external_123" + id: 'org_102690563312124938' + create_time: '2025-12-09T10:19:05.48Z' + display_name: 'Acme Corp' + external_id: 'org_external_123' metadata: - region_code: "US" - update_time: "2025-12-09T12:04:41.386974738Z" + region_code: 'US' + update_time: '2025-12-09T12:04:41.386974738Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: true - name: "dir_sync" + name: 'dir_sync' user: - create_time: "2025-12-09T12:04:41.39Z" - email: "john.doe@acmecorp.com" - external_id: "ext_123456789" - id: "usr_123456789" + create_time: '2025-12-09T12:04:41.39Z' + email: 'john.doe@acmecorp.com' + external_id: 'ext_123456789' + id: 'usr_123456789' metadata: {} - update_time: "2025-12-09T12:04:41.391988Z" + update_time: '2025-12-09T12:04:41.391988Z' user_profile: custom_attributes: email_verified: true external_identities: - - connection_id: "conn_97896332307464201" - connection_provider: "GOOGLE" - connection_type: "OAUTH" - connection_user_id: "105055379523565727691" - created_time: "2025-12-09T12:04:41.47Z" + - connection_id: 'conn_97896332307464201' + connection_provider: 'GOOGLE' + connection_type: 'OAUTH' + connection_user_id: '105055379523565727691' + created_time: '2025-12-09T12:04:41.47Z' is_social: true - last_login_time: "2025-12-09T12:04:41.469311Z" - last_synced_time: "2025-12-09T12:04:41.469311Z" - raw_attributes: "{}" - updated_time: "2025-12-09T12:04:41.473087Z" - family_name: "Doe" - gender: "" - given_name: "John" - locale: "" + last_login_time: '2025-12-09T12:04:41.469311Z' + last_synced_time: '2025-12-09T12:04:41.469311Z' + raw_attributes: '{}' + updated_time: '2025-12-09T12:04:41.473087Z' + family_name: 'Doe' + gender: '' + given_name: 'John' + locale: '' metadata: {} - name: "John Doe" - phone_number: "" + name: 'John Doe' + phone_number: '' phone_number_verified: false - picture: "https://lh3.googleusercontent.com/a/abcdef" - preferred_username: "" - display_name: "User Organization Membership Deleted" + picture: 'https://lh3.googleusercontent.com/a/abcdef' + preferred_username: '' + display_name: 'User Organization Membership Deleted' responses: '200': description: Webhook received successfully @@ -11335,7 +11335,7 @@ webhooks: user.organization_membership_updated: post: summary: User Organization Membership Updated - description: Triggered when a user's organization membership is updated, + description: Triggered when a user's organization membership is updated, e.g., change of user's role in an organization requestBody: content: @@ -11343,60 +11343,60 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_6789012345" - type: "user.organization_membership_updated" - object: "OrgMembership" - occurred_at: "2024-01-15T11:10:00.123456789Z" - environment_id: "env_1234567890" - organization_id: "org_102690563312124938" + spec_version: '1' + id: 'evt_6789012345' + type: 'user.organization_membership_updated' + object: 'OrgMembership' + occurred_at: '2024-01-15T11:10:00.123456789Z' + environment_id: 'env_1234567890' + organization_id: 'org_102690563312124938' data: organization: - id: "org_102690563312124938" - create_time: "2025-12-09T10:19:05.48Z" - display_name: "Acme Corp" - external_id: "org_external_123" + id: 'org_102690563312124938' + create_time: '2025-12-09T10:19:05.48Z' + display_name: 'Acme Corp' + external_id: 'org_external_123' metadata: - region_code: "US" - update_time: "2025-12-09T12:04:41.386974738Z" + region_code: 'US' + update_time: '2025-12-09T12:04:41.386974738Z' settings: features: - enabled: true - name: "sso" + name: 'sso' - enabled: true - name: "dir_sync" + name: 'dir_sync' user: - create_time: "2025-12-09T12:04:41.39Z" - email: "john.doe@acmecorp.com" - external_id: "ext_123456789" - id: "usr_123456789" + create_time: '2025-12-09T12:04:41.39Z' + email: 'john.doe@acmecorp.com' + external_id: 'ext_123456789' + id: 'usr_123456789' metadata: {} - update_time: "2025-12-09T12:04:41.391988Z" + update_time: '2025-12-09T12:04:41.391988Z' user_profile: custom_attributes: email_verified: true external_identities: - - connection_id: "conn_97896332307464201" - connection_provider: "GOOGLE" - connection_type: "OAUTH" - connection_user_id: "105055379523565727691" - created_time: "2025-12-09T12:04:41.47Z" + - connection_id: 'conn_97896332307464201' + connection_provider: 'GOOGLE' + connection_type: 'OAUTH' + connection_user_id: '105055379523565727691' + created_time: '2025-12-09T12:04:41.47Z' is_social: true - last_login_time: "2025-12-09T12:04:41.469311Z" - last_synced_time: "2025-12-09T12:04:41.469311Z" - raw_attributes: "{}" - updated_time: "2025-12-09T12:04:41.473087Z" - family_name: "Doe" - gender: "" - given_name: "John" - locale: "" + last_login_time: '2025-12-09T12:04:41.469311Z' + last_synced_time: '2025-12-09T12:04:41.469311Z' + raw_attributes: '{}' + updated_time: '2025-12-09T12:04:41.473087Z' + family_name: 'Doe' + gender: '' + given_name: 'John' + locale: '' metadata: {} - name: "John Doe" - phone_number: "" + name: 'John Doe' + phone_number: '' phone_number_verified: false - picture: "https://lh3.googleusercontent.com/a/abcdef" - preferred_username: "" - display_name: "User Organization Membership Updated" + picture: 'https://lh3.googleusercontent.com/a/abcdef' + preferred_username: '' + display_name: 'User Organization Membership Updated' responses: '200': description: Webhook received successfully @@ -11412,21 +11412,21 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_55136848686613000" - type: "organization.directory_enabled" - object: "Directory" - occurred_at: "2025-01-15T08:55:22.802860294Z" - environment_id: "env_27758032200925221" - organization_id: "org_55135410258444802" + spec_version: '1' + id: 'evt_55136848686613000' + type: 'organization.directory_enabled' + object: 'Directory' + occurred_at: '2025-01-15T08:55:22.802860294Z' + environment_id: 'env_27758032200925221' + organization_id: 'org_55135410258444802' data: - directory_type: "SCIM" + directory_type: 'SCIM' enabled: true - id: "dir_55135622825771522" - organization_id: "org_55135410258444802" - provider: "OKTA" - updated_at: "2025-01-15T08:55:22.792993454Z" - display_name: "Directory Enabled" + id: 'dir_55135622825771522' + organization_id: 'org_55135410258444802' + provider: 'OKTA' + updated_at: '2025-01-15T08:55:22.792993454Z' + display_name: 'Directory Enabled' responses: '200': description: Webhook received successfully @@ -11441,21 +11441,21 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_53891640779079756" - type: "organization.directory_disabled" - object: "Directory" - occurred_at: "2025-01-06T18:45:21.057814Z" - environment_id: "env_53814739859406915" - organization_id: "org_53879494091473415" + spec_version: '1' + id: 'evt_53891640779079756' + type: 'organization.directory_disabled' + object: 'Directory' + occurred_at: '2025-01-06T18:45:21.057814Z' + environment_id: 'env_53814739859406915' + organization_id: 'org_53879494091473415' data: - directory_type: "SCIM" + directory_type: 'SCIM' enabled: false - id: "dir_53879621145330183" - organization_id: "org_53879494091473415" - provider: "OKTA" - updated_at: "2025-01-06T18:45:21.04978184Z" - display_name: "Directory Disabled" + id: 'dir_53879621145330183' + organization_id: 'org_53879494091473415' + provider: 'OKTA' + updated_at: '2025-01-06T18:45:21.04978184Z' + display_name: 'Directory Disabled' responses: '200': description: Webhook received successfully @@ -11471,45 +11471,45 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_53891546994442316" - type: "organization.directory.user_created" - object: "DirectoryUser" - occurred_at: "2025-01-06T18:44:25.153954Z" - environment_id: "env_53814739859406915" - organization_id: "org_53879494091473415" + spec_version: '1' + id: 'evt_53891546994442316' + type: 'organization.directory.user_created' + object: 'DirectoryUser' + occurred_at: '2025-01-06T18:44:25.153954Z' + environment_id: 'env_53814739859406915' + organization_id: 'org_53879494091473415' data: active: true - cost_center: "QAUZJUHSTYCN" + cost_center: 'QAUZJUHSTYCN' custom_attributes: - mobile_phone_number: "1-579-4072" - department: "HNXJPGISMIFN" - division: "MJFUEYJOKICN" - dp_id: "" - email: "flavio@runolfsdottir.co.duk" - employee_id: "AWNEDTILGaIZN" - family_name: "Jaquelin" - given_name: "Dayton" + mobile_phone_number: '1-579-4072' + department: 'HNXJPGISMIFN' + division: 'MJFUEYJOKICN' + dp_id: '' + email: 'flavio@runolfsdottir.co.duk' + employee_id: 'AWNEDTILGaIZN' + family_name: 'Jaquelin' + given_name: 'Dayton' groups: - - id: "dirgroup_12312312312312" - name: "Group Name" - id: "diruser_53891546960887884" - language: "se" - locale: "LLWLEWESPLDC" - name: "QDRGUZZDYMFU" - nickname: "DTUODYKGFPPC" - organization: "AUIITQVUQGVH" - organization_id: "org_53879494091473415" - phone_number: "1-579-4072" - preferred_username: "kuntala1233a" - profile: "YMIUQUHKGVAX" + - id: 'dirgroup_12312312312312' + name: 'Group Name' + id: 'diruser_53891546960887884' + language: 'se' + locale: 'LLWLEWESPLDC' + name: 'QDRGUZZDYMFU' + nickname: 'DTUODYKGFPPC' + organization: 'AUIITQVUQGVH' + organization_id: 'org_53879494091473415' + phone_number: '1-579-4072' + preferred_username: 'kuntala1233a' + profile: 'YMIUQUHKGVAX' raw_attributes: {} - title: "FKQBHCWJXZSC" - user_type: "RBQFJSQEFAEH" - zoneinfo: "America/Araguaina" + title: 'FKQBHCWJXZSC' + user_type: 'RBQFJSQEFAEH' + zoneinfo: 'America/Araguaina' roles: - - role_name: "billing_admin" - display_name: "Directory User Created" + - role_name: 'billing_admin' + display_name: 'Directory User Created' responses: '200': description: Webhook received successfully @@ -11524,40 +11524,40 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_53891546994442317" - type: "organization.directory.user_updated" - object: "DirectoryUser" - occurred_at: "2025-01-06T18:44:25.153954Z" - environment_id: "env_53814739859406915" - organization_id: "org_53879494091473415" + spec_version: '1' + id: 'evt_53891546994442317' + type: 'organization.directory.user_updated' + object: 'DirectoryUser' + occurred_at: '2025-01-06T18:44:25.153954Z' + environment_id: 'env_53814739859406915' + organization_id: 'org_53879494091473415' data: - id: "diruser_12312312312312" - organization_id: "org_53879494091473415" - dp_id: "" - preferred_username: "" - email: "john.doe@example.com" + id: 'diruser_12312312312312' + organization_id: 'org_53879494091473415' + dp_id: '' + preferred_username: '' + email: 'john.doe@example.com' active: true - name: "John Doe" + name: 'John Doe' roles: - - role_name: "billing_admin" + - role_name: 'billing_admin' groups: - - id: "dirgroup_12312312312312" - name: "Group Name" - given_name: "John" - family_name: "Doe" - nickname: "Jhonny boy" - picture: "https://image.com/profile.jpg" - phone_number: "1234567892" + - id: 'dirgroup_12312312312312' + name: 'Group Name' + given_name: 'John' + family_name: 'Doe' + nickname: 'Jhonny boy' + picture: 'https://image.com/profile.jpg' + phone_number: '1234567892' address: - postal_code: "64112" - state: "Missouri" - formatted: "123, Oxford Lane, Kansas City, Missouri, 64112" + postal_code: '64112' + state: 'Missouri' + formatted: '123, Oxford Lane, Kansas City, Missouri, 64112' custom_attributes: - attribute1: "value1" - attribute2: "value2" + attribute1: 'value1' + attribute2: 'value2' raw_attributes: {} - display_name: "Directory User Updated" + display_name: 'Directory User Updated' responses: '200': description: Webhook received successfully @@ -11572,19 +11572,19 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_53891546994442318" - type: "organization.directory.user_deleted" - object: "DirectoryUser" - occurred_at: "2025-01-06T18:44:25.153954Z" - environment_id: "env_53814739859406915" - organization_id: "org_53879494091473415" + spec_version: '1' + id: 'evt_53891546994442318' + type: 'organization.directory.user_deleted' + object: 'DirectoryUser' + occurred_at: '2025-01-06T18:44:25.153954Z' + environment_id: 'env_53814739859406915' + organization_id: 'org_53879494091473415' data: - id: "diruser_12312312312312" - organization_id: "org_12312312312312" - dp_id: "" - email: "john.doe@example.com" - display_name: "Directory User Deleted" + id: 'diruser_12312312312312' + organization_id: 'org_12312312312312' + dp_id: '' + email: 'john.doe@example.com' + display_name: 'Directory User Deleted' responses: '200': description: Webhook received successfully @@ -11600,21 +11600,21 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_38862741515010639" - type: "organization.directory.group_created" - object: "DirectoryGroup" - occurred_at: "2024-09-25T02:26:39.036398577Z" - environment_id: "env_32080745237316098" - organization_id: "org_38609339635728478" + spec_version: '1' + id: 'evt_38862741515010639' + type: 'organization.directory.group_created' + object: 'DirectoryGroup' + occurred_at: '2024-09-25T02:26:39.036398577Z' + environment_id: 'env_32080745237316098' + organization_id: 'org_38609339635728478' data: - directory_id: "dir_38610496391217780" - display_name: "Avengers" + directory_id: 'dir_38610496391217780' + display_name: 'Avengers' external_id: - id: "dirgroup_38862741498233423" - organization_id: "org_38609339635728478" + id: 'dirgroup_38862741498233423' + organization_id: 'org_38609339635728478' raw_attributes: {} - display_name: "Directory Group Created" + display_name: 'Directory Group Created' responses: '200': description: Webhook received successfully @@ -11629,21 +11629,21 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_38864948910162368" - type: "organization.directory.group_updated" - object: "DirectoryGroup" - occurred_at: "2024-09-25T02:48:34.745030921Z" - environment_id: "env_32080745237316098" - organization_id: "org_38609339635728478" + spec_version: '1' + id: 'evt_38864948910162368' + type: 'organization.directory.group_updated' + object: 'DirectoryGroup' + occurred_at: '2024-09-25T02:48:34.745030921Z' + environment_id: 'env_32080745237316098' + organization_id: 'org_38609339635728478' data: - directory_id: "dir_38610496391217780" - display_name: "Avengers" - external_id: "" - id: "dirgroup_38862741498233423" - organization_id: "org_38609339635728478" + directory_id: 'dir_38610496391217780' + display_name: 'Avengers' + external_id: '' + id: 'dirgroup_38862741498233423' + organization_id: 'org_38609339635728478' raw_attributes: {} - display_name: "Directory Group Updated" + display_name: 'Directory Group Updated' responses: '200': description: Webhook received successfully @@ -11658,21 +11658,21 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_40650399597723966" - type: "organization.directory.group_deleted" - object: "DirectoryGroup" - occurred_at: "2024-10-07T10:25:26.289331747Z" - environment_id: "env_12205603854221623" - organization_id: "org_39802449573184223" + spec_version: '1' + id: 'evt_40650399597723966' + type: 'organization.directory.group_deleted' + object: 'DirectoryGroup' + occurred_at: '2024-10-07T10:25:26.289331747Z' + environment_id: 'env_12205603854221623' + organization_id: 'org_39802449573184223' data: - directory_id: "dir_39802485862301855" - display_name: "Admins" - dp_id: "7c66a173-79c6-4270-ac78-8f35a8121e0a" - id: "dirgroup_40072007005503806" - organization_id: "org_39802449573184223" + directory_id: 'dir_39802485862301855' + display_name: 'Admins' + dp_id: '7c66a173-79c6-4270-ac78-8f35a8121e0a' + id: 'dirgroup_40072007005503806' + organization_id: 'org_39802449573184223' raw_attributes: {} - display_name: "Directory Group Deleted" + display_name: 'Directory Group Deleted' responses: '200': description: Webhook received successfully @@ -11681,7 +11681,7 @@ webhooks: organization.sso_created: post: summary: SSO Connection Created - description: Triggered when a new SSO connection is created for an + description: Triggered when a new SSO connection is created for an organization requestBody: content: @@ -11689,19 +11689,19 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_94567862441607493" - type: "organization.sso_created" - object: "Connection" - environment_id: "env_74418471961625391" - occurred_at: "2025-10-14T09:27:18.488720586Z" - organization_id: "org_83544995172188677" + spec_version: '1' + id: 'evt_94567862441607493' + type: 'organization.sso_created' + object: 'Connection' + environment_id: 'env_74418471961625391' + occurred_at: '2025-10-14T09:27:18.488720586Z' + organization_id: 'org_83544995172188677' data: - id: "conn_94567862424830277" - organization_id: "org_83544995172188677" - connection_type: "OIDC" - provider: "OKTA" - display_name: "SSO Connection Created" + id: 'conn_94567862424830277' + organization_id: 'org_83544995172188677' + connection_type: 'OIDC' + provider: 'OKTA' + display_name: 'SSO Connection Created' responses: '200': description: Webhook received successfully @@ -11709,7 +11709,7 @@ webhooks: organization.sso_enabled: post: summary: SSO Connection Enabled - description: Triggered when an SSO connection is enabled for an + description: Triggered when an SSO connection is enabled for an organization requestBody: content: @@ -11717,21 +11717,21 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_94568078213382471" - type: "organization.sso_enabled" - object: "Connection" - environment_id: "env_74418471961625391" - occurred_at: "2025-10-14T09:29:27.098914861Z" - organization_id: "org_83544995172188677" + spec_version: '1' + id: 'evt_94568078213382471' + type: 'organization.sso_enabled' + object: 'Connection' + environment_id: 'env_74418471961625391' + occurred_at: '2025-10-14T09:29:27.098914861Z' + organization_id: 'org_83544995172188677' data: - id: "conn_94567862424830277" - organization_id: "org_83544995172188677" - connection_type: "OIDC" - provider: "OKTA" + id: 'conn_94567862424830277' + organization_id: 'org_83544995172188677' + connection_type: 'OIDC' + provider: 'OKTA' enabled: true - status: "COMPLETED" - display_name: "SSO Connection Enabled" + status: 'COMPLETED' + display_name: 'SSO Connection Enabled' responses: '200': description: Webhook received successfully @@ -11739,7 +11739,7 @@ webhooks: organization.sso_disabled: post: summary: SSO Connection Disabled - description: Triggered when an SSO connection is disabled for an + description: Triggered when an SSO connection is disabled for an organization requestBody: content: @@ -11747,21 +11747,21 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_94557976165089560" - type: "organization.sso_disabled" - object: "Connection" - environment_id: "env_74418471961625391" - occurred_at: "2025-10-14T07:49:05.809554456Z" - organization_id: "org_83544995172188677" + spec_version: '1' + id: 'evt_94557976165089560' + type: 'organization.sso_disabled' + object: 'Connection' + environment_id: 'env_74418471961625391' + occurred_at: '2025-10-14T07:49:05.809554456Z' + organization_id: 'org_83544995172188677' data: - id: "conn_83545002856153607" - organization_id: "org_83544995172188677" - connection_type: "OIDC" - provider: "OKTA" + id: 'conn_83545002856153607' + organization_id: 'org_83544995172188677' + connection_type: 'OIDC' + provider: 'OKTA' enabled: false - status: "COMPLETED" - display_name: "SSO Connection Disabled" + status: 'COMPLETED' + display_name: 'SSO Connection Disabled' responses: '200': description: Webhook received successfully @@ -11769,7 +11769,7 @@ webhooks: organization.sso_deleted: post: summary: SSO Connection Deleted - description: Triggered when an SSO connection is deleted for an + description: Triggered when an SSO connection is deleted for an organization requestBody: content: @@ -11777,19 +11777,19 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_94557997639926040" - type: "organization.sso_deleted" - object: "Connection" - environment_id: "env_74418471961625391" - occurred_at: "2025-10-14T07:49:18.604546332Z" - organization_id: "org_83544995172188677" + spec_version: '1' + id: 'evt_94557997639926040' + type: 'organization.sso_deleted' + object: 'Connection' + environment_id: 'env_74418471961625391' + occurred_at: '2025-10-14T07:49:18.604546332Z' + organization_id: 'org_83544995172188677' data: - id: "conn_83545002856153607" - organization_id: "org_83544995172188677" - connection_type: "OIDC" - provider: "OKTA" - display_name: "SSO Connection Deleted" + id: 'conn_83545002856153607' + organization_id: 'org_83544995172188677' + connection_type: 'OIDC' + provider: 'OKTA' + display_name: 'SSO Connection Deleted' responses: '200': description: Webhook received successfully @@ -11805,19 +11805,19 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_1234567890" - type: "role.created" - object: "Role" - occurred_at: "2024-01-15T10:30:00.123456789Z" - environment_id: "env_1234567890" + spec_version: '1' + id: 'evt_1234567890' + type: 'role.created' + object: 'Role' + occurred_at: '2024-01-15T10:30:00.123456789Z' + environment_id: 'env_1234567890' data: - description: "Viewer role with read-only access" - display_name: "Viewer" - extends: "member" - id: "role_1234567890" - name: "viewer" - display_name: "Role Created" + description: 'Viewer role with read-only access' + display_name: 'Viewer' + extends: 'member' + id: 'role_1234567890' + name: 'viewer' + display_name: 'Role Created' responses: '200': description: Webhook received successfully @@ -11832,19 +11832,19 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_2345678901" - type: "role.updated" - object: "Role" - occurred_at: "2024-01-15T10:35:00.123456789Z" - environment_id: "env_1234567890" + spec_version: '1' + id: 'evt_2345678901' + type: 'role.updated' + object: 'Role' + occurred_at: '2024-01-15T10:35:00.123456789Z' + environment_id: 'env_1234567890' data: - description: "Updated viewer role with limited permissions" - display_name: "Viewer" - extends: "member" - id: "role_1234567890" - name: "viewer" - display_name: "Role Updated" + description: 'Updated viewer role with limited permissions' + display_name: 'Viewer' + extends: 'member' + id: 'role_1234567890' + name: 'viewer' + display_name: 'Role Updated' responses: '200': description: Webhook received successfully @@ -11859,19 +11859,19 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_3456789012" - type: "role.deleted" - object: "Role" - occurred_at: "2024-01-15T10:40:00.123456789Z" - environment_id: "env_1234567890" + spec_version: '1' + id: 'evt_3456789012' + type: 'role.deleted' + object: 'Role' + occurred_at: '2024-01-15T10:40:00.123456789Z' + environment_id: 'env_1234567890' data: - description: "Updated viewer role with limited permissions" - display_name: "Viewer" - extends: "member" - id: "role_1234567890" - name: "viewer" - display_name: "Role Deleted" + description: 'Updated viewer role with limited permissions' + display_name: 'Viewer' + extends: 'member' + id: 'role_1234567890' + name: 'viewer' + display_name: 'Role Deleted' responses: '200': description: Webhook received successfully @@ -11887,17 +11887,17 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_1234567890" - type: "permission.created" - object: "Permission" - occurred_at: "2024-01-15T10:30:00.123456789Z" - environment_id: "env_1234567890" + spec_version: '1' + id: 'evt_1234567890' + type: 'permission.created' + object: 'Permission' + occurred_at: '2024-01-15T10:30:00.123456789Z' + environment_id: 'env_1234567890' data: - description: "Permission to manage data" - id: "perm_1234567890" - name: "data:manage" - display_name: "Permission Created" + description: 'Permission to manage data' + id: 'perm_1234567890' + name: 'data:manage' + display_name: 'Permission Created' responses: '200': description: Webhook received successfully @@ -11912,17 +11912,17 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_2345678901" - type: "permission.updated" - object: "Permission" - occurred_at: "2024-01-15T10:35:00.123456789Z" - environment_id: "env_1234567890" + spec_version: '1' + id: 'evt_2345678901' + type: 'permission.updated' + object: 'Permission' + occurred_at: '2024-01-15T10:35:00.123456789Z' + environment_id: 'env_1234567890' data: - description: "Updated permission to manage all data" - id: "perm_1234567890" - name: "data:manage" - display_name: "Permission Updated" + description: 'Updated permission to manage all data' + id: 'perm_1234567890' + name: 'data:manage' + display_name: 'Permission Updated' responses: '200': description: Webhook received successfully @@ -11937,17 +11937,17 @@ webhooks: schema: $ref: '#/components/schemas/ScalekitEvent' example: - spec_version: "1" - id: "evt_3456789012" - type: "permission.deleted" - object: "Permission" - occurred_at: "2024-01-15T10:40:00.123456789Z" - environment_id: "env_1234567890" + spec_version: '1' + id: 'evt_3456789012' + type: 'permission.deleted' + object: 'Permission' + occurred_at: '2024-01-15T10:40:00.123456789Z' + environment_id: 'env_1234567890' data: - description: "Updated permission to manage all data" - id: "perm_1234567890" - name: "data:manage" - display_name: "Permission Deleted" + description: 'Updated permission to manage all data' + id: 'perm_1234567890' + name: 'data:manage' + display_name: 'Permission Deleted' responses: '200': description: Webhook received successfully diff --git a/src/components/SecondaryNav.astro b/src/components/SecondaryNav.astro index f12b683f..00b6d954 100644 --- a/src/components/SecondaryNav.astro +++ b/src/components/SecondaryNav.astro @@ -377,6 +377,11 @@ const activeId = getActiveSecondaryNavId(Astro.url.pathname, entry) width: 20rem; } + /* Narrower dropdown for Developer Resources */ + [data-dropdown-id='scenarios'] .dropdown-content { + width: 20rem; + } + .dropdown-section-label { font-size: 0.8rem; font-weight: 600; diff --git a/src/components/code-samples/SandboxHomeWrapper.tsx b/src/components/code-samples/SandboxHomeWrapper.tsx new file mode 100644 index 00000000..55e74cd4 --- /dev/null +++ b/src/components/code-samples/SandboxHomeWrapper.tsx @@ -0,0 +1,92 @@ +import { useSampleAppSDK } from '../../hooks/useSampleAppSDK' + +interface SandboxHomeWrapperProps { + apiKey: string + orgid: string +} + +export default function SandboxHomeWrapper({ apiKey, orgid }: SandboxHomeWrapperProps) { + const { + component: SandboxHome, + isLoading, + error, + } = useSampleAppSDK({ + apiKey, + orgid, + component: 'SandboxHome', + validateApiKey: true, + logPrefix: '[SandboxHomeWrapper]', + }) + + if (error) { + return + } + + if (isLoading) { + return + } + + return ( +
+
+ +
+
+ ) +} + +function ErrorState({ error }: { error: string }) { + return ( +
+
Error: {error}
+
+ Check browser console for details +
+
+ ) +} + +function LoadingState({ message }: { message: string }) { + return ( +
+ {message} +
+ ) +} diff --git a/src/components/code-samples/SandboxWrapper.tsx b/src/components/code-samples/SandboxWrapper.tsx new file mode 100644 index 00000000..76ce37d3 --- /dev/null +++ b/src/components/code-samples/SandboxWrapper.tsx @@ -0,0 +1,93 @@ +import { useSampleAppSDK } from '../../hooks/useSampleAppSDK' + +interface SandboxWrapperProps { + apiKey: string + orgid: string + sandboxId: string +} + +export default function SandboxWrapper({ apiKey, orgid, sandboxId }: SandboxWrapperProps) { + const { + component: Sandbox, + isLoading, + error, + } = useSampleAppSDK({ + apiKey, + orgid, + component: 'Sandbox', + validateApiKey: false, + logPrefix: '[SandboxWrapper]', + }) + + if (error) { + return + } + + if (isLoading) { + return + } + + return ( +
+
+ +
+
+ ) +} + +function ErrorState({ error }: { error: string }) { + return ( +
+
Error: {error}
+
+ Check browser console for details +
+
+ ) +} + +function LoadingState({ message }: { message: string }) { + return ( +
+ {message} +
+ ) +} diff --git a/src/configs/secondary-nav.config.ts b/src/configs/secondary-nav.config.ts index 4a94e944..6be22918 100644 --- a/src/configs/secondary-nav.config.ts +++ b/src/configs/secondary-nav.config.ts @@ -14,6 +14,7 @@ import { IconLucideChevronDown as IconChevronDown, IconHugeiconsResourcesAdd, IconLucideBlocks, + IconLucideCode, } from '../utils/icon-map' import IconLucideRocket from '~icons/lucide/rocket' import IconLucideLogIn from '~icons/lucide/log-in' @@ -140,9 +141,25 @@ export const secondaryNavItems: NavItem[] = [ }, { id: 'scenarios', // Maps to sidebarToSecondaryNav['dev-kit'] - href: '/dev-kit/code-samples/', + href: '#developer-resources', label: 'Developer Resources', iconComponent: IconHugeiconsResourcesAdd, + children: [ + { + id: 'developer-resources', + href: '/dev-kit/code-samples/', + label: 'Developer Resources', + iconComponent: IconHugeiconsResourcesAdd, + description: 'Browse developer resources and guides', + }, + { + id: 'code-samples', + href: '/code-samples', + label: 'Code samples', + iconComponent: IconLucideCode, + description: 'Interactive code samples and sandboxes', + }, + ], }, { id: 'api-reference', diff --git a/src/configs/sidebar.config.ts b/src/configs/sidebar.config.ts index e50a58bc..895d6271 100644 --- a/src/configs/sidebar.config.ts +++ b/src/configs/sidebar.config.ts @@ -208,6 +208,7 @@ export const sidebar = [ label: 'Code samples', items: [ { label: 'Overview', link: 'dev-kit/code-samples' }, + { label: 'Interactive sandbox', link: '/code-samples/' }, 'dev-kit/code-samples/mcp-auth', 'dev-kit/code-samples/agent-auth', 'dev-kit/code-samples/modular-sso', diff --git a/src/content/docs/dev-kit/code-samples/code-samples.mdx b/src/content/docs/dev-kit/code-samples/code-samples.mdx index 1e045160..006ad321 100644 --- a/src/content/docs/dev-kit/code-samples/code-samples.mdx +++ b/src/content/docs/dev-kit/code-samples/code-samples.mdx @@ -67,3 +67,12 @@ import FoldCard from '@components/ui/FoldCard.astro' > Complete authentication implementations across different frameworks including Next.js, Express.js, Spring Boot, FastAPI, and Go + + + Explore and interact with live code samples in an interactive sandbox environment + diff --git a/src/hooks/useSampleAppSDK.ts b/src/hooks/useSampleAppSDK.ts new file mode 100644 index 00000000..814dc635 --- /dev/null +++ b/src/hooks/useSampleAppSDK.ts @@ -0,0 +1,78 @@ +import { useEffect, useState } from 'react' + +type SampleAppComponent = 'Sandbox' | 'SandboxHome' + +interface UseSampleAppSDKResult { + component: any + isLoading: boolean + error: string | null +} + +interface UseSampleAppSDKOptions { + apiKey: string + orgid: string + component: SampleAppComponent + validateApiKey?: boolean + logPrefix?: string +} + +export function useSampleAppSDK({ + apiKey, + orgid, + component, + validateApiKey = false, + logPrefix = '[useSampleAppSDK]', +}: UseSampleAppSDKOptions): UseSampleAppSDKResult { + const [sdkComponent, setSdkComponent] = useState(null) + const [error, setError] = useState(null) + const [isLoading, setIsLoading] = useState(true) + + useEffect(() => { + console.log( + `${logPrefix} Mounting with apiKey:`, + apiKey ? 'present' : 'missing', + 'orgid:', + orgid || 'MISSING', + ) + + if (validateApiKey && !apiKey) { + setError('Missing required configuration: PUBLIC_SAMPLEAPP_API_KEY') + setIsLoading(false) + return + } + + import('@sampleapp.ai/sdk') + .then((module) => { + console.log(`${logPrefix} SDK loaded successfully, module:`, Object.keys(module)) + + let Component: any = null + + if (component === 'SandboxHome') { + // Try SandboxHome first (for future SDK versions), fall back to Sandbox + Component = + module.SandboxHome || + module.Sandbox || + module.default?.Sandbox || + module.default?.SandboxHome + } else { + Component = module.Sandbox + } + + if (Component) { + setSdkComponent(() => Component) + } else { + setError(`${component} component not found in SDK module`) + console.error(`${logPrefix} Component not found in module:`, module) + } + }) + .catch((err) => { + console.error(`${logPrefix} Failed to load SDK:`, err) + setError(`Failed to load SDK: ${err.message}`) + }) + .finally(() => { + setIsLoading(false) + }) + }, [apiKey, orgid, component, validateApiKey, logPrefix]) + + return { component: sdkComponent, isLoading, error } +} diff --git a/src/pages/code-samples/index.astro b/src/pages/code-samples/index.astro new file mode 100644 index 00000000..57193db3 --- /dev/null +++ b/src/pages/code-samples/index.astro @@ -0,0 +1,47 @@ +--- +// Import the `` component first to set up cascade layers +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro' +import SandboxHomeWrapper from '../../components/code-samples/SandboxHomeWrapper.tsx' + +// Get API key and orgid from environment variables +const apiKey = import.meta.env.PUBLIC_SAMPLEAPP_API_KEY || '' +const orgid = import.meta.env.PUBLIC_SAMPLEAPP_ORGID || 'scalekit' + +// Page metadata +const template = 'splash' as const +const frontmatter = { + title: 'Code Samples', + description: 'Interactive code samples and sandboxes', + template, + editUrl: false as const, + head: [ + { + tag: 'style' as const, + content: ` + footer { + display: none !important; + } + .full-page-app { + width: 100%; + max-width: 100%; + margin: 0; + padding: 0; + position: sticky; + top: var(--sl-nav-height); + height: calc(100vh - var(--sl-nav-height)); + overflow: auto; + } + `, + }, + ], +} +--- + +
+ +
+ + + +
+
diff --git a/src/pages/code-samples/samples/[sandboxId].astro b/src/pages/code-samples/samples/[sandboxId].astro new file mode 100644 index 00000000..4e134650 --- /dev/null +++ b/src/pages/code-samples/samples/[sandboxId].astro @@ -0,0 +1,63 @@ +--- +// Import the `` component first to set up cascade layers +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro' +import SandboxWrapper from '../../../components/code-samples/SandboxWrapper.tsx' + +// This route needs to be server-rendered because sandboxId is dynamic +export const prerender = false + +interface Props { + sandboxId: string +} + +const { sandboxId } = Astro.params + +// Get API key and orgid from environment variables +const apiKey = import.meta.env.PUBLIC_SAMPLEAPP_API_KEY || '' +const orgid = import.meta.env.PUBLIC_SAMPLEAPP_ORGID || 'scalekit' + +// Page metadata +const template = 'splash' as const +const frontmatter = { + title: `Code Sample: ${sandboxId}`, + description: `Interactive code sample for ${sandboxId}`, + template, + editUrl: false as const, + head: [ + { + tag: 'style' as const, + content: ` + footer { + display: none !important; + } + .full-page-app { + width: 100%; + max-width: 100%; + margin: 0; + padding: 0; + position: sticky; + top: var(--sl-nav-height); + height: calc(100vh - var(--sl-nav-height)); + overflow: auto; + } + `, + }, + ], +} +--- + +
+ +
+ + diff --git a/src/pages/og/[...slug].ts b/src/pages/og/[...slug].ts index 0f34cf2c..4131853e 100644 --- a/src/pages/og/[...slug].ts +++ b/src/pages/og/[...slug].ts @@ -8,8 +8,21 @@ import { OGImageRoute } from 'astro-og-canvas' // Fetch all entries from the `docs` content collection const entries = await getCollection('docs') +// Filter out entries that don't have valid data (like the 404 page which is handled by Starlight) +const validEntries = entries.filter((entry) => { + // Skip entries without required frontmatter + if (!entry.data?.title || !entry.data?.description) { + return false + } + // Skip the 404 page as it's handled by Starlight's built-in 404 route + if (entry.id === '404') { + return false + } + return true +}) + // Map entries to an object keyed by id for quick lookup -const pages = Object.fromEntries(entries.map(({ id, data }) => [id, { data }])) +const pages = Object.fromEntries(validEntries.map(({ id, data }) => [id, { data }])) // Export the `GET` handler and static paths generator expected by Astro export const { getStaticPaths, GET } = await OGImageRoute({ diff --git a/src/pages/sandbox/[...slug].astro b/src/pages/sandbox/[...slug].astro new file mode 100644 index 00000000..3c32b98a --- /dev/null +++ b/src/pages/sandbox/[...slug].astro @@ -0,0 +1,9 @@ +--- +// Redirect /sandbox/* to /code-samples/samples/* +export const prerender = false + +const { slug } = Astro.params +const redirectUrl = `/code-samples/samples/${slug || ''}` + +return Astro.redirect(redirectUrl, 301) +--- diff --git a/src/styles/sandbox.css b/src/styles/sandbox.css new file mode 100644 index 00000000..9a9801f6 --- /dev/null +++ b/src/styles/sandbox.css @@ -0,0 +1,318 @@ +/* Sandbox Pages Styles - Clean Full-Screen Implementation */ + +/* Hide sidebar only on sandbox home page, not on individual pages */ +.sandbox-home-container ~ * right-sidebar-panel, +body:has(.sandbox-home-container) right-sidebar-panel { + display: none !important; +} + +/* Hide hero section on sandbox pages */ +body:has(.sandbox-page-container) .hero, +body:has(.sandbox-page-container) header.hero, +body:has(.sandbox-page-container) .sl-page header, +body:has(.sandbox-home-container) .hero, +body:has(.sandbox-home-container) header.hero { + display: none !important; + visibility: hidden !important; + height: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +/* Hide footer */ +footer.sl-flex, +footer { + display: none !important; +} + +/* Hide meta information */ +.meta.sl-flex { + display: none !important; +} + +/* Remove all padding and margins from main content area */ +main { + padding: 0 !important; + margin: 0 !important; + overflow-x: hidden; +} + +.content-panel { + padding: 0 !important; + margin: 0 !important; + max-width: 100% !important; +} + +.sl-page { + padding: 0 !important; + margin: 0 !important; +} + +.sl-page > div, +.sl-page-content, +.sl-page main { + padding: 0 !important; + margin: 0 !important; +} + +.sl-page > article, +.sl-page article { + padding: 0 !important; + margin: 0 !important; +} + +/* Hide page title and headers */ +.page-title, +h1[class*='title'][id='_top'], +.sl-page-title, +header.hero h1, +.content-panel > h1:first-child, +[data-page-type='doc'] > main > div > h1:first-child, +.sl-markdown-content > h1:first-child { + display: none !important; + visibility: hidden !important; + opacity: 0 !important; + height: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +/* Full-page app container - sits below secondary nav, scrolls internally */ +.full-page-app { + width: 100%; + max-width: 100%; + margin: 0; + padding: 0; + position: sticky; + top: var(--sl-nav-height); + height: calc(100vh - var(--sl-nav-height)); + overflow: auto; +} + +/* Sandbox container - full width, no padding */ +.sandbox-home-container, +.sandbox-page-container { + width: 100vw; + max-width: 100vw; + margin: 0; + padding: 0; + min-height: calc(100vh - var(--sl-nav-height)); + position: relative; + overflow-x: hidden; +} + +/* Sandbox wrapper containers */ +.sandbox-wrapper-container { + width: 100% !important; + max-width: 100% !important; + margin: 0 !important; + padding: 0 !important; + display: block; + overflow: hidden; + box-sizing: border-box; +} + +.sandbox-container { + width: 100% !important; + max-width: 100% !important; + margin: 0 !important; + padding: 0 !important; + box-sizing: border-box; + overflow-x: hidden; +} + +/* Ensure SDK components fill width properly */ +.sandbox-container > *, +.sandbox-wrapper-container > * { + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box !important; +} + +/* Target SDK container classes */ +[class*='sandbox'], +[id*='sandbox'], +iframe[src*='sandbox'] { + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box !important; +} + +/* Remove any internal width constraints */ +.sandbox-container > div, +.sandbox-container > div > div, +.sandbox-wrapper-container > div, +.sandbox-wrapper-container > div > div { + width: 100% !important; + max-width: 100% !important; +} + +/* Ensure Starlight page wrapper doesn't add spacing */ +.sl-container { + max-width: 100% !important; + padding: 0 !important; + margin: 0 !important; +} + +.content-wrapper { + max-width: 100% !important; + padding: 0 !important; + margin: 0 !important; +} + +/* Remove any content width restrictions */ +:where([data-page-type='doc']) { + --sl-content-width: 100% !important; + max-width: 100% !important; +} + +main[class*='content-panel'] { + max-width: 100% !important; +} + +/* Ensure body doesn't add overflow */ +body { + overflow-x: hidden; +} + +/* For individual sandbox pages - full height within content area, sidebar visible */ +.sandbox-page-container { + width: 100%; + max-width: 100%; + margin: 0; + padding: 0; + min-height: calc(100vh - var(--sl-nav-height)); + overflow: hidden; +} + +.sandbox-page-container .sandbox-wrapper-container { + width: 100%; + height: 100%; + min-height: calc(100vh - var(--sl-nav-height)); + overflow: auto; + overflow-x: hidden; + display: flex; + flex-direction: column; +} + +.sandbox-page-container .sandbox-container { + width: 100%; + height: 100%; + flex: 1; + overflow: auto; + overflow-x: hidden; + display: flex; + flex-direction: column; +} + +/* Ensure SDK components fill the container */ +.sandbox-page-container .sandbox-container > * { + width: 100%; + height: 100%; + flex: 1; + display: flex; + flex-direction: column; +} + +/* Remove padding from content panel on sandbox pages */ +body:has(.sandbox-page-container) .content-panel { + padding: 0 !important; + margin: 0 !important; + max-width: 100% !important; +} + +/* Ensure content area fills available space with sidebar */ +body:has(.sandbox-page-container) .sl-page { + padding: 0 !important; + margin: 0 !important; +} + +body:has(.sandbox-page-container) .sl-page > article { + padding: 0 !important; + margin: 0 !important; +} + +/* Hide page title on individual sandbox pages */ +body:has(.sandbox-page-container) .sl-page-title, +body:has(.sandbox-page-container) h1[id='_top'], +body:has(.sandbox-page-container) .content-panel > h1:first-child, +body:has(.sandbox-page-container) .sl-markdown-content > h1:first-child { + display: none !important; + visibility: hidden !important; + height: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +/* Ensure sandbox container fills the content area */ +body:has(.sandbox-page-container) .sl-markdown-content { + padding: 0 !important; + margin: 0 !important; + height: 100%; +} + +/* For home page - allow normal scrolling but full width, start right after nav */ +.sandbox-home-container { + width: 100vw; + max-width: 100vw; + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); + padding: 0; + margin-top: 0; + margin-bottom: 0; + min-height: calc(100vh - var(--sl-nav-height)); +} + +/* Remove any spacing from Starlight markdown content */ +.sl-markdown-content { + padding: 0 !important; + margin: 0 !important; +} + +/* Ensure no background colors interfere */ +.sl-page, +.sl-page > div, +main { + background: transparent !important; +} + +/* Remove any border or outline */ +.sl-page, +.content-panel, +main { + border: none !important; + outline: none !important; +} + +/* Ensure proper z-index layering */ +.sandbox-page-container { + position: relative; + z-index: 0; +} + +/* Hide edit link if present */ +.edit-link, +a[href*='github.com'][href*='edit'] { + display: none !important; +} + +/* Remove any gap between nav and content */ +.sl-page-wrapper { + padding-top: 0 !important; + margin-top: 0 !important; +} + +/* Ensure StarlightPage content wrapper has no spacing */ +.sl-page > .sl-markdown-content, +.sl-page > div > .sl-markdown-content { + padding: 0 !important; + margin: 0 !important; +} + +/* Remove any container padding */ +.sl-container { + padding-left: 0 !important; + padding-right: 0 !important; + padding-top: 0 !important; + padding-bottom: 0 !important; +} diff --git a/tsconfig.json b/tsconfig.json index b95377cf..61eda0d8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], - "@components/*": ["./src/components/*"] + "@components/*": ["./src/components/*"], + "@styles/*": ["./src/styles/*"] } }